Watch the video or read the blog post - whatever one you prefer! The content is basically the same on both :)
Here’s a common misconception in the development realm: “I need to pick the best language and framework or it’ll be outdated in months / the jobs will dry up”.
As developers, sometimes we place too much pressure on ourselves to pick the “best” or the “right” framework and language combination to learn. There is no best or right framework. Only best and right for you and the task at hand.
The 2 Reasons We Think This Misconception Exists
Quite simply;
- Over-opinionated Senior Developers or “Bandwagon Developers” that want to hate on a particular language and/or framework. Sometimes, these people are become ideological Evangelists (obsessed and think it’s the best ever) for a particular language / framework / methodology. *Please don’t be one of these people. Being open-minded to different tech stacks is a sign of an excellent developer!
- We worry that we’ll spend months training in a particular discipline to get a job and a salary that we want and the tech stack we use will become out of date. We simply don't want to waste all of that time to have to retrain.
So the 4 reasons in this post are going to directly address those points, and provide you reasons to stop caring about this trivial issue.
1) Close-minded developers perpetuate that there’s a best framework or language from a place of ego.
And the reason we know it’s ego is because for every one utterance of “PHP is terrible” or ”OOP is an anti-pattern”, you’ll find 100 very well architected, nice to work on applications that scale to the millions built with these very technologies.
This bias against or towards certain tech stacks gets extreme when people start hating on certain technologies in a general sense.
2) Tech stacks don’t just disappear from the job radar in a matter of months
You worry you’ll train in Angular but hear loads of opinionated devs saying how React is going to take the lead and everything will become irrelevant?
There are still jobs for old frontend frameworks going that 99.9% have probably never even HEARD of, let alone a leader like Angular.
The reality is, if you pick a leading framework in a language where it has a stronghold in the language it’s in, you’re going to be fine
3) Even if your tech stack goes out of date, you will adapt to a new one
Adaptability is another sign of an excellent developer - and you can learn it. Heck, you’re already learning whatever you’ve chosen to learn - and once you get there, it will be 10x easier to learn the next framework or language you pick (unless you’re going from JavaScript to Assembler...)
4) It will lead you into narrow minded thinking that hinders your growth as a developer
Maybe those over-opinionated developers have a point. Their narrow view on what the best framework is enables them to feel safe in their job, and they feel good in the knowledge that they’re working with the best technologies out there.
What we’ve came across instead though, is developers who are so unable to have a conversation about anything other than the thing they work in, and create such inhospitable atmospheres when it comes to talking about the “thing they hate”, that they are in a little bubble and don’t tend to learn much beyond what they know.
They might be right, they might be wrong, but this is the mindset that causes people to get stuck on working with a framework that had 10K downloads a day a few years ago, and in the present hasn't received security patches for months and probably gets downloaded < 10 times a day.
Staying in that place will halt your progress and hold you back from the wealth of new technology available in this day and age.
So what are some more practical criteria for picking a language and framework?
Here’s what we go by when trying to advise newbies;
- Look at the type of work you want to do (Websites, Mobile Apps, Desktop Applications, Machine Learning, Games) and look for the highest proportion of languages and frameworks used for that discipline. Pick one that you think has the best community.
- Something with LTS support is also great - although anything can have LTS - chances are that it’s got it because the community uses it regularly because it’s high quality and has been used in thousands of enterprise projects.
- Something with a wealth of resources from tutors that you like available - since you have such an abundance of choice, you could hop between a few languages and browse DEV, YouTube etc looking for tutorial posts and see which has better resources for you.
- If you’re looking at this as a career choice, look at the jobs in your area and try find the commonly used languages and frameworks - it might be a good idea to go for those
Curious about frontend development? We’ve just released a free crash course (No, it’s really free - no upgrades, no hidden costs)
We worked for a couple of months on a professional design and 4 hours 20 minutes of video content to bring you our free crash course showing you how to code this portfolio website (which we constantly encourage you to customise to your own style)
If that’s something that would interest you, and you’d like to learn more about HTML, CSS, SCSS, Bootstrap 4, Git, GitHub Pages and a sprinkle of JavaScript and jQuery, you can register today, for free, from this link here.
Top comments (8)
While I fully agree that many frameworks can do the job, I would like to clarify something: technologies don't get a medal for showing up. PHP is an utter piece of crap and this comes from a place of long and sustained frustration.
Also some things might be more strategic than others. By example, I've seen fantastic ideas for web development in C++ but I wouldn't recommend going there anytime soon.
Also it's more about the kind of company you want to join. Big things will go Java/.NET, web agencies mostly PHP, startups will choose a hype JS framework and so on.
And finally I really like the point of the article: chill the fuck down and be ready to jump onto new things. All companies have so much internal things that are much bigger than frameworks anyways, the main goal is to learn how to learn.
Such a good phrase “Technologies don’t get a medal for showing up”
It’s an easy misconception, just like saying the number of GitHub stars something has is the indicator of it’s true position against other frameworks. It’s simply not - we need to look at these technologies in the context of the modern day. Just because Windows XP was still on loads of hospital machines doesn’t make it a good choice...
Picking strategically is definitely the best way to go, but not over-thinking your choice to the point of anxiety is most important. It’s not worth worrying about, you’ll be good with most recommended learning paths.
That’s indeed the point; relax, and have attain a mindset that adapting is fun and necessary in a world where technology moves at light speed (without jumping on the hype train of course!)
Also, we would have definitely agreed with you about PHP 10 years ago, but in the modern day there’s actually some awesome technologies emerging. Loads of the frameworks and CMS are garbage for most enterprise projects, but with the advent of Laravel, Vapor (Serverless PHP with insane scalability), Asynchronous Extensions and a lot more modern features getting in and modern patterns being used.
There are still a lot of missing features that you’d see in more mature OOP languages like C# and Java - and a ridiculous helper function naming and parameter scheme - but it really isn’t what it used to be.
Thanks so much for your comment!
The opposite is true, I am learning Rust not because it is better than c++ for my application, they both could produce the same result, I'm doing it because I want to. This year I have learned a number of languages that could tie into WASM and my daily JavaScript because I said so. During that process I have gained insight into frameworks and language design which was so valuable I can't tell you. I would recommend whole heartedly, learn a language whenever there is a need. In my case I have lots of ideas so that's pretty much every week.
Such a great example of trying things for the possibility of gaining amazing new insights - and almost always you will, as in your case you certainly have.
It’s too easy to get pigeon-holed in and as an absolute beginner, it might make sense to scope yourself to a limited number of technologies. But not exploring things at a later date when you’re much more comfortable programming in general is just holding you back from a world of possibilities and growth.
GoLang is our next port of call. Seems like it differs in its concurrency / parallelism models and we hardly know anything about that at an expert level as it is, so we’re going head first to see how it can fit into any of our stacks.
Thanks for sharing your experience Adam!
Admittedly I am several years into my journey to understand programming, but I was once an elitist for my first language, especially when a certain engine became server side as well as in browser. Of course I'm talking JavaScript, it's a big deal but it's got problems that you won't understand unless you branch out. From a career point of view what can you gain from learning any language you feel like? Today I was debugging some acceptance test written in Java, do I know Java? No but I know concepts apply to Java. Get out there and learn programming. Don't expect to be good at everything and most importantly, have a blast!
It's understandable to be elitist about something because it's all you know - it's being stubborn about that when you have knew information that's the problem - for no one but yourself.
And it's awesome that you shared that so openly - it's a show of strong character that you can honestly say that and that you were able to grow through that to where you are now. It sounds like you're learning some amazing stuff.
Let's also not discount how amazing the whole JavaScript Full-Stack thing is... It's pretty amazing that you can use the same language for both your frontend and backend dynamic code now.
We haven't looked into it yet but we think it's why Netflix switched to Node - it must be extremely cost efficient to take out an entire language requirement for the team on a project of such scale. It's still not a reason to be evangelistic about it - it was just super practical for them and it is for a lot of beginners too.
Do you ever just read code from repositories in languages you've never coded in before? That's something I do randomly when I feel like it and I try to look for new language concepts and ideas. It's insightful at times
For personal projects.. Make your own little framework..
Fantastic way to learn... Even open source it, iterate and improve.