close menu button

Hello there!
Log into the academy:

In order to log into your academy profile, please provide your email and password

Forgot password?

Did you previously use

Don’t have an account yet?

How to Become a Better Programmer by Learning Less

It’s time to declutter your learning to-do list

What to do next? Photo by Startup Stock Photos

How many courses, tutorials, and articles are waiting on your to-do list? If you’re a bit like me, the answer is dozens. I’m a passionate learner who is interested in a wide range of programming subjects. But lately, I started to wonder which courses are worth my time and which are just a distraction.

A T-Shaped Trap

If you’re trying to develop your career, you probably encountered the idea of T-shaped people. They are experts in one field and have some expertise in other domains. For example, you can be a proficient back-end developer with some knowledge about DevOps, product management, and the front end.

T-shaped people are priceless employees because their diverse knowledge facilitates communication and bolsters creativity.

A broad range of interests may be advantageous. I’m an advocate for versatility and believe it’s the key competence of the future. But to be a T-shaped person, you need do possess reasonably in-depth knowledge of several subjects.

Finishing a course or two doesn’t mean you understand a field. What’s even worse, it may give you false confidence in your abilities. Learning too many things and spreading yourself thin won’t help you to develop a career. It just makes you a dabbler.

Much like you’re not an accomplished writer if you wrote two blog posts, you’re not a competent programmer after a month-long boot camp.

A T-shaped person is not someone who just scratched the surface of multiple fields. You have to carefully plan how to deepen your primary area of expertise and develop secondary skills.

To achieve success, you need to identify essential competencies and challenges. Later, laser-focus on them, removing all unnecessary courses. I’ll use myself as an example of how you can approach this.

Watch out for dead endsWatch out for dead ends — Photo by Jonathan Farber

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.

Photo of libraryWhere do I start? Photo by Ivo Rainha

Choose Secondary Skills

To become a real T-shaped person, you need to develop some secondary skills. I’ve been working on that quite extensively. In the last few months, I started (and never finished) courses on subjects ranging from DevOps through the Golang language to machine learning. Was it fun? Definitely. Is it useful in my career? Nope.

The essentials of learning secondary skills are quite similar to those of the main area of interest. You need to pick skills according to your priorities and chances to use them in real life. The theory alone won’t cut it. So delete irrelevant courses mercilessly.

To further my career, I need to focus on skills that may prove beneficial in the long run and are close enough to my primary specialty that I can benefit from the partial overlap of the knowledge.

I don’t have a strong mathematical background, so it’s time to say goodbye to machine learning and AI. It looks like I won’t become a data scientist.

As for some popular back-end languages, I won’t be able to use them in my company for the foreseeable future, so it’s a waste of time. DevOps is a hard one. I feel like I need to learn it, but it doesn’t look like I’ll have a chance to work in it, so I’ll skip it.

Since I work extensively with designers, it’s a solid idea to learn the design basics. I enjoy writing about programming a lot, so books on that subject have to stay on my to-do list. My project management skills are not as good as I’d like, so developing this area has to become my priority.


I still feel tempted to bookmark many courses. The feeling won’t go away. But I try to only pick the ones that can benefit my career in the long run.

In the last few weeks, I removed many courses from my to-do list. What courses can you remove?

Liked the article? Share it!

twitter iconlinked in iconfacebook icon

Similar articles

Claymorphism depth effect with CSS

How To Create Claymorphism Using CSS

Read article
Map with pins

18 Ways to Improve Your Programming

Read article
What to do next?

How to Become a Better Programmer by Learning Less

Read article