Tales about Aviation, Coaching, Farming, Software Development

Coaching future masters

June 3, 2011

Software development is a team sport. The usual roles of customer, business analyst, tester, programmer need to work closely together and collaborate with each other to win the game. If there is any kind of information silo building up, the result will be cost overruns and software that may not be fit for the purpose it was intended to be used for.

From journeyman to master

Most employees in companies doing software development to some degree can be considered as being on the knowledge level of journeyman from a European perspective. The same knowledge level is also known as the Ha level in Japanese martial arts. In both cases the person knows how to perform well using basic techniques and is now about to learn more from other masters to perfect his ability to deliver good and above average results.

Retain a coach

By retaining a coach those employees on the journeyman or Ha level can evolve into becoming true masters of the craft that software development is.

The benefit for their employer is that these new masters can now create smarter software that will provide the company a competitive advantage in any fast moving marketplace.

A good coach works to make himself obsolete. The coach should not become a part of the team but instead his goal is to help others do a better job at what they are doing. That’s why it seems appropriate to structure the engagement of a coach similar to the flight of an airplane.

Takeoff

Setting full power on the runway will get the airplane into the air. From the outside taking off seems fairly simple but then, if one looks at accident statistics, there are many bad things that can happen during takeoff. It’s the little things that set the stage for success or a soon to happen disaster.

A coach can provide some intensive initial training and orientation for the whole team as well for specific roles to make sure that everybody has the same understanding of the techniques that will be used. With the help of the coach the team can build very early on a walking skeleton. This is a technique that ensures early and rapid feedback for stakeholders who are usually appreciate that a lot. This is also a good opportunity to evaluate the true strengths of the team and devise some corrective action as early as possible.

There are many more things on the technical and infrastructure level that can be set up or fixed by having someone experienced in the craft available. With all these little details (source control, continuous integration, test systems, test data - just to same a few) out of the way taking off and entering level flight should be smoother.

Level flight

It can be expected that due to the relative immaturity of many team members there will be issues. Just as in the case of an airplane flight there will be some bumps here and there and even some heavier turbulence.

Having a coach on board allows to know about these issues ahead of time. The long-term experience of the coach acts like the weather RADAR in an airplane that detects turbulence miles ahead in the flight path. The coach will know what kind of problem is likely to show up and can provide advice and help to correct the issue before it turns into a major problem.

Landing

Airplanes land at their destination and after arriving at the gate the engines are shut down and the flight is over. But before that landing the plane safely has to be mastered. Landing a plane is equally as dangerous as taking off. Accidents occur more frequently during landing due to the fact that the pilots are usually more tired and worn out after a long flight and that tends to lead to mistakes that can be fatal.

The goal of all software projects is to put the new software into production or ship it to customers. A lot of the pain usually experienced during this phase in the life of a new software can be avoided by making the right choices early on and - most importantly - to deploy to production or a production like test system as soon as possible and as frequently as possible. Good teams deploy useful software the first time after a week or two.

Ultimate goal of a coach: make himself obsolete

The goal in every coaching engagement for the coach is to make himself obsolete. First there is a phase where the team’s skills need major uplift. Then the coach helps to master situations and avoid the little bumps here and there.

After a while the coach will leave the team alone to see whether they are ready to fly solo and master situations on their own. It may not work the first time and so the coach helps the team to improve based on the recent experience. History has proven that the best way to learn is from failure. So that is precisely what happens.

More and more the team will be able to master more and more challenges and that’s when the coaching engagement will start to wind down and eventually stops.