Recently I read this post from John Hotterbeek about the burning question of how much you should learn to keep up with your career.

To sum up what John wrote about:

  • According to Uncle Bob, you should spend about 20 hours learning on the top of your job. Just like lawyers and doctor and accountants. Otherwise, you are not a professional.
  • John checked and according to legal requirements, a doctor or an accountant must learn 20 hours to keep their licenses.
  • John found one difference though, according to Uncle Bob we must learn an extra 20 hours a week, whereas in the mentioned professions you have to put in that extra 20 hours a year.

So even if we do a very generous calculation, the difference will be at least 10 times. As a developer, you are required to learn 10 times more besides your job than a lawyer or doctor - according to Uncle Bob.

But how to handle that? How to organize your life? And after all, is that actually true?

I like UB’s books and I agree with him in many things, but not in this one.

Should you spend like 20 hours a week on learning? Probably you should. Solely IT? No - he never said it though. In your free time? Partly.

I cannot and don’t even want to tell you how much time you should spend on learning. It depends on so many things. Like on how fast you learn. On what you want to achieve. If you are a junior developer and you want to become a principal engineer in a few years, you’ll have to put in more time than if you just want to become a seniorish developer in a decade or so.

But even if you just want to float around, you still have to learn. What we have to understand is that albeit there is a shortage of developers, there is also a big competition. If you want to maintain your position, whatever should it be, you’ll have to invest in yourself. If you don’t do it, you will fall back. If you don’t move forward, you’re going back.

But when and how you should perform that investment is a tricky question.

UB says that you wouldn’t be happy if your doctor billed you for his training. Actually, he does. Just like your lawyer or accountant.

And you do the same.

If you are a freelancer and you invest a lot in your knowledge, sooner or later you’ll be able to charge your clients more.

If you are a corporate worker and you do care about your professional growth, it’s highly probable that you’ll go to a company which invests in their employees by providing them courses/books/conference allowance, etc. Again, in that case, it’s part of your compensation. So you do charge for your growth.

Is that enough? Do these possibilities let you growth enough? No.

You go to a course and especially in the earlier stages of your career, you’ll walk away with the feeling of having seen so many great things that you cannot directly apply to your job. Soon you’ll forget what you learnt. Unless…

You have to practice. Coding on your job project is not enough. When you code in order to deliver a feature, your specific goal is to deliver that very feature. But in order to learn new concepts efficiently, you have to practice with given goals. Deliberate practice is not fun. It can be quite tiring and you have to do the same thing over and over again to deeply understand the nuances and to learn some complex topics so that they become a reflex.

Should you do that in your free time or during work hours?

Good question. Obviously, if you can do it at your 9-to-5, do it. In my department, we have management support for having a 2 hours long coding dojo once a week and a more general knowledge sharing session (2 hours) also once a week. At the dojo, we practice TDD, pair programming and some specific topics, like mocking, branching by abstraction, iterative algorithm development, refactoring, etc. You can say, we are lucky. But we worked hard to sell the idea and I think we are already delivering results in the form of fewer bugs and faster development time. But I expect not diminishing, but accelerating returns. I think we are delivering more maintainable, more flexible code and above all code covered with tests which will give us the ability and confidence to refactor quickly.

But even if you cannot sell the idea, you’ll have to find the time to practice if you want to get forward. Getting forward doesn’t necessarily mean a promotion.

Maybe for you, it will mean that you will finish your tasks earlier. You can spend the rest of your time with your family or friends. Or maybe you can take other tasks. Or you can practice more. In that case, until a certain point time will make more time. I always chase some kind of freedom in my jobs. If I have some spare time at work, I try to find areas where I can help my team to get better, to deliver more easily. Sometimes I take on some bonus stories, yeah, but that’s not my main goal. Combining learning with your own aspects will bring new ideas, that is innovation.

Think about Abe Lincoln who said “give me six hours to chop down a tree and I will spend the first four sharpening the axe.”

I said that deliberate practice is not necessarily fun and it’s almost always tiring. But what is more dull and tiring? Doing the same manual tasks again without a deep understanding of what you do? Or learn enough to understand and then automate/optimize the task.

In conclusion, I can only say that you must learn if you don’t want to be left behind. How much? It’s your choice, your responsibility. But you don’t owe it to your company. You owe only yourself. If you can make your company pay for learning, don’t hesitate to do it. Even better, if you try to convince them that it’ll be beneficial for them if they invest in you. Unless you leave immediately. But if they are so smart to realize it’s worth to invest in you, why would you?

Happy learning!