It’s the question no one can seem to answer: How do engineering teams actually become high-performing?
We’ve talked with hundreds of different engineering organizations in last couple of years, and when it comes to high performance, the conversation often mentions DORA metrics. DORA metrics can be a starting point and tell us how many times an “elite” engineering team is releasing per day. But how do teams actually become high-performing?
As César Lugo, who leads Engineering Intelligence at Typeform, put it:
“I think the industry’s slowly coming to realize that’s not enough to guide an engineering organization, because they tell us about common characteristics of a high-performing organization but not how they made their journey to get there. So we need to provide teams with more leading indicators on how you can get there. Otherwise, you’re just telling them, ‘Be better.’” - Developing Leadership Podcast
We’ve seen high-perfoming organizations enable their teams to do three things repeatedly: uncover insights, drive improvement, and demonstrate their impact.
In this article, we will dig deeper into the how of becoming “better” by exploring what goes into each of these elements, and what you should watch out for as you navigate the process.
Uncover insights
1. Understand your status quo
The first thing you want to do is to understand where you stand in terms of velocity. But knowing your daily release frequency is not enough. You need to understand the leading indicators.
PR Cycle Time (the time it takes your team to complete a Pull Request from initial commit to deployment) is typically a great way to start,
but you need to be able to break it down into all the different steps of your software delivery cycle. We recommend looking at your:
- WIP Time or Coding Time
- Review Time
- Merge Time
- Release Time
- And Deploy Time
2. Identify bottlenecks and potential improvements
Once you know where you stand and can see historical data, you can start to identify trends over time and identify bottlenecks in your software delivery. Did your Release Time increase over the last couple of months? Are Pull Requests taking longer to review on a specific repository? Is your Release Frequency increasing for just a specific team?
Drive improvement
3. Set goals
Once you understood what your areas of improvement are, the journey doesn’t stop there.
You won’t improve if you don’t set a specific goal. When setting goals, it is important to set SMART goals: Specific, Measurable, Achievable, Relevant, and Time-Bound.
Focus on the 2-3 things that you want to improve and set goals on leading indicators that you and the team can actually impact.
4. Track progress
Work with your team to define concrete measures to improve the goal and track your progress over time. Athenian customers typically track their progress on a weekly basis.
Demonstrate impact
5. Report on your impact
Report on the impact your team or organization has had on your business goals. Measure org-wide impact of your initiatives on team performance.
6. Align engineering with business priorities
“The goal is to get stuff into customer’s hands, and our goal is to get it into customer’s hands as quickly as possible, as safely as possible with as little bugs, as high quality as possible. That’s actually what we’re trying to do” - Jason Warner on the Developing Leadership Podcast
Align your engineering initiatives with business goals and track how you’re allocating resources.
A couple of key things to remember about this continuous improvement process:
- Your role as an engineering leader is to empower all your teams to adopt this continuous improvement process autonomously
- Context matters. It’s not because DORA says that a high-performing team releases 10x a day that this is applicable to your org or to every team. Again, enable your Team Leads and Engineering Managers to improve based on their own context.