Today I’m attending beCamp at the offices of CBIC on the downtown mall in Charlottesville.  There have been some very interesting sessions already and attendance is great.  I suggested one session, which we just had this morning.  I titled the session “How to choose languages – .NET vs Ruby vs Java vs Php vs ?”.

At OpenSource Connections, we have a wide range of skillsets covering all the major languages, and we have the pleasure of working with a wide variety of clients where we get to use all those different skillsets.  It’s a lot of fun and something I really like about OpenSource.  Often times for our projects, the client’s needs specifically dictate a particular language, but other times they have no preference or are building a system from the ground up and we get to help choose the language.  I have my ideas of the various benefits and disadvantages of the languages, but I proposed this session to hear other people’s feedback as well.

We had a great group of about a dozen people in the session, with skill sets that covered c, c++, perl, .net, php, java, ruby on rails, cold fusion, and even Delphi.  This wide range of experience brought some interesting perspectives.

I started the conversation by stating that all development languages are just tools, and the important thing is what we build at the end.  The important thing is not necessarily did we build it in .NET or Ruby, but did we meet the customer’s needs?  I prefer to be technology agnostic, and most everyone in the session seemed to agree with that sentiment.

One of the first things said in the session was probably the most observant:  the choice of language is often presented to us as developers, and that decision is actually made by the business, not development.  I think David from the Darden Business school at UVa was the one who pointed that out first, and it’s certainly very true.  The group seemed to agree with that, but with some reservation that we wish we could have more control over the language used.

Mike from Fabjectory pointed out that in reality, the framework may be more important than the language chosen.  Ruby on Rails may be the best example of this, because it’s an easy to use framework that encourages you to do good development practices.  Microsoft has release the MVC framework to accomplish a similar goal. 

There was some discussion at the beginning when Caleb expressed a hope that there would be fewer different development languages in the future so that developers don’t have to try and keep up with so much, but others pointed out that competition and having many diverse languages is part of what encourages innovation and new features.  For example, Jim pointed out that Ruby on Rails is great for web development in part because it’s geared specifically towards that process, whereas ASP.NET has procedural carryovers in the language from the old classic ASP and VB days.  Likewise, Jim expressed the opinion that C# has become a better language than Java because it is more fresh and doesn’t have as many legacy features as Java.

Your final deployment server will also drive the choice of language naturally.  If you company will only run Windows servers, then you probably don’t want to try and run Ruby on Rails on top of SQL Server on a Windows server.  You should probably stick with .NET.  Likewise, if you are going with an Apache server, you should probably consider Ruby on Rails or PHP.

Who will maintain your application after it has been deployed?  If you are a consultant, than the skills of your client need to be considered.  How much do they want to modify it themselves, and what skill sets do they already have that will make this easier.  I suggested that because of the development tools and the fact that it’s a compiled language, I feel .NET is a much more scaleable and better language than PHP.  However, if a client wants to tweek small parts of the code themselves, then Php may be a better choice because it’s easier to modify and perhaps easier to understand to a non-developer but tech savvy person.  But with that ability to make changes easily also comes risk:  If the people making the changes don’t know the whole system as a whole or good development practices, then the easily “hackable” nature of PHP may actually get them in trouble.  A more object oriented structure in .NET that needs to be compiled may be more stable and less susceptible to mistakes.

Considering how to make modifications in the future is also important.  David from Darden expressed his opinion that when using Java web development frameworks, Struts is easier to make modifications to than Tapestry.

Towards the end of the session, we also briefly touched on a few other topics which I will quickly summarize people’s opinions here.  So here are more random thoughts from the session:

  •   .NET is the best option for building windows based desktop applications, but you should consider QT if you want a more cross platform compatible application.  Java Swing according to one anonymous attendee “still sucks 15 years later.”
  • One of the great things about Ruby on Rails is the built in testing and framework scaffolding.
  • Mono can be used to make .NET applications run on other OS’s.  Though there wasn’t much experience with actually doing that in the room, that is what some major companies are doing like MySpace.
  • Building webservices is very easy in .nET, REST based applications are also easy in Ruby.

We ended the session on a funny note, when Jim made the statement that a lot of very large companies still use C for development.  Though the people he is thinking of are older developers and so they may just be tied to older languages, they are still some of the brightest minds he’s known.  I believe it was pointed out that Amazon’s services are built with C.  So we’ve come full circle through C to .NET, Java, and Ruby, and perhaps ultimately back to C!  (just to be clear, I state that with sarcasm.  Although you can undoubtedly do all kinds of things with C, the value of all these newer languages and frameworks is how much easier they make it).

Thanks to all those who attended for a great discussion (completely devoid of any fist fights about which language is best), and I’m looking forward to the rest of beCamp this afternoon!

You can see a slideshow of my pics from beCamp 2008 here