It Doesn't Matter What Web Framework You Use, Just Pick One
If you stick to one of the major web frameworks or libraries out there, it's really hard to make a critical mistake.
Let’s face it. The next big thing is always around the corner.
This used to happen a lot in the computer hardware world in the early 2000s. It felt like if you waited a few more months, you could get the ultra version of XYZ video card, or a slightly better CPU.
But if you wanted to play your favorite video game, you needed something now. Not in 4 months. At some point you had to make a decision and buy something.
I believe this mentality stems from not wanting to make the wrong choice, because the worst thing that could happen is, you buy whatever you’re looking for and then 31 days (1 day after the refund time), the super deluxe version of it comes out which is 42% better and is the same price as what you bought yours at.
It’s also why we have no problem spending 3 hours reading reviews on $12 shower curtains. I don’t even care about shower curtains, but I feel compelled to read dozens of reviews before making a decision. You can only imagine how bad it must be for something we do care about.
Trust me, I know, and this thought process happens all the time when it comes to writing code. Not only is there a shiny new web framework to look at every few months, but you’re in a constant state of not wanting to pick the wrong tech because the “cost” is so high.
Your mind hard at work, trolling you into information paralysis:
- I want to invest into a web framework I can use for a long time
- If I learn this, I’m in the for the long haul because it’s all or nothing
- I don’t want to waste my time learning something that’s going to die soon
- I will need to scale, so it better be lightning fast
- I hope I can hire people when I get bought out
Other than the last point, that used to be my brain years ago. The funny thing is I can remember the exact date when I was consumed by the above, and the exact point in time when I “cured” myself.
It started when Node v0.4 came out in August 2011, which is about 6 years ago from the time of writing this post. Ryan Dahl (the original author of Node) made a really compelling case for using it.
So I did the only logical thing. I spent a legit 6 months researching the shit out of Node, getting intertwined with the community, reading and watching everything I could about it, etc..
Except, I wasn’t writing much code. My input was at about 99.5% but my output was 0.5%.
# Every Framework Is the Same When You Have Nothing to Build
I remember having these invisible scripts in my head saying “but you need a perfect solution for users and payments because you might want to build that type of application later”.
And there lies the problem. I was looking into learning something new without really having a problem of my own to solve. I wrote about the importance of having a real problem to solve in a related post on how to learn a new programming language quickly.
If you read the above post, you’ll notice that I don’t list Node as something I know. Sure, I’m confident I could write a service with it and read other people’s code, but I haven’t written tens of thousands of lines of code myself, so I don’t see myself as “really” knowing it.
# Just Pick Something
If you stick to one of the major web frameworks or libraries out there, it’s really hard to make a critical mistake that’s going to ruin your business or prevent your service from working due to technical problems.
A list of popular web frameworks / libraries off the top of my head:
Ruby on Rails | Phoenix |
Sinatra | Laravel |
Django | Revel |
Flask | ASP.NET |
Express | Spring |
React / Redux | Play! |
There are others, but that’s ok. This isn’t meant to be an exhaustive list. I gave myself 15 seconds to list as many as I could think of and that’s what I came up with.
It’s Not a Life or Death Decision
If you already know Python and it makes you happy to write Python code, then pick a web framework based on Python. You really can’t go wrong with Flask or Django. If Ruby meshes will with how you think, then give Rails a shot, etc..
If you try out a language or framework for a while and you don’t like it, then don’t sweat it. Just move to something else. Chances are you’ll learn something that you can apply to the next one.
That’s why I strive to be a generalist who situationally dives deep into a few things. I think there is HUGE value in leveling up skills in multiple areas because they all come together to improve yourself as a whole.
# So Which One Is the Best?
This answer is going to be different for everyone, but for me, the best framework is the one that lets me get stuff done in an enjoyable way.
I wouldn’t say I’m a fan boy of any framework. Right now I like Flask and Rails but if something I thought was better came along tomorrow, I would instantly ditch both of them without a second thought.
And I think shifting my mindset to that is what eventually “cured” me of always wondering what the best framework is. Treat your web framework as a disposable means to an end.
You need to really decouple yourself from being married to a single framework and just take loads of action. The act of writing code will dictate works best (trust yourself). There’s no chance you’re going to theory craft the best solution without experiencing things first hand, and you’re going to waste a lot of time trying.
In other words, stop procrastinating and starting writing code. You’ll do fine with whatever you decide to pick. I promise.
How to Mitigate “Wasted” Time While Learning
First off, if you learn something new (even if it’s just 1 nugget), then you didn’t waste your time, but there are a few things you can do to make the learning experience more efficient.
For example, learning and teaching Docker was one of the best technical decisions I have made in ~20 years of being a software developer. It’s not a web framework but it’s one of those tools that you can apply to all web frameworks, so it applies heavily here.
With Docker, we can set up our development environment and deploy Rails or Flask applications in exactly the same way. If 2 years from now, something better comes along then we’ll be able to set it up in the same way with Docker.
Also, Docker helps you manage multiple smaller services in a way that doesn’t make you hate life. That means, you’re free to experiment with new frameworks. That’s a huge win.
So the takeaway here is try to find technologies that you can learn once and re-use everywhere. Today, Docker is a great tool for that (and yes I would ditch Docker in a blink of an eye if something better came along tomorrow BUT Docker is so darn good now that I foresee myself using it for many more years to come).
Docker is only 1 example of this. There are many others. Another example would be learning general patterns that apply to nearly every web framework in some way or another.
By the way, it eventually gets to the point where you can be productive with something new in a matter of a few days, or even a few hours.
I don’t know how to describe it (a self fulfilling prophecy maybe?), but all of that time you spend practicing writing code and “doing” allows for you to learn new things faster.
In a world where tech moves so fast, I believe learning how to learn and gaining experience is a million times better than than trying to pick 1 thing and putting all of your eggs in 1 basket.
What web frameworks are you using? Let me know below.