I started playing Tennis under a coach recently. I had donned a coachee role after a long time and one of the first things that came to mind when it started was:
“The coach makes such a big difference. The individual attention and personal feedback and suggestions are helping immensely. Why don’t we have a coach for professional work?”
The ‘coachee’ experience triggered some perspectives —
It was a humbling (and fumbling) experience taking the first steps to a game I hadn’t played before. I really appreciated the patience shown by the coaches to correct the mistakes step by step until a stroke was improved.
It is easy to forget how difficult it was the first time once you gain a lot of experience and not show the same empathy when you become a mentor.
The coach seemed to know that you should not overwhelm someone with too much feedback and gave it incrementally and at the right time.
As a lead or mentor, it is our job is to give feedback to help someone improve. But the timing and tone are as important as the objectivity of the feedback.
The junior coach would sometimes keep repeating the same feedback to no avail at times — “bend your knees or turn your upper body more to play a shot. You need to get into position quickly so that you have enough time. You need to improve footwork”. The senior coach would watch and later prescribe warm-up routines and stretches to enhance flexibility and footwork or improve stamina.
As a mentor, you need to listen carefully and look at things from the perspective of the mentee — only then can you connect to the root cause and solve the problem effectively.
As a beginner in the game, I would initially try to quickly wrap up warm-up exercises so I could get to the court and start playing. However, I would notice senior players who would do 1 hour of intensive warm-up and exercise before even picking up the racquet. And when you saw them playing in the court later, it was clear why that prep work is essential.
True learning is not just about learning the latest cool framework but also having a deep understanding of how things work and the basics like data structures, algorithms, compiler construction — We might not need this 90% of the time but that 10% use case where you have to build an abstraction, these foundational skills make a huge difference.
I later remembered this article I had read many years back — “Top athletes and singers have coaches. Should you?” by Atul Gawande.
Now, a personal coach in the professional realm in software engineering might be a tall order. But luckily in this field, there are several ways one can get guidance when you cannot arrange a personal coach.
- Pair program with seniors in the team or company
- If your company has a mentorship program, take advantage of it and meet your mentor every month to discuss
- Read code from top quality open source projects. Contribute to open-source projects that you are interested in
- Follow experts in the area of your interest on Twitter — keep abreast of emerging trends
- Read foundational books — there are enough essential reading lists out there.
- Get online training — egghead, purelyfunctional.tv— lots of online classes where you can also interact with the trainer.
- Attend conferences, build a network of people you can rely on when in doubt.