To become a software crafter…Or die in the attempt.

A Craftsman work-life balance

I don’t feel comfortable when I hear people explaining how hard we should work to be “successful”. Mainly because “success” is subjective, it only makes sense in a given context.

For example, Uncle Bob in The Clean Coder asserts that a professional developer must work around 60 to 70 hours per week. 40 hours for his job, the rest of the time to improve his skills.

I deeply respect Uncle Bob, but when he says that I must dedicate 3 hours per day, week end included, from my personal time to improve my craft, I definitely not agree.

Professionals have a personal life

We are valuables professionals with a really limited resource: time.

A company does not own 100% of our time because it fills a pay check. We don’t sell our lives, we sell our skills for a given period of time.

Investing on these skills is important. Learning new things is important. But it is unsustainable to do it only on our personal time. And when it’s done during our personal time, there are different things that can be done to keep an enjoyable life.

cat on beach

How to learn at work and stay efficient?

We can learn new things at work. Of course it does not mean we can play all day long with the last shiny technology when it produces no value for the company.

But we can do pair/mob programming. Whatever the job and the level of the co-worker we are pairing/mobing with, we will learn a lot of unexpected things.

We can explore new languages/tools on tiny internal topic. During a limited time (half a day? A few days?), we can pick an internal subject (improve the deployment script?) and try to solve it using an unknown tool/language we like.

It’s possible to organise 1 hour katas once a week. Or maybe to watch an interesting talk during lunch?

We can also switch a few people in the team on a regular basis. It will reduce the bus factor and spread good practices through the whole company

How to learn at home and keep friends and family?

When we think about it, we tend to realize there are lots of time we don’t use efficiently.

Work commuting is a good example. This travel time cannot be reduce. We can use it to read a book about the last subject we’d like to learn about. In car it’s possible to listen for audio-books or podcasts.

Waiting queue is another example. We wait a lot for: a plane, a train, a meeting, a doctor… It’s easy to keep a book, or better, a pdf on our phone to read instead of passively lose our time.

For sport addicts, what about listening some podcasts during the workout? It is true multi-tasking: the brain can listen to the podcast when the muscles are working on something different.


A crafstman work-life balance

I believe a good work-life balance is essential to be a software craftsman.

Personal life matters, it is the pillar to build a strong professional career. Not the other way around.

If people believe that they have to work 70 hours a week for their whole life to be professional, who will ever want to commit for a life career as a software engineer?



4 thoughts on “A Craftsman work-life balance

  1. I guess it all the depends on the level that a professional wants to achieve. If someone wants to become a great professional in my opinion is unfeasible to do so just using a few of the hours spent at work. 1 hour of katas, a short presentation during lunch seem just not enough. I think a great developer is willing to spend some of his free time learning about things which are not strictly related to what is doing at his job but that will eventually improve him: building your own OS, starting some open-source project, playing with Haskell.

    Sure, the company should help the developer getting some time to spend on improving his skills, but this cannot be enough, also because the skills learnt at the company will end up being very related to the daily job while a developer grows when he is learning unrelated things: dynamic languages if he uses Java or C#, mobile application programming if he is building web applications, etc.

    Of course, the time someone can spend on learning new things in his personal time depends on the kind of life is living. A single parent would have far less time than a bachelor. However great developers will always find those 15-30 hours per week to improve their skills. If someone cannot/do not want to put the same amount of hours he will not reach that same level, I think.

    1. Thanks for your comment 🙂
      I agree, I just want to give a different voice than the usual “passionate guyz work crazy hours every time”, because I don’t think we should feel bad if we don’t do it every time.
      Just a reminder that personal life matters 🙂

  2. When I read your interesting article, first I also felt uncomfortable because of the same thing as you did. Come on! Nobody can demand 30 hours extra a week from you in order to be world class.

    Then I had to realize, that nobody does. You don’t have to be world class, usually nobody wants that but maybe you or your spouse, whatever.

    Nobody really wants someone to be an Olympic champion but herself and maybe some others. (And lot when she reaches the final, but that doesn’t matter here.) But if she wants to be an OC, really wants to be one, she will dedicate her whole life to get that medal.

    Being a world class developer and an Olympic champion are not the same things. But still to be among the best ones is really demanding and probably it won’t make them feel comfortable either in their day to day struggles.

    The question is more like what do you want to be? One of the best developers or an above average, really good developer who has a life. For the first one, you cannot skip making serious sacrifices I think.

    For the latter one, I don’t think you need 30 hours extra. 10-15 probably, but 1-2 hours a day might be acceptable if you are passionate about your profession. (If not, change professions!) And you can get some of that time at your job.

    Here is my two cents on this. Most of the companies do not care how much time you spend on achieving the goals you receive, especially if that time is less than they expect – of course you don’t have to wave your hands that you’ve delivered something much before. Just a bit before. Then you’re still one the rare guys who were on time (or in advance or just a bit late – what is the real expectation?), but you gain some extra time to invest in yourself. And if you invest it well, with your next tasks you’ll be even faster, so you can gain more extra time to learn, to try new patterns, etc. (Of course at some point you cannot be faster.)

    What do you think?

    1. Globally I agree, my point was more about “not feeling guilty” to take some good time, even if you want to be a good developper.
      Mainly because for me, a good developer needs empathy, and its harder to be empathic without a personal life.
      But as you said, the question is “what do you want to be”? Whatever the path you follow, do it because you feel it’s the good one, not because you think “you have to” for some social pressure reason or whatever.

Leave a Reply

Your email address will not be published. Required fields are marked *