How to Become a Better Programmer by Learning Less
By: Szymon Adamiak
Tags: Programming, Learning, Coding, Education, Software Development

Deepen Your Main Skill

I’m a competent front-end web developer with some knowledge about back-end programming in several languages. I’ve created a few mobile apps using React Native. That’s more or less my skill set, with a strong bend towards the front end. Time to choose my essentials and cut off the excess.

Pick essential areas

For me, it makes sense to focus on front-end development — both on the web and mobile. To be a proficient front-end developer, I need to be an expert on JavaScript. So all the courses on advanced JavaScript may be useful, although I can remove the course on creative coding from the to-do list.

You can build any app with plain JavaScript, but it’s often impractical. I work mainly with React, so I’ll focus on it and its ecosystem. Goodbye, Angular and Vue. I’ll miss you, Svelte.

So my crucial skills are JavaScript and React. Other languages and frameworks can be used as secondary skills, but my focus is clear.

Only learn the skills you’ll use

JavaScript and React’s ecosystem are vast subjects, so I need to narrow my interests even more. The best way to do that is by choosing courses you can use in practice.

I’ve been learning Redux for the third time. The first two times, I learned it because everyone on the web claimed it was essential. I didn’t want to be left behind, so I finished a tutorial and read the documentation. But I didn’t use it for any project, so I quickly forgot everything.

Eventually, I needed to use Redux professionally. I worked with it immediately after completing the course. I encountered a few issues, and with some help from the documentation, I got it to work correctly. Now I can use Redux anytime I want.

Real learning occurs when you’re working on a project and thinking intensively. No number of tutorials can help you if you don’t use your knowledge in practice. Learning things you’re not going to use on professional or personal projects is a waste of time.

Don’t fool yourself

Never assume you understand the subject unless you can explain it clearly to someone with significantly less experience. Always watch out for gaps in your understanding and be wary of false confidence.

“The first principle is that you must not fool yourself — and you are the easiest person to fool.” — Richard P. Feynman

Almost everything in programming is complicated if you dig deep enough. For example, do you know how you can manage the state in React? You can pass props through components or use Context API. Alternatively, you may pick a library (maybe Redux or MobX). And Facebook just released a new state management library called Recoil.

Solutions to the state management problem are numerous. Why do you think that is? It’s because state management is hard. You may believe you get it after finishing a few tutorials, but you don’t. Only after you encounter real-life challenges will you understand why those libraries exist, what problems they solve, and why it’s complicated.

Keep in mind that you need to challenge yourself and remember: Programming is hard and you probably don’t understand as well as you believe.