How to Choose a Web Development Framework
Choosing the right web development framework to build an application is one of the most challenging tasks as a CTO. It requires you to have a wide range of experience in managing application development. Many years of experience pay off here.
One of the key questions you have to ask yourself is how conventional your application is, because one of the key concepts that differentiates these frameworks is “convention over configuration” (CoC), which determines how opinionated the framework is. CoC frameworks assume certain ways of developing applications are better than the others. A good analogy might be the difference between Adobe Photoshop and Lightroom. The former is a Swiss Army knife of image editing. It can be used for graphic designers, photographers, or even scientists, whereas the latter is designed specifically for photographers and assumes that certain ways of processing photos are superior to the others. If you are building a blog, your project is obviously very conventional. Since there are millions of people with blogs, it makes sense to take advantage of what they have learned. There is no compelling reason to reinvent the wheel. If so, you would definitely want to choose a CoC framework like Ruby on Rails and CakePHP. A CoC framework will take care of the majority of the work for you; you would only have to manually code the unconventional parts. As a matter of fact, if your site will not have any unconventional parts (strictly a blog), you might as well use a blogging framework like WordPress.
But if your app is unconventional (imagine building a system for Uber), you would want to consider other frameworks like Symfony. (Symfony was originally designed as a CoC framework but, from 2.0, they moved in the opposite direction.) It is a highly flexible framework that does not make any assumptions about what you want to do or how you want to do them. It basically has no opinions of how you should solve your problems.
If you are an inexperienced developer who is not aware of the best practices, using an open-ended framework could spell disastrous because you would likely choose suboptimal or even wrong ways of implementing common features (because you would not know that there are better ways of doing the same things). But if you are an experienced developer who disagrees with the best practices, CoC frameworks could be annoying because they would impose certain ways of doing things that you might not like. For this reason, CoC is a good framework for beginners because they can learn how to do things correctly by using CoC frameworks.
CoC frameworks are also advantageous with respect to the cost of hiring developers. Because CoC enforces certain ways of doing things, you do not need to hire expensive senior developers. You can hire junior developers and you wouldn’t have to worry about them messing up your code or solving simple problems in convoluted ways.
Type of business should also be taken into account when making your choice. If you are an interactive agency who is building many applications for many different clients, you would be better off using a CoC framework because the majority of them would be conventional, and have a lot in common. You would want the CoC framework to automatically take care of the repetitive aspects for you.
But if you are a startup who is going to be working on the same app for years, you would be better off investing more time up front on “configuration” so that you would have more flexibility later (so that you wouldn’t be limited by the conventions that it imposes). However, if you are creating a prototype or MVP to be discarded shortly, you would be better off using a CoC framework since the up-front investment to gain flexibility later would be a waste in that case.
Arguably the most important factor in choosing a framework is sustainability. This is something most developers overlook. In fact, they are incentivized to ignore this factor. The demand for their services is greatly influenced by the particular frameworks they are familiar with, and the popularity of frameworks change frequently like fashion. Naturally, developers want to stay in demand, so they are constantly looking for opportunities to use the latest-greatest frameworks. If you are a business owner hiring a developer, his interest can conflict with yours because you would not want to be stuck with an application built on an obsolete framework.
I’ve spoken to many business owners who ended up in this situation. It is nearly impossible to find developers who are willing to work with obsolete frameworks, so you would likely need to rebuild the whole application from scratch. If your original developer was just a freelancer, he has no obligation to continue working on your website. Chances are, he is already busy working with a hot, new framework at some other firm. The fact that your application cannot be maintained is not his problem.
If your framework is using tried-and-true programming languages like PHP, it could keep running for a long time without much maintenance but if it’s using an obscure language like Scala, even changing a website host, for instance, could become a big challenge.
As a business owner, you should also look out for developers who avoid CoC frameworks just because they are associated with less experienced programmers. For instance, advanced coders are not likely to use WordPress even if that is the best choice for your business, purely for egotistical reasons. Don’t assume that what is best for developers’ careers is best for your business; they often conflict. This is something most developers would not tell clients about, and most clients do not think about it until the developers say goodbye.