3 minutes read

Building Better Software Developers

At Digicorp, we believe “growth and learning is life” and that’s why this is one of our core values. We recently started following a process to monitor and grow skills of our team members. Part of that process is a weekly meeting called “Monitor and Grow”. During one such meeting recently, we did an exercise and shared some interesting insights with our team members for growing their skills.

The meeting was attended by our level-2 leader, level-3 leader and three level-4 developers. For privacy reasons, let’s call them Josh, Sam and Billy, Chris, Joe respectively. To begin with, we asked Sam, who is working directly with team members Billy, Chris & Joe to list down what tasks they had performed in last couple of days. Sam listed down few features completed and bugs fixed in a project. Next, we discussed about qualities of each individual developers Billy, Chris & Joe.

Following is what we learned about Chris.

Positives

  • Chris Writes manageable and reusable code
  • Chris Follows standard naming conventions

Improvements

  • Chris does not write comments in his code
  • Chris writes messaging constants in “Constants.js” file as opposed to “Messages.js” file.

Based on this, we decided that Sam should achieve following in order to improve Chris’s skills.

  • Chris must writes messaging constants in Messages.js and comments for this code.
  • Billy has to write manageable/reusable functions like Chris.
  • Chris should learn to write pseudo code for complex logic like Sam.

Each of the above point corresponds to unique goal we want our team member to achieve.  Let us understand what they are.

Improve your own work. – Grow

Based on the outcomes above, this becomes goal for Chris. Sam will ensure that Chris achieves this. Following is how this will happen.

  • Sam will explain Chris why messaging constants should be written in Messaging.js and importance of it.
  • Sam will make a note of this in Chris’s assessment spreadsheet called “Monitor and Grow”.
  • Sam will monitor Chris’s work regularly and correct him if required. Sam will give his feedback to Chris and understand why Chris is repeating his mistakes. He will also make a note of each such instances.
  • If Chris continuously fails to improve over a period of time, Sam will mark this as assessment data point for Chris.
  • When Chris starts improving, Sam will appreciate the effort and ensure that Chris keeps improving.

Improving other team member – Groom

Based on the outcomes above, this becomes goal for Billy and Sam will ensure that Billy achieves this. Following is how this will happen.

  • When Sam plans next task for Billy, he will do a joint meeting with Billy &  Chris and explain the task.
  • Sam will ask Chris how would he work on that task, if he were to complete it.
  • Sam will write pseudo code for the functions described by Chris.
  • Sam will ask Billy to write the actual code.
  • Sam will ask Chris to review the code and check if functions are written in manageable/reusable way.
  • For next task, Sam will ask Chris to write pseudo code and review it before Billy writes actual code.
  • For future tasks, Sam will ask Billy to define functions before writing code. Chris will review the same.

To summarize, we explained Billy & Chris how they can improve their skills and how Sam can make his team members become better software developers. Following are some important lessons to be learned from this exercise.

In order to groom someone, you need to make them think like you by involving them in your thought process.

  • Every team member requires different growth path and needs personalized mentoring.
  • Leader can transfer skills of one team member to the other and help them grow each other. In the example above, Sam helped Billy learn writing small functions with the help of Billy. This way Sam won’t have to personally grow anyone. Team members can grow each other!
  • This promotes a collaborative and continuous growth oriented culture whereby each person not only grows himself but also grows others in their area of expertise.
  • To grow someone, one needs to show the way for the other to grow. In example above, Sam explained Chris how to write pseudo code and asked him to write actual code. This helps Chris write pseudo-code on his own for his future work.

Realizing the importance of building a culture around continuous growth, this process of grooming was implemented by our VP of operations, Dr. Hamid Petiwala. I have just given words to his thoughts here. Not only this has helped us groom our developers, it has improved quality of our work significantly. We have implemented this process in couple of teams at Digicorp and results are astounding.

I hope this helps others, like it did for us. How do you groom team members at your organization? I would love to learn and discuss. Do share your comments.

Kuntal

Kuntal started his career as a software engineer, a tech lead and a project manager, then transforming himself into product manager by working on large-scale enterprise products. Currently Kuntal is working in the leadership role at Digicorp. His responsibilities include passing vision to all the stakeholders, putting right people at the right place and make sure we have enough money in the bank.

  • Posted on April 11, 2016

Kuntal started his career as a software engineer, a tech lead and a project manager, then transforming himself into product manager by working on large-scale enterprise products. Currently Kuntal is working in the leadership role at Digicorp. His responsibilities include passing vision to all the stakeholders, putting right people at the right place and make sure we have enough money in the bank.

Stay In Touch - Digicorp

Stay in Touch!

Get Our Case Studies, Newsletters, Blogs and Infographics Directly into Your Inbox