This Computer Weekly Developer Network series is devoted to examining the leading trends that go towards defining the shape of modern software application development.
As we have initially discussed here, with so many new platform-level changes now playing out across the technology landscape, how should we think about the cloud-native, open-compliant, mobile-first, Agile-enriched, AI-fuelled, bot-filled world of coding and how do these forces now come together to create the new world of modern programming?
Torvekar writes as follows…|
How do you build the super high-performing software engineering team of the future?
Several software engineering leaders and managers have been searching for the answer to this question for a long time now. So how do we break down the mechanics of the conundrum in front of us here and look to the future for modern development?
Software development as an industry and discipline continues to is evolve rapidly. Usually, there are multiple techniques for solving the same problem and it is done through various technologies and programming languages in numerous different ways.
Managers face a unique challenge – how to define the actual ‘performance’ of your team? Is it a measure of the time they spent on coding? Is it the number of lines of code they write? Or is it the value that they deliver to the customers and end-users?
We have found a few commonalities that go some way to answering the question and so this is an overview of the KPIs and metrics that engineering managers focus.
Important metrics for engineering managers:
- Lead time – the time between code committed and code deployed on production
- Deployment frequency – frequency of deployments to production
- Mean time to restore – the time between reporting an error in production and getting it fixed
- Change fail percentage – the percentage of hotfixes, rollbacks and patches on production
- Velocity – the value delivered to customers over time.
- Stability – the uptime and redundancy in a software system
- Organisational culture – The underlying beliefs and values within an organisation
Before we go into the details of the above metrics and discuss how and where they can be applied, it is essential to note that these are mainly in the context of agile teams and organisations.
The first four metrics mentioned above are applicable and pertinent to organisations of all sizes, right from small startups to large multinational corporations having hundreds of thousands of developers. These metrics, taken together, tell us that speedy delivery and deployment does not always come at the cost of uptime and the quality of code in software systems.
You can achieve this by adopting the latest CI/CD processes in your DevOps systems. The organisations which practice Continuous Integration and Continuous Delivery have seen significant improvements in their speed of delivery and stability.
The next metric, velocity talks about the value delivered to your customers over time. It speaks about the impact of your software development teams’ efforts on the bottom line of your business. Measuring velocity and impact together is essential. How can you compare the ‘impact’ of a team which has written software that is generating about USD 500,000 in revenue versus a team that has written software used by billions of people worldwide?
A great example of this is WhatsApp, which had only about 20 engineers when they sold the company to Facebook. Along with velocity, for some organisations, it is also essential to measure the stability of the system. Stability is especially important in organisations in the Fintech and payments space, which are highly regulated, where they cannot afford any downtime at all.
Along with these metrics, which measure the ‘hard’ aspects of software delivery, another important aspect is the organisational culture. The book “Accelerate: The Science of Lean Software and DevOps!” mentions that the productivity of a team, and an organisation, is correlated with the organisational culture. A culture that engenders free information flow and whereby the employees have the freedom to try and fail… and where they can focus on their work instead of interpersonal issues and office politics increases the productivity of a team.
When we interviewed the engineering managers, almost all of them emphasised the need to create an atmosphere of trust and autonomy in a team. Through this, the engineers themselves become more accountable for their work, thus taking more ownership for the features that they are shipping.
Into the soft zone
Another interesting aspect that we found while speaking to engineering managers was that, as the processes and the software stack in their organisations matures, they tend to move away from solely measuring the hard aspects of software engineering, like velocity, delivery, stability. Instead, they start focusing more on the soft elements like the happiness of their team, their mental wellbeing and their autonomy.
In some companies like these, the Continuous Delivery processes themselves become so robust that they leave very little room for manual errors and omissions.
In conclusion, we have found out that teams who are in their journey towards becoming the best in class should focus on increasing the velocity, lead time and decreasing the change fail, and time to restore. At the same time, they also need to start focusing on various aspects of organisational culture and make it a cornerstone of how they gauge the performance of their teams.
References and notations – the following sources inspired this article:
- The talk by Brian Zotter, VP of Engineering at Medium which you can find here
- The book “Accelerate: The Science of Lean Software and DevOps!” Which you can find here
- The “State of the DevOps 2019” report which you can find here
- Interviews and chats with about 32 engineering leaders across Europe and SouthEast Asia