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?
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.
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.
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?