Rick’s Picks for Best Web Application Frameworks for building MVPs in 2020
Warning! This list is based on very specific criteria and preferences. Your mileage may vary. First and foremost, I heavily weight the ability to deliver production-quality value quickly and easily. This is customer and user-centric thinking. I am not focused on purely technical aspects such as scalability, speed, performance, and cool factor. Those things generally have no bearing on whether or not a user will use your product or service. To drive this example home, consider a theoretical scenario. Imagine that you have been offered all the shares of a company of a startup company that has a web application product generating 10 million USD net revenue per year. Also, imagine that this web application was written in assembly or Perl CGI. Would you turn down this offer? Don't be silly! Of course, you wouldn't. That is why I am focused on value, not technical aesthetics.
Supported by Data
In addition to the focus on value over aesthetics, I am also trying to base my selection on real data. I will try to provide references to statistics and studies where I use them. I don't want to be "pulling numbers" out of my proverbial ass. I'm going to try to get them from respectable sources.
Selection Criteria
As stated before, I am looking for a framework that is able to consistently deliver production value products that succeed in the market. I am going to further break that down into objective and subjective criteria. For each of these criteria, I am going to try to apply that lens that is focused on consistently, and quickly, delivering production quality products to the market.
Objective Criteria
Must be fullstack framework
I realize that one can easily attempt to build the next startup using a microservices architecture. But I want to keep it simple and assume that most startups will start with a monolithic architecture and one framework to handle both backend and frontend. Most people generally add one or more frontend frameworks as well. I feel that is so common, that it's better just to focus on the fullstack framework and ignore purely frontend frameworks for now.
Number of startups selecting framework
The number of startups using a particular framework is also interesting because it means others have gone through this analysis and come to the decision to use a specific framework. I think it's a good indication as a vote of confidence. Here I will use statistics from a study by Crunchbase named "Most Popular Web Frameworks Among Seed and Early-Stage Startups".
From this list, I will remove Angular and ReactJS since they are not fullstack frameworks. The remaining list is as follows:
- Ruby on Rails
- ExpressJS
- Django
- ASP.NET
- Laravel
- Flask
- Meteor
- Spring
Successful startups built with the framework
I also want to filter the set of frameworks by selecting those that actually have examples of successful startups built on them. This will mean that these frameworks have reached a certain level of production quality and can achieve enough scale to succeed.
Ruby On Rails
Ruby on Rails is undoubtedly one of the most well known and respected frameworks out there with a long history of being used to produce successful startups. Examples include Twitter, Shopify, Github, Basecamp, Ask.fm, Groupon, Couchsurfing, Airbnb, SalesForce.
That's quite an impressive list. Ruby on Rails is at the head of the class when it comes to the sheer number of successful startups built using the framework. It's definitely been around a long time and is actually considered by some as an old and outdated language. I find that ridiculous considering its pedigree and track record.
Express.js
It was hard to find a list of 'successful startups built using express.js'. All the search results returned were more geared towards node.js. But since express is so prevalent in in the nodejs community, I assume that most startups listed as using Node.js, also use express.js. I found a list that lists companies that explicitly use Express.js on the Express.js site.
- IBM (not necessarily a startup)
- Uber
Node.js is a very performant and fast technology that achieves an amazing scale. I'm not sure how much Express.js slows it down, but I think it's not a factor.
Django
Python's answer to Ruby on Rails also has a very impressive list of success stories:
- Disqus
- Eventbrite
- Bitbucket
.Net
- StackOverflow
- GoDaddy
- W3Schools.com
Although it didn't seem that popular with startups in the past, .Net does seem to be gaining ground according to Cruchbases analysis.
Laravel
PHP's answer to Ruby on Rails has come a long way. Especially with the Spark upgrade offering that provides lots of functionality out of the box. This makes it a strong contender. I have personally worked with another company who built their microservices product using Laravel. Unfortunately, I don't know of any success stories of large companies or startups using Laravel.
- N/A
Flask
Python's second entry into this list is the lightweight and minimalist Flask framework. Although I couldn't find an example of a startup that was created using flask as the primary framework, I did find a number of startups and/or companies currently using Flask. I am assuming they use Flask to build microservices and machine learning related type use cases.
- Netflix
- Lyft
- MIT
- Banksalad
- Zillow
- Keen IO
- Mailgun
Meteor
Javascript's second entry into the list is Meteor.js. The only startup I could find that is built on Meteor is WorkPop.
Spring
Java's entry into this list has a long history of use in Enterprise environments. When I worked at LiveNation (TicketMaster), I was involved with the company wide migration from Perl to Java SOA. Honestly, I miss the corporate governance meetings a little more than I miss Java itself. However, it's not a surprise that Spring would make this list. I cannot find any startup success stories where a product was built using Spring. If you know of one, please do send me a link to a reference article and I will put it in the list here. However, that being said, many startups who started off with another framework and have scaled have migrated to Java. Salesforce is one such example.
- N/A
Rails wins with most success stories
Rails has been used to create more successful startups than the other candidates. It's not clear if it's due to technological superiority, pure development speed, or that perhaps Ruby on Rails attracts developers who are more likely to be successful in an entrepreneurial atmosphere. I would venture to guess that it's a mixture of those things.
Cost: Average Salaries of developers with that framework in their skillset
Here I will take into account the average salaries of developers that have skills in the specified skillset.
Rails
Ruby is at the top in terms of salaries at $75,000 USD.
Django and Flask
Python comes in second in terms of salaries at $63,000 USD.
Express and Meteor
Typescript comes in third in terms of salaries at $60,000 USD.
.NET
C# comes in third in terms of salaries at $59,000 USD.
Spring
Java comes in second to last as expected due to the enormous number of university trained Java developers with average salaries at $52,000 USD.
Laravel
PHP didn't even make the list in the Stack Overflow Study. This is no surprise because of the sheer number of PHP developers and the low barrier to entry. I would venture to say that a Laravel developer will most likely be paid more similar to Rails and Django developers. So this may be misleading.
Subjective Criteria
In this section, I have my own personal subjective criteria for framework selection. I manage a 50+ person digital agency that develops digital products for clients. We have to produce working applications on very tight timelines. We also have to maintain and extend those applications. We have to move our developers around from project to project. So I have a strong preference for frameworks that are strongly opinionated and generally have one way or pattern of doing things. I also want a framework that is mature and has a large open source community with many libraries and integrations.
Strongly Opinionated
Rails, Django and Laravel definitely meet this criteria. Rails is the most opinionated by design. The creators of Rails believe in convention over configuration. Django and Laravel are close in terms of adhering to a pattern that is enables developers to easily move from one project to another. You can hire two NodeJS developers and have them sit next to each other and have completely different looking code. This is extra work for team leads and managers and is something I personally want to avoid if possible.
Large Open Source Community
All of the languages listed here have rather large and mature communities.
And the winners are:
3rd Place: Laravel
Laravel is a strong value proposition with a Ruby on Rails like MVC framework and it's Spark offering to help teams to quickly develop SaaS products. This coupled with the relatively cheaper PHP programmers makes it a strong contender for any startup or MVP. Unfortunately, I can't find a good success story where a successful startup was built using Laravel.
2nd Place: Django
Django also has similar traits as Laravel and Rails. On top of that, Python has the best machine learning and AI ecosystem. This makes Django a very strong contender for any startup or MVP project.
1st Place: Rails
There's a reason that so many successful startups were built using Rails. Even today, Rails developers are in high demand and low supply. in my 20 years of experience developing web and mobile applications, I have yet to see another framework that has such high productivity. That being said, Rails is definitely not the most performant or scalable. But that really doesn't matter because it's scalable enough.
Since I am heavily biased towards delivering working features quickly, and a consistent track record of doing so, Rails wins. I think this is confirmed by the fact that even today, Rails is the number one Fullstack framework used by seed or early stage startups (if you remove Angular which is not fullstack). I'm not the only one to have to come to this conclusion.