There is a big industry out there on metrics and measurement for software (both for Process and Technical excellence). All the places we work, spend a lot of time in measuring multiple dimensions of software for the entire lifecycle of the product. Many try to see what is the “best practice” in the industry and put a wrapper on them to make their own metrics.I have been thinking for a while on what makes sense, and is there a silver bullet like the Grand Unified Theory.
While at it, it looks like we are trying to contain ourselves in one direction in as chaotic as a place of Software Product Development. Organizations tend to copy “what worked for them” without even caring for the constraints and conditions that the specific metric worked for them.
Then, what to measure? Its very contextual and organizations which have understood what and how much to measure for a product have survived and thrived. When they have multiple products, they have different lenses for each of them as well. Some products will need a lot of statistics and data while some may not need any!
And, how do you arrive at what to measure? For me the closest guiding one is 7th principle from Agile Manifesto “Working software is the primary measure of progress”. If you can define what is working software for you, it becomes easier to measure on the progress.
Looked in the context of teams working in an Agile environment, using Continuous Integration/Continuous Deployment (CI/CD) and DevOps, the following sequence would help the teams. Each Phases stated are further divided into Sub-Phases. The journey is looked from both Team and Management perspective.
Forming and Storming Phase
At the beginning when teams are starting, they go through multiple phases of un-learning and learning. This would be the place where the leadership need to put in a lot of effort to make sure that the right environment is provided to the teams and they start appreciating the new ways of working.
This phase is more leaned towards the processes as the teams needs education on Agile and the need for it. They would also undergo a series of experiments to select Scrum/Kanban/XP as their framework. The only metric for the management would be to make sure that the team copes-up the new unknown territory. They play a very crucial role of not getting into the path the team plans to take.
2. Start to Run
The team’s are now equipped with the new knowledge, and try to see what is in store for them. Introduce them to simple metric like Burndown Charts, Velocity to see the predictability of delivery. Assure them that these are for the consumption of the team, so as to manage themselves. The management need to seed the thought of “Self Management” to the teams and conversely they became aware of the new elevated roles they should play.
In this phase, teams start utilizing the metric they have learned, for their benefit. They strive to become more predictable on a daily basis. If you see this behavior, cherish the results and allow them to bask in the glory. The management has to take care of the Trust and Conflict part of the team and help them with the though of healthy conflicts and why they are necessary for a team to mature.
The team now gets into a stage where they have the knowledge necessary to perform, but have to create the understanding. While the team starts with experimentation, the management has to support the teams at this phase with coaching.
1. Failing Fast
The new freedom of Trust helps the teams to try out different ways of measuring themselves. This is the phase where teams toy with new ideas. Technical metrics come into picture here. The teams might start collecting data about Defects and their distribution, Test coverage, Code Coverage, Unit Testing, Automation etc. They will see that while few of the metric help them, few don’t serve any purpose. The management as coaches, should allow them to fail and retrospect.
2. Multi Learning
The failures help the team learn faster. They become increasingly aware of the factors that could help them. In this phase they start to learn about building a pipeline for them, which helps in faster feedback. They want to know the bad news as quickly as possible, so as to take the corrective actions. This might involve a CI/CD pipeline, DevOps culture, Technical Practices etc. The teams start becoming cross-functional at this stage learning a lot of new nuances of their craft. The management supports them by encouraging them to attend training/meet-ups and conferences to appreciate new concepts in the industry.
The team reaches their mature state. They understand the principles behind all the practices. The Knowledge turns into Understanding by way of continuously un-learning, learning and re-learning. The experimentation, feedback and delivery loops merge with each other seamlessly.
The team looks for opportunities in this phase. As they start to understand the principles, tools/technology becomes increasingly irrelevant for them. They explore towards building a Resilient systems. While this phase takes them to a completely unknown territory, management helps them by giving complete freedom for exploration. This will be an exciting phase for the team member, who strive to achieve.
2. Targeted Experimentation
The exploration takes the teams to a place of specific experiments for building resilient systems. The teams work on building leading indicators for themselves like Dashboards, Monitors, Alarms etc. They move from Reactive Way to Proactive Way helpingthe business, management, stakeholders and themselves. The management at this phase will have an opportunity to take the case to next set of teams. This team will set the tone for other teams in the organization in their journey towards excellence.
While the team has achieved a state of self realization and orchestrated delivery, they constantly look at marketplace demands. Kaizen, Improvement Kata etc. becomes their “work”. They are in a place of Relentless Improvement looking out for opportunities to enhance the Organization.
At this point control is subtly shifted from Management to these self-managing, self-directed, resilient and adaptable teams. The management works on the next set of challenges to take the enterprise to the next level.