Ever feel overwhelmed by how much there is to learn? Is the pressure to learn Redux, CSS Grid, TypeScript, Go, Rust, Elixir, Kotlin or Elm getting you down? The software industry changes so quickly, it is very hard to keep up with all of the newest trends. Because software evolves rapidly, I think it can create an undercurrent of fear in programmers about getting left behind if they do not learn every new technology (I know it does to me). That fear then leads to imposter syndrome about not knowing enough and burnout from trying to learn too many things. I have fallen into this trap and it is hard to combat. What is the cure then? I think it is important to get back to the basics of our craft instead of following trends and popularity contests. So, what do you have to do to get back to the basics?
Do Not Try to Learn Every New Programming Language
It can be very tempting to try to learn ten different programming languages so that you can list each on your resume. However, spreading your experience around gives you very little depth in a single technology. Just because you can create a “hello world” in the top five functional programming languages does not mean you can build meaningful software for others. Now, I enjoy exploring other programming languages for fun and there is nothing wrong with that pursuit, but don’t let the exploration prevent you from becoming better at the languages you already know. I mostly work with PHP and JavaScript. PHP has had its death declared many times already, but it is still one of the top ten programming languages in the world. While it can be easy to leave PHP behind in my learning because of its stigma, I want to become an even better PHP programmer and learn more about it everyday. My ultimate goal is to write good software and it does not matter which programming language I use as long as the software works well.
Learn to Write Clean Code
I recently read through Clean Code by Robert C. Martin and the tips he provided have been invaluable in some of my recent projects. What is clean code? For me, clean code is very readable, quickly understood and easy to extend or improve. The ability to write clean code does not depend on the latest trends or the programming language at the top of Hacker News. Clean code can be written in any language and it is a skill that will be important in any future iteration of programming. You will not regret learning to write better code instead of reading the documentation for the newest JavaScript bundler.
Focus on Writing Good Tests and Secure Software
I know, I know unit tests and security are dull topics. They are not as interesting as the latest “Ruby on Rails killer”. However, I would argue that expertise in both is more critical in a business than any other topic besides writing code itself. Being able to write good tests significantly improves the quality of your code and ability to change it quickly. Maintaining proper security can save you money and keep the auditor away as well as maintain the trust of your customers. Like writing clean code, being able to write tests and maintain security are two skills that encompass every language and technology. You will be more valuable to your company or a potential employer by mastering these two skills than by knowing every language that compiles to the JVM.
In the end, getting back to the basics is about focussing on plain, good programming. It is not about learning complex build tools or trendy languages used in the Valley. It is about increasing the depth of your knowledge and not spreading it thin. Getting back to the basics is about freeing yourself from the need to know every goofy name like Gulp or Guzzle and just improving how you would write a class in your favorite language. It is about letting go of the pressure to learn everything and focus on learning a couple small, important topics. Getting back to the basics will not get you a TV show or a trending tweet, but it will give you peace of mind and a better product. Is that not what this is all about?
Top comments (5)
I guess it depends. For me most burnout-inducing thing is getting bound to same boring things without any chance to try something new. As soon as I'm allowed to use new language, framework or introduce concepts I learned recently, my near-burned-out state goes away.
I definitely think there needs to be a balance. I didn’t mention it in the article, but recently I’ve been learning Swift in hobby projects which has helped me avoid stagnation and do something new. In tech culture though, there is a lot of pressure to learn even more which can get frustrating/overwhelming sometimes.
I think it is called „boreout“.
Good read.
I especially love the middle bit. It really doesn't do devs any favours to battle with impostor syndrome, and get constantly asked about ways to integrate this new piece of technology, just because it looks popular. It's very refreshing to see others feel the same way.
Half-jokingly, I've been long enough in dev business to notice that if you wait X years, suddenly the thing you've always done is da bomb again - so all you need to do is wait 2-3 years :D
Totally agree. It's impossible to keep up with every emerging language/framework - and it's exhausting to even try. But the basics remain the same.