Throughout my career, I’ve mentored and coached dozens of software engineers. But one mistake I’ve seen repeatedly is the number one cause for career stagnation.

The recipe to get promoted is very simple: add more value. One way you can add more value is by working harder than everyone else, this only works in the short run and can have bad consequences like burn out, or physical and mental health issues. Another more sustainable way is to constantly become better at what you do.

Unfortunately, many make the mistake of relying solely on their current job responsibilities as a means of learning. While it’s true that when you start at a new company you can learn about a new domain, processes, and tools, with time you will get familiar with how the company does things and your learning rate will invariably drop.

Benjamin Franklin famously said, “An investment in knowledge always pays the best interest.”, and I agree 100%. Just as athletes train to consistently to improve their technique and skills, you should too. By the way, I’m not saying you should spend extra time outside work, no, you should be able to incorporate learning as part of your daily work routine. Both you and your employer will benefit from your growth and development.

However, just as with any investment, not all opportunities will have the same risk/reward profile. Personally, I classify each learning topic in three buckets sorted by importance:

In conclusion, be proactive and consistent about becoming a better engineer and you will have a successful career.