Homogenized Team skills for Continuous Delivery

Continuous Delivery and Trust

The first Agile principle states that ” Our highest priority is to satisfy the customer through an early and continuous delivery of valuable software”  This means that delivery needs to be early and also continuous. Since it is value that makes a difference to the customer, early would imply delivering  value as soon as it is ready; besides, this value has to be delivered  at regular intervals to make it continuous.

Early delivery ensures that we align with the customer needs and provides us the ability to change it if needed as the value evolves. Making it continuous builds customer trust.

How does continuous delivery build the trust? And  How can team deliver continuously especially from the collective Team Skills perspective?

Building Trust

Agile deliveries being iterative, the customer expects value at the end of every iteration.  Time and resources being fixed, it is the scope that can be varied in an iteration. If some feature that the customer expects at the end of an iteration is delayed for some reason, the probability that it will be delivered in the following iteration is high. Given that the  iteration intervals are constant, the customer is willing to wait for the next iteration as the amount of delay is predictable; the team has been delivering value all the while, after all.  Thus continuous delivery of value builds the customer trust in the team.

Let us take a couple of examples to illustrate this.

We know that Metro train operates at regular frequencies. Metro users, if they miss a train at a planned time, there is less worry. The next Metro arrival being predictable, the impact can be assessed and there is less worry. Here the passenger has developed the trust with the Metro on service.

On the other hand, lack of continuous delivery destabilizes the system and the confidence is lost.

Our heart beats at regular intervals and keeps organs with properly pumped blood; the Sinus node regulates the heart beats. If the  Sinus node malfunctions then the heart beats too slow or too fast causing  problems associated with the human body. And we loose trust in our health.

This concept of heartbeat or the “Takt”  is used in Toyota Manufacturing systems. Automobiles are produced at regular time intervals or beats (takt) , which helps to eliminate delays within the system. Thus delivery happens continuously by optimizing the end to end delivery which should be rhythmic.

Continuous delivery of Value

Value is created in software through a process of understanding customer needs, building solutions, delivering and releasing it when customer wants it. In order this to be continuous each one of these steps need to be continuous. Often when we say continuous delivery, we are talking more on the automation, tools and agile construct to eliminate delays in each of the above steps. If we see a little deeper, we realize that since the team delivers the value, the team dynamics, their commitment levels and their skills are factors which make a big impact.

Agile teams are expected to eliminate delays by having end to end skills for delivery. While teams can be created, the individual team members tend to work in pockets due to this very aspect causing delays. In this article, I wish to focus only on the Team skills aspect as this seems to be often hidden and requires sustained effort to strengthen.

How do team skills impact continuous delivery?  How can we address it?

 How a competent team delivers value continuously

Agile teams have varied skills. If the skills vary wildly within the team, then at each stage of value add, there is a hand-off. Each hand-off means a delay and some uncertainty. The probability of consistent delivery falls off rapidly. More often in the real world, teams are transitioning from conventional models to Agile models and hence there is always high skill variations in the team causing the skill islands within the team. If we need to bring out multi-skilling to remove these variations, we need to start working towards the desired state. Eventually most gaps get closed. How can have all team players be all-rounders?

Homogenize the skills

Practices such as pair-programming, swarming, knowledge sharing – all these build the overall competency to the team and helps in homogenizing the skills and also levelling the load. Levelling the load ensures that work does not wait for a skill and there is no delay in delivery. Besides the team velocity is stable and sustainable.

One method, which I have tried out is using the skill inventory approach. This is just applying the practice better at the team level to have a more focused approach.

The steps to do this are

  1. Brain storm as a team to know what skills are needed to deliver continuous value. Prepare the inventory.
  2. Determine the critical skills to eliminate delays in the end-to-end flow
  3. Ask individuals to rate their skill levels against the inventory.
  4. Action plan to improve individual skills during every quarter by shadowing at regular intervals with the higher skill person.
  5. Action plan to be prepared by team members for themselves. Scrum Master facilitates.

Over a period of time, the team would be more cohesive in skills and delays within the team get greatly reduced ensuring continuous delivery. There will be less of “bear with us until next time”!

What do you think?

What to read next