Leadership

Best Practices for Coaching Software Engineers

by Viktor Mitrevski

8 min read

Every senior software engineer can name one or several senior engineers who made a significant impact on their career by coaching them on a particular skill. But, have you ever wondered why, even in today's information world congested with online resources like courses, videos, and code samples, senior software engineers often credit coaches for impacting their careers?

The answer is simple: the coach can share their real-life experiences, provide guidance and motivation, track progress, and offer continuous, direct feedback, things that we can’t usually find online. 

That’s why, in the following sections, we'll dive into the best practices for coaching software engineers.

What Is Coaching?

Before we begin, let's define what coaching for software engineers includes. Coaching is a collaborative process where the coach supports and guides software engineers to unlock their full potential, make progress in some particular set of skills, and help them achieve their professional goals. 

The coaching activities usually involve providing guidance, sharing personal experience, active listening, giving particular tasks, and offering feedback. They can range from technical skill development to leadership and soft skills improvement. 

Why is Coaching Important?

Generally, coaching is a mutually beneficial partnership that delivers valuable benefits for both sides involved in the process.

The list of common benefits for engineers is long, but here are the most important ones:

  • Tailored-made development plan: Since every software engineer is different and has varying starting skills, the coaching process is tailored to the engineer’s needs and goals. This approach makes the coaching very unique and efficient. 
  • Real-life experience: While books and courses provide general guidance and one-size-fits-all approaches, personalized coaching provides experiences from real-life scenarios and solutions to problems. The coach likely devoted many hours and days in the past to solving these specific issues, which the engineer now receives in a concise form.
  • Constant feedback: When we are trying to improve some skill and achieve some goal, constant feedback is crucial so that we are sure that we are on the right track. A good coach always provides that.
  • Empowered learning: Coaches empower engineers to take ownership of their learning journey. They encourage critical thinking and problem-solving skills.

As mentioned above, coaching is a two-way street when it comes to benefits from the whole process. Coaching younger engineers is personally satisfying for every experienced professional. The opportunity to share and spread the knowledge gained from years and years of experience and to help others is very rewarding for the coach as well.

Coaching offers the coach a chance to solidify their knowledge, organize it effectively, and document it. On top of it, teaching and explaining concepts allows the coaches to stay up to date with the latest industry trends.

Best Practices

Now that we understand what coaching software engineers involves and why it is beneficial, let's dig into the best practices and explore how coaches can structure the entire process.

Set Processes and Manage Expectations

Every coach has their coaching style and every engineer has a different personality. That’s why it is really important to set expectations on both ends before the process starts and to establish a way of working that will fit both ends. 

This step also involves clearly defining the coach's role and responsibilities, establishing communication channels and frequency, and how feedback will be delivered. Transparency is key in this step!

The engineer should understand that challenging questions and feedback are for growth, not criticism. The coach is there to help them reach their goals.

Make an Initial Assessment and Set Goals

Each coaching process should start with a detailed assessment. This step involves understanding the experience level of the engineer, current skill set, learning style, and career goals and aspirations. During this step, the coach can use several different tools like questionnaires for self-evaluation, discussions about past experiences and projects, and technical assessments and exercises. 

The results of this internal assessment are very valuable for the coach. With this data, the coach gets insight into the engineer’s current starting point and can tailor the coaching approach based on the current skills of the engineer. 

Then, together the coach and the engineer should work collaboratively on setting goals that need to be clearly defined and achievable. The input and the contribution of the engineer are very important in this step and can result in commitment, ownership, and motivation to work towards the set goals.

SMART Goals

To ensure that both the coach and the engineer are on the same page and can track progress effectively, it is recommended to use the SMART goal-setting approach, which is widely accepted and used. SMART stands for Specific, Measurable, Achievable, Relevant, and Time-bound. This method will set challenging yet achievable goals that will maximize the benefits of the coaching process and will allow for celebrating wins and successes. 

During this process, the coach will collaborate with the engineer to break down broader goals into smaller milestones. These milestones act as checkpoints, allowing the coach to measure progress, make adjustments as needed, and celebrate your achievements along the way.

Success Metrics

Defining clear success metrics for coaching helps track progress and measure the impact of the actual coaching process. This allows the coach to modify and adapt the coaching sessions and celebrate achievements.

Track Progress and Provide Feedback

Just as with every other process where we are trying to achieve some goals, the coaching journey for software engineers thrives on consistent tracking of progress and providing feedback. This will help the engineer stay focused on the goals and identify areas and goals that need to be adjusted or modified. It will also allow for celebrating milestones and small wins.

Tracking the progress depends on the goal itself and the way it was set up, but generally speaking, the progress can be measured based on the success criteria and metrics set up in the previous step. This process will give a good indicator of the status of the goal and its progress and will provide the steps and measures to take if something is not up to date.

Regular feedback sessions are crucial for analyzing progress and providing valuable insights. The feedback should include both positive reinforcement and constructive to be improved feedback. The coach should create a safe space for open communication, where the engineer feels comfortable discussing challenges, successes, and areas where they might need additional support. Feedback should be specific, actionable, and delivered constructively, focusing on the engineer's strengths while also highlighting potential areas for improvement.

Practical Work

Although theoretical knowledge is important, the real growth of the engineer can come from experiences, projects, and practical work. Coaches must provide growth opportunities to the engineers they are coaching by introducing practical tasks and projects, especially ones that the engineers can use in their company or for their daily work. This type of growth provides motivation and enhances the chance of successful coaching.

Share Real Experiences and Learnings

Sharing real experiences and lessons learned during the coaching process can bridge the gap between theory and practice. It is a good chance for the engineers to see how the concepts they are learning play out in real situations, making learning more relevant and practical. It is especially important to share what has been learned from all past failures and successes. 

Using this approach, the engineers who are being coached can potentially avoid making the same mistakes and gain knowledge about useful problem-solving techniques that can work for certain challenges.  

This approach also promotes a sense of community and shared knowledge not just with the engineers being coached, but generally in the software engineering community where engineers can learn from each other's experiences.

Celebrate Success and Small Wins 

Last but not least, it is important to celebrate hitting milestones and small wins during the whole process. Software engineers who are part of the coaching process deserve recognition during the process and these small wins and achievements are to be acknowledged and celebrated. 

To Sum Up

Coaching is a valuable process that can have a huge impact on the careers of younger software engineers. Effective coaching involves setting clear goals and expectations, providing timely and direct feedback, identifying knowledge gaps, supporting career goals, and celebrating successes and achievements. 

By following these best practices, software engineers can improve their skills, work more effectively, and remain engaged and motivated.

FAQs

Q: How can a coach effectively manage time during coaching sessions?
A coach can effectively manage time during coaching sessions by setting a clear agenda, prioritizing topics based on importance, allocating specific time slots for each segment, and using timers to keep track. This approach ensures comprehensive coverage of key areas while maintaining focus and efficiency.
Q: What tools can be used for tracking progress and setting goals?
Tools for tracking progress and setting goals include Trello for task management, JIRA for project tracking, and Asana for workflow management. These tools help in organizing tasks, setting milestones, and monitoring progress toward achieving set goals efficiently.
Q: How does coaching change when dealing with remote teams?
Coaching remote teams requires leveraging digital communication tools for meetings and collaboration, emphasizing clear written communication, and setting up regular check-ins to maintain engagement and ensure progress on goals. It also involves adapting strategies to cater to different time zones and cultural differences to keep the team cohesive and motivated.
Viktor Mitrevski
Viktor Mitrevski
Senior Engineering Leader and Technical Advisor

Victor is a highly motivated engineering leader with a strong passion for building, scaling, and mentoring engineering teams. With over 16 years of experience, he has progressed through various software engineering leadership roles, overseeing teams of 40 to 120 engineers distributed across multiple countries.

Expertise
  • Software Architecture
  • Technical Advisory
  • Leadership
  • Planning
  • Organization Design
  • Agile Methodologies
  • KPIs
  • Engineering Management
  • Technical Consulting
  • +4

Ready to start?

Get in touch or schedule a call.