If I would have to give 5¢ every time a new framework makes it out of the gate, I’d be bankrupt.
But I stopped worrying about the new tools that come out. Sure, I skim over articles and tutorials about new frameworks as they are a source of ideas. I look at them to learn more about building applications and how I can bring those ideas to my flow.
I don’t care whether Django or Sinatra makes loops around Rails or not. Or if Ruby is slow as hell. I chose years ago that I would put my effort in Rails and that’s what I’m doing. And as long as the framework is maintained and continue to improve, I’ll stick with it.
I’ll stick with it because I’ve built tools that enhanced my environment. And because the tool I’m using — Rails — is still actively maintain and suits me.
I’m not saying I’ll always be writing application using Ruby On Rails and I’m not thinking that it’s the best or perfect solution. No. I’m saying that as long as I’m satisfied with it, there’s absolutely no reason for me to change.
Today, 23 years old developers with 3 years of experience in web development will probably go through 3 different frameworks on the browser and 3 different languages on the server spanning over 5 different frameworks.
If that isn’t masochism, I don’t know what is. More than that, some people mistake masochism for false rationale!
But this new framework does XYZ
I’m sorry I’m the first person to tell you this, but the difference between frameworks is minimal when it comes down to actual features. They all compete in the same market. They are all aware of each other. They are influenced by each other.
It’s all about tradeoffs. Some frameworks decide to go down one road because they value something over something else. But those tradeoffs do not impact functionality. They are more subtle than that. They impact performance in different situation. They impact how you build algorithm to achieve your end goal. But you can achieve your goal on any framework.
Because at the end of the day, everything you do with framework XYZ you can also do with framework ABC.
You will achieve this differently depending on the framework you are using. Of course. You will have to learn it. Do you think you will become a better developer if you dip your toes doing the same thing 10 different ways or do you think you’ll get better at mastering how to do it one way?
The latter is going to make you a better developer, because repetition makes perfect.
Choose a framework and stick with it
Let’s face it, choosing a framework is an emotional decision, not a rational one. Guess why all those new frameworks have a fancy home page with animation and glitters?
It’s okay to be sold to a framework hell, I’m sold to one. But once you make the commitment, STICK TO IT.
Stick to it for years, not months. Learn what it does. You don’t have to contribute but you have to understand how it works from the inside out. Because that’s how you get effective. That’s how you come to understand why and how things break.
Two nights ago, I was at a friend’s having a chat and this guy just lost his job. He wanted to start playing around with linux. So we talked about linux, and he told me how he went to install it on every computers he owns and how cool things were. We talked for like 25 minutes and he wouldn’t shut up about all the positive things that linux brought him.
This guy had been running linux for like 1 week on his machine and he was sold. I, on the other hand, told him that he will face some issues with USB devices, misconfiguration files, video drivers, broken updates, incompatible packages, broken wifi, etc. Now, I’ve been running linux for about 10 years now. While I’m no Linus, I know my way around and have seen enough with linux to understand the things that linux excel at and things linux sucks at.
And he was nodding, but still wouldn’t understand my concerns. I was glad he installed linux, but I wanted to warn him that he will faces challenges that he has never faced while running on Windows.
This morning, I got a SMS from him saying that he spent the whole night trying to connect his laptop through SSH to his home desktop and couldn’t figure out why it timed out. It took me about 5 minutes to realize he was trying to connect to his ssh server on port 22 and maybe his ISP was blocking the port 22. And guess what, it was exactly the problem.
I had the instinct to check for port 22 because I had enough history with SSH that I knew what to expect. That’s what experience gives you. You can’t calculate it, it’s just it.
Does that story rings a bell to you? Look at the comments on HN when there’s discussion about the framework-of-the-day. You’ll see the same pattern. Everything is paradise.
Learning is tough, learning curve doesn’t stop at ‘Hello world!’. It never stops.
And when you switch from one language/framework to another, you lose something.
Forfeiting your experience and giving up your knowledge
That’s what happens when you hop on the next bandwagon. You decide to give up on everything you learnt before. Because things aren’t named the same and all the links you made in your mind have to be remade. I know this because I did the exact same thing when I started. I moved from Symfony to Rails to Sinatra to NodeJS to even an ORM that was made on top of Redis. And every time, thing broke and I couldn’t explain why.
I started building up my knowledge from pieces of experience I could link together.
When I think about my past self, I don’t remember much about the 4-5 frameworks I tried. I just remember the failures. I remember that NodeJS had an ugly in the alpha version that I was using that would just crash without warning and I had to reboot my server every couple of hours. I remember how awful the documentation was on Symfony 1. But all these things are irrelevant. Because If would have stuck with one of those frameworks, I would have been great at it. And I would have remembered how awful Rails was. You get it?
There’s no wrong framework.