DEV Community

loading...
Cover image for Stop learning everything

Stop learning everything

hanna profile image Hanna ・2 min read

One mistake I've seen people make, especially newcomers to devops or programming in general, is they try to learn to much. I don't mean in a specific time frame either, I mean overall. They end up learning 50 different languages and/or tools, when in reality they're going to only end up using using at most 5, especially in their career. I know this because it's something I've personally done, I ended up learning so many languages, tools and more, that I have per-say "cluttered" my brain with information that probably won't be used, and this is problematic, especially at scale.

Want or need

Don't get me wrong learning is good and you should learn but you should only learn what is needed. There is a difference between learning something because you can, and learning something because something your working on needs it. I could learn all the programming languages in the world, but if I only end up using 5-10 of those languages, what use is that knowledge?

One common phrase I often quote in things like job interviews, among other things is "lead by example, don't lead by courage", and what this phrase essentially means is, you want to be an example when you lead, what you don't want to do is lead or become an example that is only an example because you had the knowledge.

Knowledge or experience

Having the knowledge to use something, doesn't directly correlate with knowing how to use it well. Instead of focusing your time on learning 20 different tools or languages, instead focus on learning the specific tools your project or job(s) need, and improving your skills with them. This is very important when it comes to software engineering jobs, among things not even related to programming.

Discussion (24)

pic
Editor guide
Collapse
ravavyr profile image
Ravavyr

I think people THINK they need to know 20 things to get a job. The entire industry makes you feel that way when you read a job posting that lists a dozen tools and languages as requirements even though chances are a developer may use like 4 things.

At the same time, those of us active in the industry for 10+ years know that it is constant change and that you have to keep up with new things to be relevant so the end result is you do learn "everything"...you just don't do it before your first job, and a great many don't do it at all because they're happy just knowing what they need for their current job, even if that bites them in the ass a few years down the road.

What every newbie should learn is how to build a full application. Enough with the tutorials and "website projects" that teach you how to make a single page application with 5 navigation links. Those projects are completely useless in the real world of web development. Wanna get good at it? Start building complex things, create an ecommerce site with categories/subcategories/products, a cart, and a checkout, if you only pretend to process payments, as that you can learn later, start making things that carry state and have to load various layouts depending on the selected data, that's how you get better in web dev.

Also, launch them, setup a domain, point it at something that's not netlify/heroku or whateverother automated service you have. They're great, but by pressing one button to do it you never learn what's involved and as a web developer you damn well better know how to make a site live on a server because that's what 90% of the web still does today. The new stuff will gain traction, but it's gonna take many more years, or another decade before the automation is really commonplace for the average business.

Collapse
marcbouvier profile image
marc-bouvier

Yes! For the learning path there are some awesome resources to help choosing what to learn next. You can learn useful things in a focused manner.

e.g.
roadmap.sh/

Collapse
imkleats profile image
Ian Kleats

Counterpoint for me (and maybe it isn't always worth the downsides you mention) would be that learning a new language especially or even framework sometimes forces me to challenge my assumptions and think about what I thought I knew through a different lens. Yes, the cluttered mind aspect works against me when I'm in a live-coding interview trying to remember which of a half dozen slightly-different APIs I need to use in that particular instance, but I also strongly adhere to the "never commit to memory what can be simply looked up" way of being which might compound that. Maybe it's a bunch of dribble, but in the end, I feel like a more capable engineer by forcing myself to context switch and think more abstractly.

Collapse
hanna profile image
Hanna Author

I would consider learning a language because of a framework a "side effect" of sorts, like let's say I only know js, but the job im applying to is moving from react (jsx) to something like angular which uses typescript, in that case that makes me learn something i probably wouldn't use normally, but due to something i have to use, i learn something else, if that makes any sense.

Collapse
pbradz profile image
Phil Bradham

I feel seen by this...😑
In my case, ADD contributes to following that new shiny thing I saw mentioned on Twitter/Reddit/Blog/...

Collapse
hanna profile image
Hanna Author

Same, I have ADD as well haha. This happens to the best of us.

Collapse
marcbouvier profile image
marc-bouvier

Same here!

Collapse
marcbouvier profile image
marc-bouvier

As long as you don't consider it a general and immutable rule I am fine with it.

You may also consider deliberate learning (e.g. Coding dojos) to frame learning sessions in space and time (codingdojo.org/DeliberatePractice/).

Building this discipline may help to sharpen skills, to be open to different ideas and broaden some knowledge. There is no need to dig deep. Sometimes have surface knowledge or just knowing that something exists is OK.

Collapse
marcbouvier profile image
marc-bouvier

By not broadening knowledge, there is also a risk of becoming an expert beginner.

daedtech.com/how-developers-stop-l...

Collapse
hanna profile image
Hanna Author • Edited

Valid points! My point is more of if you spend more time learning something you (probably) won't use, you'll have limited experience in the technologies you will.

An example is if for say I'm a backend developer and all my projects are backend, but I spend hours learning say react, while it can be useful, in this scenario it doesn't provide any benefit, other than me knowing how to use it.

Thread Thread
marcbouvier profile image
marc-bouvier

I agree.

About the split between frontend technology and backend technology, I think there is value to know at least a subset of the other side in order to better communicate between frontend and backend developpers.

This can help the organization to break silos. It is for instance what the DevOps philosophy is all about by the way. Make Dev and Ops talk and have more empathy to each other.

I don't advocate to dig deeply unrelated techs for the sake of it. Though, having a minimum of general culture helps make better design choices and better communication with peers in my opinion.

Collapse
darkwiiplayer profile image
DarkWiiPlayer

There's nothing wrong per se with continuously learning new things. After all, it's a requirement for being good in the field to be interested in the technologies involved. Following that curiosity will lead one to learn at a healthy pace. After all, exploring new concepts is what leads to innovation.

Collapse
aghost7 profile image
Jonathan Boudreau • Edited

I could learn all the programming languages in the world, but if I only end up using 5-10 of those languages, what use is that knowledge?

I think it is useful to learn things you might not ever use because a lot of concepts transfer over to different implementations. For example, when I was learning Scala I used futures. At the time async wasn't really a common thing, but I'm glad I learned it - understanding promises in javascript when it became a thing took me no time at all. I was also able to guide others on how to avoid antipatterns and the like.

Collapse
kodebae profile image
KodeBae

You are so right about this. I made the decision recently to up my skills and decided to focus on learning more technologies that coincide with my favorite language, Java. So as of right now I'm currently learning JavaFX now. ❤️

Collapse
pris_stratton profile image
pris stratton

I also tend to see a lot of clickbait headlines like “Why X is dying and why you should use Y”. Maybe Y is better but X is probably going nowhere so if you’re half way through learning it keep going rather than starting over with a new language, framework etc.

Collapse
hanna profile image
Hanna Author

Yeah I fully agree with that.

Collapse
pris_stratton profile image
pris stratton

I think focused learning which isn’t necessary to carry out a role but which gives a deeper understanding of the languages or tools you’re working with can be a good idea.

For instance, using D3.js is fine but doing so with a solid understanding of SVG as a language means you’ll be much more productive and confident in what you’re doing.

There’s also value in learning a programming language which takes a different approach to the one you use. It’s a cliche but learning Haskell gave me a different perspective on how I could use JavaScript.

Learning stuff for the sake of it because you feel under pressure to know everything is a mistake for sure.

Collapse
masihtak profile image
Masih Abjadi

That being said mastering one thing is better than knowing several things!

People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas that there are.

Steve Jobs

Collapse
riimocmd profile image
riimo-cmd

This actually isn't bad advice - if you ignore the school system. For a self-taught adult, this is entirely relevant - you don't need all the ingredients for a beef stew if you're making hamburgers. That being said, I and many other students are taught 50 different languages because of our curriculum. We're taught little projects to teach us concepts with a big one at the end as a final essay of sorts, and then it's on to next year's class. In highschool, this usually means block based coding and Android development, but some colleges have you take database and web design classes no matter what you want to code - it's the only thing to give you the credits to graduate.

Collapse
bhooscream profile image
Ahmad

I agree with you, dear.
Sometimes I get lost with myself. Knowing everything not made us world ruler or president maybe. We are still a human not robots or supercomputer. We are not required to be everything. We just need to focus on what we are passionate about and we love or we will lose our human essences.

Collapse
muzammilaalpha profile image
muzammilaalpha

Good post!

Collapse
typo3freelancer profile image
Simon Köhler

I agree! "I ended up learning so many languages, tools and more, that I have per-say "cluttered" my brain"... now I am specialized.