Software developers have quite a few choices when it comes to selecting a software development stack. Options include:
- Java with its various frameworks and commercial as well as open source application servers such as WebSphere, WebLogic, JBoss
- Microsoft .NET
- LAMP – Linux, Apache, MySQL, Perl/PHP/Python
In most cases software development stack is dictated by the existing enterprise standards, applications previously built and knowledge/skills of the software development team. Occasionally, when embarking on a major new software development initiative there is a freedom to select a stack. Startups in particular have a unique opportunity to make an optimal, unconstrained selection decision.
There are many criteria influencing software stack decision such as:
- Architectural qualities – e.g. scalability
- Cost – software and hardware for development, QA and production environments
- Availability of talent (and steepness of learning curve)
- Long term viability
- Available support
For a startup, productivity is a key factor. It facilitates short time to market, helps in keeping costs and cash burn low, enables high level of innovation and experimentation. Ruby on Rails (RoR) fits these needs very nicely. Rapid feedback loop (developer can try new code or changes immediately without a need to compile, build or package) assists in driving productivity and works very well with agile methodologies. As a result of built in assumptions and defaults (“Convention over Configuration” philosophy) simply fewer lines of code have to be written than with other technologies. High level of standardization shortens learning curve and makes it easier to pick up code and collaborate with other developers. It also does not hurt that developers love working with RoR. It makes it easier to attract and retain talented people.
I have been working with RoR for several years and it has proven to live up to its promise. With small teams, you can build and launch sophisticated, highly scalable online products in very short timeframes.