Software: Balancing Learning & Client Work
Should we learn by reading or by doing? How do we balance our learning time with client work?
What’s the best way to learn:
Should we learn by reading?
Should we learn by doing?
Or should it be a mix?
How should we balance our time for self-improvement compared to time spent on client work?
Question
Jason asked a good question about learning approaches (which I answered during Live Q&A 19th Feb):
How do you balance learning about *how* to create software (i.e. what you're writing about), and *creating* software (i.e. building with the sandbox project). As I help my clients with these topics and other things, it seems I have less and less time "in the trenches"
📢 My next Live Q&A Session about Unit Tests is on Wed 30th April 17:00. If you’re an Optivem Journal paid member, get your 100% discount ticket.
Upgrade to join the Live Q&A for free:
Answer
If we learn just by reading, then we might understand the principles, but we’ll be stuck when it comes to implementation. The problem is if we just learn by reading, and then we suggest to the team to implement some principle, then when the team is stuck and has questions, then we won’t know how to address that practical challenge.
If we learn just by doing (e.g. building our sandbox project) but without reading, then we might pick up some implementation details that our instructor is teaching us, but we’ll be missing the deeper underlying reasoning, and then when we encounter a new situation, we won’t know how to handle it in accordance with principles, since we don’t know the principles if we didn’t read about them.
That’s why we need a mix of both “reading“ (understanding principles) and “doing“ (applying principles).
The problem is, when we’re busy just with client work, we don’t have time for our own self-improvement, and then we stagnate, which means we become less valuable for our clients. This is what you need to do:
If you’re self-employed (e.g. coach/consultant/trainer), please ensure that you don’t take on 100% of your time to be booked for client work! Instead, I recommend that you reserve at least 20% of your time (or if you have enough earnings, even 50% of your time) on your own learning, to increase your expertise, and then you’ll also be able to deliver more value to your clients (and get correspondingly increased compensation)
If you’re a regular employee (e.g. developer, team lead), then I recommend that you talk to your Engineering Manager to reserve some company time for learning / self-improvement. If that is not possible in your company, then you can consider using your own personal time (though that comes with compromises, so I’ll leave it up to you)
This was my journey:
When I worked as a regular employee, and later as a hands-on contractor, my time was 100% spent on client work. As an employee, we didn’t really have much allocated time at the company for learning, so I used my own personal time after work. I read books, did trial-and-error learning, practiced on my GitHub, etc… This was of course a very time-consuming process (and that’s why I’m writing the Optivem Journal, to save you time)
Later, when I became an independent consultant/coach, during the first year, most of my time was just client work. As the years went by, I reduced client work, increased the percentage of time I allocate for my own growth, thus being able to offer higher expertise to clients (and have a higher competitive advantage)
📢 My next Live Q&A Session about Unit Tests is on Wed 30th April 17:00.
It’s so easy to get caught up in client work and put learning on the back burner. Love the idea of reserving 20-50% for growth!
Thank you for the wonderful answer! Yeah I'm starting to get some actually code down now! I appreciate the encouragement