May 6, 2012

Framework Lock-in

Over the past 10 years of development I have seen a trend, people flocking to a language over a framework. Sure the frameworks have been good, hell even re-defined our expectations in the language, whether it was Ruby on Rails 5 years ago, jQuery, or more recently Node.js

It is important to not get sucked into the framework hype, rather specialize in the language first and then learn the framework.

In 2007 I was tasked with picking up a project written in Rails, I had heard lots of hype about Rails and how revolutionary it was to the web development, REST was the new kid on the block and along MVC and other idioms it was gaining traction. Rather then jumping into a Rails book and digging though the code, I grabbed a copy of Ruby Pickaxe. By the time I was ready to start the project I had a much better understanding of Ruby and was able to relate to Rails and why they choose Ruby to solve those problems.

In the end, it took me a little longer to get my head around Rails, but I had a better working understanding of the language and best practices. I was also more confident in speaking against Rails when another project came up that wasn't a good fit, in this case Sinatra and Merb was better suited to the task.

People have had a love hate relationship with JavaScript for more then 15 years. It has been called everything from a toy language to a nuance glue layer between a real language and HTML. However frameworks like jQuery, Node.js, and CoffeeScript have made the programming in Javascript tolerable, and driven the popularity of the language up. As frameworks become more popular their design goals can change, and more importantly the way people use the framework, jQuery is ideal for adding some progressive enhancement to your webpage, however now people use it for everything, including full fledge web and mobile applications.

Node.js was designed to be fast and efficient and creating simple TCP, HTTP servers. Even I couldn't resist porting some of my favourite tools and libraries to Node.js pushing how far we can extend it's boundaries and refining the original design goals.

When you take the time to learn more about the core language you have a much deeper understanding and working knowledge that can be transferred to other parts of the language and into the frameworks. Resist the urge to follow the framework hype and specialize in the language before settling on a framework.

Written by Rob Ellis