Monday, June 22, 2009

Losing My Religion

Many programmers defend their languages religiously, and I've done the same for my language of choice, Java, at least for the sake of starting a fight. However, just today I started a new job as a .NET developer. I'm quickly overcoming the hurdles of switching language, libraries, platform, source control, issue management -- not to mention an enitrely new business space for me.

Its amazing how undifferent a language can be. I had always theorized as much, but now I'm experiencing it first hand without the safety and controls of a labratory experiment. The concept of source control is largely the same between Subversion and Vault. The language keywords are finite enough to be easily translatable between Java and C#. Many of the libraries from Java also exist in .NET (Spring.NET, NUnit, MemCache, etc.). The biggest difference so far has been the IDE -- Visual Studio 2008 vs. eclipse.

I'm finding many of the features I love in eclipse to be absent in Visual Studio 2008 (or, at least, undiscoverable to me as of yet). For example, what I affectionately call the "God Key" in eclipse (Ctrl+1) -- because it can do anything -- doesn't seem to have an equivalent in Visual Studio. On the other hand, because Microsoft controls so much of the stack things that were frustratingly difficult in eclipse are a breeze. For example, to run my project on a server, I simply click "Run" and its got a local test server all prepped for me. In eclipse, its a nightmare of getting various ports and Server Runtimes all configured correctly (the price of freedom, I suppose).

So far, its been easier than I thought to switch, but this switch has only just begun.

1 comment:

Unknown said...

I have for the longest time believed that choice of technology is often an academic concern and rarely impacts overall successful delivery of products to end-users/consumers. With some notable exception, Java's advantage is teh availability of the VM running on many platforms...but that does not necessarily tie you to the Java the programming language.

In addition, a often little publicized benefit of Java which I personally believe outweighs the cross-platform capabilities, is that the language, the specification for the VM, and the evolution of technologies are controlled by a large community of both developers and business who compete against each other. This often drives products that were traditionally proprietary in nature to become more commodity, keeping prices reasonable.

I have always advocated that as we mature in our technological evolution we tend to shed the biases for a particular technology (e.g. COBOL, Java, .NET, DHTML. php). The .NET platform is a viable solution if you and your customer base are built on Microsoft technology (and you don't want to call yourself a real programmer :) )

No in all honesty I think we find that regardless of the programming technology or application stack, the problems we face in development, and the solutions available are often the same. Remember the first real patterns book was written based on Smalltalk and C++, but the concepts still applied Java and similar programming languages.