As a software engineer, how do you measure your learning rate?

By identifying learning milestones and measuring the time taken to achieve them.

There are many dimensions in which engineers can learn and grow in their career. Here are some possibilities:

  • Building good software
  • Developing product intuition
  • Developing expertise in some area (like ML)
  • Growing leadership skills
  • Becoming good communicators

After identifying the dimension in which you want to grow, you will need to identify milestones which represent progress along that dimension. (You can always grow in multiple dimensions in which case you will have to repeat this for each of them) The best way to identify milestones is to talk to the people around you who have achieved what you want to achieve. Understanding their journey can help you decide how to structure your learning process.

Let’s say you want to learn to build good software. Here are some possible milestones:

  • Building a new reliable standalone feature or API that re-uses existing infrastructure including good testing and monitoring.
  • Building a scalable abstraction or a service with multiple APIs requiring you to think about how to store data, permissions, security, flexibility for future use-cases etc.
  • Building a standalone product with multiple features that requires you to think about user requirements, technical tradeoffs on whether to build new abstractions or services etc.

The key is to identify milestones which you can use to measure your learning. Depending on your personal preferences, these milestones may look very different. For instance, you may have to decide between depth v breadth i.e. understanding the inner workings of the Linux kernel or learning to build reliable software in different domains.

Once you identify the right set of milestones, the next step is to estimate how much time it will take to achieve that. By looking around you and talking to others who have been in your shoes, you can get a sense of how long it should take for you to achieve it given your current situation. After some of these conversations, you may realize that some of these milestones may take too long to achieve at your current role. At this point, you will need to decide if that is an acceptable rate of learning. If not, you may even be forced to consider opportunities at other companies that have a better environment for fast learning. I would strongly recommend optimizing for rate of learning over all other factors when making career choices, at least early in your career. This is because most learning has a compounding effect. So, the quicker you can learn, the more you will end up learning in a given period of time since the earlier learnings can be used to pick up new things much more easily. This is one of the biggest reasons why engineers move from big companies to smaller startups. Which is a better place to learn quickly — the company that ships one feature a month or the company that ships one feature a week?

There are some other ways to measure learning but they have limitations:

  • Titles and level changes are meant to reflect increase in impact in your role. For certain dimensions, it can be used as a proxy for learning. But this doesn’t always translate well since is possible to have impact without a whole lot of learning by leveraging your existing skills. In general, it is good for engineers to want to grow to the next level to have access to more learning opportunities but change in level should not always be seen as a outcome of learning. (Side note: This can be true at lower levels. For instance, a new grad who moves to the next level quickly has most definitely learnt a lot in a short period of time. But this is not usually the case at more senior levels)
  • Reading N books or taking N online courses or attending N talks can be useful learning activities but they are not very measurable in meaningful terms. Completing a book or a course doesn’t always mean that you have developed mastery over a particular topic. But taking that learning and building something more tangible like a side project can definitely be valuable. (Side note: Just because you cannot measure learning doesn’t mean you shouldn’t spend time on these activities. Growing your knowledge can help you in other indirect ways)

Engineers should constantly be thinking about learning and growing in different dimensions. By thinking of ways to measure learning, you can identify more high leverage activities and get more value for time spent. This might force you to re-evaluate your learning process and even determine future career choices. Good luck!

Leave a Reply