News on Monday
more>>
SharePoint Tech Report
more>>


   

 
 
Download Current Issue
ISSUE 3/15/2010 PDF

Need Back Issues?
DOWNLOAD HERE

Receive the print Edition?


 
blogs tab
Google Code turns 5
Google Code Turns 5, and adds a Paxos Algorithm to make the system more stable and reliable.
03/17/2010 11:16 AM EST

Test your Visual Studio 2010 know-how
Microsoft is offering free beta certification exams for Visual Studio 2010.
03/17/2010 11:08 AM EST

Microsoft lifts the hood on IE9
Microsoft is previewing IE9.
03/16/2010 01:10 PM EST

 

Events calendar tab
3/22/2010 to 3/25/2010
Santa Clara, Calif.
The Eclipse Foundation

4/12/2010 to 4/14/2010
Las Vegas
Penton Media

4/12/2010 to 4/15/2010
Santa Clara, Calif.
O'Reilly Media

4/19/2010
New York City
Flagg Management

4/25/2010 to 4/28/2010
Overland Park, Kans.
IIUG


 
Most Read Latest News Blog Resources

Windows & .NET Watch: These divergent programming times




February 1, 2010 — 
You can’t teach height. This piece of wisdom, attributed to legendary Celtics basketball coach Red Auerbach, has long been my guiding principle in the hiring of software developers. I’ve always tried to minimize the “required technologies” list that HR asks for and, if anything, have looked skeptically at candidates who qualify themselves as a developer in language “X.” I’m beginning to reconsider.

It’s not that mainstream programming languages have dramatically changed. Sure, dynamic languages have shaken things up, but object-orientation is still the dominant paradigm, and if you’re going to discuss the large-scale structure of an application, the odds are excellent that you’ll be speaking of classes and packages and objects.

You’ll also likely have a lot of discussion of libraries and support tools. It’s these that have dramatically changed and diverged in just the past few years. For one thing, the industry has embraced the idea of “opinionated” frameworks, such as Ruby on Rails or ASP.NET MVC, that produce large amounts of scaffolding. Although the scaffolding is often replaced over time, such frameworks create a starting point for development that is far from a blank page. If you are not familiar with that starting point, you’ll be fighting against the tide.

Another area where there has been remarkable divergence is in persistence. The acceptance of a large SQL database as the be-all and end-all of storage has dissolved. Developers of consumer-facing websites are rapidly realizing that they primarily deal with static or near-static data, and that the benefits of normalization (ad hoc querying, single point of update, storage optimization) are often outweighed by the costs (database connection bottlenecks, object-relational impedance mismatches, caching challenges).

While it’s fair to say that there are some general trends towards schema-less databases and caching infrastructures, each platform varies greatly, and a wrong assumption can lead to a nasty dead end (“Can we use LINQ with MongoDB?” Beats me, and I’d hate to guess wrong).

Similarly, the user interface of Web applications is rarely decoupled from the server-side implementation. AJAX, for better or worse, means chatty interfaces between the page (or is it a block with a Flash or Silverlight canvas?) and all that static data on the server.

So essentially, the common ground in all three tiers has melted away, leaving the generalist programmer on an increasingly untenable ice floe. Specialization is more common and more reasonable than ever in job descriptions. This is dismaying for several reasons.

For one, the old advice that a knowledge of C++ makes one universally portable across programming opportunities is no longer valid. (As I mentioned in a previous column, a knowledge of JavaScript has become a necessary, but not sufficient, skill for a development career.)

Even more upsetting is that cross-pollination between platforms—always a challenge—is becoming even more unlikely. The Model-View-ViewModel pattern commonly used in CLR applications seems to have little traction outside of the .NET space, and Microsoft developers are unlikely to appreciate, say, how easy package management ought to be.

To be sure, a sufficiently powerful idea can break across platforms. The “opinionated” Rails framework is a clear recent example of an idea whose time had come and has since been widely adopted. Everyone truly interested in the problem of concurrency is casting a wide net in hope of discovering the best path forward. But it’s become harder and harder for the workaday developer, or even those of us fortunate enough to be charged with monitoring the industry, to extract a signal from the noise of Twitter and blogs and conference streams.

I’m a skeptic and tend to believe that trends reverse themselves over time: faith in modeling versus faith in code, strongly structured languages versus more freeform ones, an emphasis on productivity versus an emphasis on quality (I think of this as the “muddle along” model). So I’m hopeful that this loss of generality may reverse and lead to a convergence of useful concepts drawn from the widest possible variety of experiences.

But I don’t see this happening anytime soon. Right now, I think the proper course is to place your bets and go deep in the platform of your choice.

Larry O'Brien is a technology consultant, analyst and writer. Read his blog at www.knowing.net.


Related Search Term(s): programming


Share this link: http://www.sdtimes.com/link/34102
 

Add comment


Name*
Email*  
Country     


  • Comment
  • Preview
Loading