Learn to balance

Joshua Kerievsky, in his talk about Modern Agile, refers to how he taught his daughter to cycle. Cycling is not about pedalling. Instead, it is about balance. Watch the below video [for few minutes] on how Eva — Josh’s daughter — learned cycling.

[After watching one of his earlier talks, I used the same technique for my second daughter. It worked well.]

Wrong measurements

Every organisation wants to increase the speed at which one delivers the software. Individuals and teams want to increase the rate at which they churn out the code. The business wants to increase the speed in which they release features.

If we measure the wrong things, we get the wrong results. If the only focus is to reach the destination by a specific time, the path to reach there doesn’t matter. This focus ends up in violating the rules/guidelines. One may take many shortcuts to reach there which may not be safe.

Once you reach a destination at a certain speed, then the same becomes the baseline. And the expectation is to improve it further which means taking more shortcuts.

And the next question is, can you sustain that speed? Is it reliable on that speed? How safe is it?

It’s not the speed that matters alone. Instead, reach more destinations in a safer, sustainable and reliable manner. There is no meaning in measuring speed without measuring consistency.

Agility matters

In software development too, learning to balance is more important. Agility is about quick adaptation and faster learnings. And Continuous Delivery, if done right, gives the same. The focus is never on speed. Instead, it is on continuous, reliable, sustainable deployments.

The key for agility is resiliency — quick adaptation to changing environments. Continuous Delivery is about small, but reversible, steps and repeatedly doing the same sustainably and reliably. Resilience is critical here. If something goes wrong how quickly the system can come back to the normal state.

Resiliency is not only about production systems. It is also about how a team adapts to the changes depending on the learnings from the market. Those teams practice evolutionary architecture and emergent design to become resilient and agile.

It is about continuous improvement. For both the software and the process of delivering software. And it is a never-ending journey. Focus on flow instead of speed. Surprisingly the speed improves.