You’ve got an incredible startup idea ready to pounce on the world. But there’s a problem — it’s still written down on notepads and scribbled in various Google docs littered across the cloud. But no longer! You’re ready to build something great and now you’re on the prowl for a machine to power this idea on the web. But which web framework is the best for your app?
Before starting your tech stack search, write down a list of priorities for your ideal web framework. What do you value in a tech stack? Is it developer productivity, scalability, access to learning resources, libraries, or something else? Once you figure out your values, it’ll narrow down the choices considerably. Here are my top 3 favorite tech stacks for building a web app.
Great for: Developer productivity, ease of learning
If you want to get something out quickly then Django is the framework for you. Python is considered one of the easiest programming languages to learn and is also applied in a variety of industries such as data science and scripting. It comes batteries included which means that authentication, user management, templating, database storage and more have an established structure within the framework. You no longer have to prowl for finicky libraries to add to your product — Django does it all for you!
A potential disadvantage of Django is how opinionated it can be. If you want to program something that does not follow its paradigm, you’ll be faced with a mountain of overriding to make it work. Django hides much of the complexity behind the curtains which usually suits what people need, but reveals itself when building custom solutions. Nevertheless, being opinionated also indicates that much of the decision making is taken care of for you. This leaves you focusing on building that web app as quickly as possible.
Famous websites built on Django: Instagram, Disqus (source: https://www.djangoproject.com/start/overview/)
Great for: Developer productivity
Ruby on Rails (RoR) is a batteries included framework similar to Django. It’s used to power a tremendous amount of websites across the web. It features much of the same criteria described above for Django with the exception of the language. Ruby is popular with RoR but it’s use outside of the web framework world are lacking compared to Python. As a result, if you’re learning a new language and need to use it elsewhere, learning Ruby may not be the best choice.
Great for: Scalability, developer freedom, a bit of developer productivity
Node/Express is one of the most well known frameworks in the web development world. It’s not opinionated which means you can structure the project how you see fit. Whereas Django requires strict adherence to its design, Node.js makes no claims to the best structure and gives you complete control. This is good because you can steer the ship in any direction without much difficulty. However, it’s also a burden because it means much of the architectural decisions lay at your feet and require micro management, especially as your application grows.
These days web developers describe themselves as “full-stack”, meaning they possess skills in both frontend and backend development. Node/Express makes it easy to jump across a front end framework like React to Express in the backend since they both use a version of Javascript. Also, React and Node tutorials are plenty and you’ll never find yourself struggling to find the solution to a problem you encounter.
Many new tech founders try to pre-optimize and “future proof” their startups for a success they predict will happen with full confidence. Startups fail and they fail a lot. Although tech stacks are important, they’re not nearly as important as developing customers, business and true feedback. Any of these frameworks will work well for you in the beginning, it’s just what you value that determines which one to pick.