We had an interesting presentation at the LA CTO Forum by the CTO of a startup who chose Groovy / Grails as the framework for their startup. t prompted a good discussion around how CTOs go about choosing the programming language and framework for their startup.
Some common themes from the discussion:
Know Where You Are Going
Before you can possibly make a choice around language and framework you need to ask all the important questions that are talked about in Startup Software Development – Do Your Homework Before You Develop Anything and Startup CTO or Developer.
Closely Aligned Functional Needs
The most common reason that a language and platform is chosen is because there's an existing set of (often open source) functionality that you can tap into that aligns closely with your functional needs. For example, you may have content management and community needs that closely align with Drupal. There are some cautions around these choices, but it is often the basis of a choice.
Similarly, you may also have an existing code base or set of libraries written in a language. This may push you in that direction.
Of course, if you are developing native mobile apps or building something on top of a particular code base or you need to integrate tightly with something, all of those factors may push you directly towards a particular language and framework. For example, you might choose Sencha if you are building apps that run natively on several platforms (e.g., desktop, mobile, browser).
In many cases, the choice comes more out of who's involved and existing code than based on what the "best choice" would be. Most of the time, there are people / stakeholders who have a particular skill set. Or you might have an investor (or founder) who's convinced that you need to work in a given language (some VCs love Ruby right now).
When I talk with founders and VCs there are often quite a few misconceptions around the choice of language and framework.
Misconception #1 - "You can build things 10x faster in Ruby."
With Ruby/Rails, Groovy/Grails and many other language/framework choices, some aspects of development are significantly faster. It's way easier to get your pages setup in these languages than by choosing Java alone. Of course, I'm not sure that anyone chooses Java alone. They start with lots of other things. Still there's no doubt that some aspects come quickly. But if you are building anything with significant functionality to it, then first, don't believe the 10x. You may get 3x improved speed for roughly 10-20% of the effort of building your site. The rest is just down and dirty algorithmic programming. It won't be significantly different in most languages. Bottom line, you really are not seeing that much different between Ruby/Rails and Groovy/Grails in terms of development speed.
Misconception #2 - "Ruby is the obvious choice."
Rails and Grails are both excellent frameworks with their current releases. You really can't go wrong with either. Here are some things I find interesting about them though:
- Rails (Ruby) does not scale as well as Grails (Groovy).
- Rails is slightly better with NoSQL alternatives currently, but Grails is catching up quickly
- Rails has more plugins.
- Rails is more mature and has more features at this point in time because it's been around longer
- Rails REST support is amazing
- There are many more "big" Rails websites than Grails
- Grails integrates with the JVM better than JRuby
In addition, I'm not quite sure why Ruby has become such a strong brand. There are LOTs of language and frameworks to choose from. If you don't believe me, take a look at some interesting data on what programming languages TIOBE Programming Community Index for June 2011 are in use and the current trends.
|Delta in Position||Programming Language||Ratings |
If you look at Ruby's numbers it shows decline which I'm not sure I believe, but I also don't buy into the hype that surrounds it either. It's a good language/framework, but it's not that savior that some believe.
I would also suggest that languages and frameworks have come and gone for many years. Right now happens to be one of the most innovative times I've personally seen with new languages, frameworks, etc. coming around pretty much non-stop. Not all of the newest languages are going to be winners. If you are planning to build something that will last, I would claim there's risk in choosing something that's the newest thing.
So what's the bottom line? This is a complex decision. Get get help (see Free Startup CTO Consulting Sessions). Get a few different perspectives. And when a VC asks if you are building it in Ruby - be prepared with a smart answer.