DEV Community

Cover image for Hot Take: You Don't Need To Learn Everything (Yet)
Tatiana
Tatiana

Posted on

Hot Take: You Don't Need To Learn Everything (Yet)

Learners often begin their journey with a simple Google search: "How to become a software developer". That search often leads them to complicated skill trees listing hundreds of different technologies and concepts, a swath of Reddit posts, Medium articles, and YouTubers that claim that you need to know the frontend, backend, DevOps, 3 frameworks, 6 languages, and every data structure and algorithm you can think of in order to become a professional programmer.

Job descriptions are no more helpful when a newbie is trying to understand what you must learn in order to become a professional. Similarly to the above skill trees, job listings are often notorious for listing nearly every technology under the sun for a role. In fact, it's practically a meme these days.

Not only is the idea that you need to know a heck of a lot to get hired discouraging, but it's unrealistic. And we should change the narrative.

Here's a little secret, for the uninitiated: you don't need to know everything- yet.

Git Gud

It can be overwhelming determining exactly what you should learn, given the above issues with skill trees and job descriptions. How can you possibly be proficient in 10 different technologies, languages, and frameworks? The real answer is- it's hard, nearly impossible to be good at everything. So what can you do to be competitive, then?

Answer: Git gud.

I argue that depth > breadth when it comes to gaining a strong programming foundation and working towards that first developer role.

We've all heard of the following phrase (most often only the first clause):

A jack of all trades is a master of none, but oftentimes better than a master of one.

I think the entire quote is valid, to a point. Developers inherently need to learn many different things in order to keep up with the ever changing landscape of technology. Being rigid in your stack might not be feasible when trying to reach for growth not only professionally, but technically. To be clear, I believe that in order to be a great developer, having the ability to learn a lot of different things is basically a requirement. So yes, as a professional, "oftentimes better than a master of one" is pretty key.

But when you're just starting out, fundamentals and learning how to learn so you can be that great developer who can quickly ramp up on different technologies is far more important than trying to split your attention between multiple languages and tools.

Let’s think back to that first clause of the above quote- “a jack of all trades is a master of none”. It’s very easy to learn the basics in many things, but to develop competency and prove that to employers means moving past those barebones basics. Similarly to tutorial hell, we want to avoid the trap of being a perpetual beginner, while still growing that mindset of being a perpetual learner.

It's all transferable!

Believing that learners need not learn every new framework and tool of the month prior to searching for a job, or during their initial learning does not mean that those learners will be less equipped as professional developers. It also doesn't mean that one shouldn't have that sense of curiosity about other technologies. Ideally, learners should strive to get into a mindset where they can easily transfer their skills in one framework or tool to another if they need to. What's important is you have strong fundamentals.

Core programming concepts are frequently transferable across languages. If you know how to write a loop in one language, it's really just a matter of learning the syntax to write it in another. You've done much of the heavy lifting of learning the concept of a loop when you learned your first language. At this point, it's all about making sure what you type is syntactically valid. At the end of the day, a language, framework, or technology is just a tool. But it's a lot easier to learn a new tool if you have strong skills and depth in another already.

The Rockstar Developer

As I said above, we've all become familiar with the "rockstar ninja master Jedi" job listings that seem to ask for 10 years of experience in tools that have been around for 5 years, knowledge of four different languages, and 3-5 years of experience for an entry level role.

I can understand the kind of anxiety this may inspire that leads one to believe that to have a shot at this field, you must know tons of different tools and languages. That said, it may surprise you that often these things are wish lists, or things you'll get paid to learn on the job. Now, is it great to know these tools, languages, and frameworks before you apply? Sure. That's absolutely a plus to know those things. But it's entirely possible to gain employment in roles outside of your preferred stack, and honestly, it's common.

In my own experience, I was all in on the MERN stack. I was targeting companies that used that stack, for the most part. I had multiple interview processes (even getting to the final round!) where the stack was not MERN. My current employer uses a completely custom front/backend framework, TypeScript, and CoffeeScript. The only thing I had in common was that they used Node and MongoDB.

I lacked confidence that I would do well in the role even though I knew my skills would be transferable. I got the job anyway despite not knowing any of those tools! I'm currently working with technologies such as Kafka and Redis, which are also completely new to me. Despite all of these technologies and tools that I didn't know prior to my role, I’ve been doing great. This isn’t to say that there haven’t been hiccups, but it’s nothing the documentation, drawing on my fundamentals, and asking great questions can’t solve. We should give ourselves more credit for being flexible and able to learn.

Conclusion

Being a developer is committing to a career of constantly learning. You'll probably find that you're learning daily in the first few months of your first job. It's more imperative to learn how to learn so you can tackle the novel challenges you will face as your team works on new projects, rather than trying to figure it all out ahead of time. You don't need to know everything in advance. You'll often find that your team, regardless of their individual seniority, is learning right alongside you, and if they're humble, they'll shout it from the rooftops.

That said, don't sweat it when it comes to facing what seems like a mountain of "need to knows". Are all of these things great to know? Sure, knowing things well can be very helpful.

But if you're just starting out and aren't strong in any given technologies just yet, laser-focus your learning commitments and get really great at some key skills. Express your skills through some really great projects. Honing in on fundamentals and core skills will pay dividends when the time comes to branch out after you get that first job, and propel you forward towards that first job much faster than splitting your attention amongst an impossible number of tools too early. Git Gud- The rest will come.

Let me know your thoughts about this searing hot take below.

Discussion (2)

Collapse
rammina profile image
Rammina • Edited on

Agreed! Having solid programming fundamentals and problem-solving skills is more important than knowing technologies. These are the skills that allow a developer to use and/or pick up various tools and build something with them.

Also, it's okay to apply for jobs even if you don't meet half of the requirements on the list. Sometimes, it's just to stave off those who aren't willing to try, and in other cases, the hiring managers just put those requirements there because they have no way of judging each candidate's skills.

Plus, trying to know everything never really works out especially in the field of software development. Programming languages, frameworks, libraries, and other technologies move faster than an individual's learning rate.

Collapse
parenttobias profile image
Toby Parent

I love this! And it's very true. Learn the concepts and the ideas behind the construct. You can always research if you've seen a thing, the resources we have as "backup brain-ware" is incredibly useful.

And yes, it is far more useful and flexible to learn to spot the patterns - they'll transfer between languages and libraries.

Thank you, this will be a ready reference when folks ask how much they need to know. 😁