Defining Good
AutoDeskImplementing Dual-Track Agile for Enhanced Collaboration at Autodesk
How adopting dual-track agile improved design and development collaboration at Autodesk, leading to better product outcomes.
You don't have to copy the slow, bureaucratic, waterfall ways-of-working to scale your software development.
Our current processes optimise the wrong areas
We lock in a scope before we validate whether customers really want it.
We invest in improving efficiency, but the biggest problem is handovers between areas.
Management layers and other administrators are growing twice as fast as operators.
ZeroBlockers prioritises effectiveness
It doesn't matter how efficiently you build something if it doesn't solve the right problem.
Toyota revolutionised manufacturing by improving how they worked. But it all started with the simple vision of "single-piece flow" and a culture of continuous improvement.
ZeroBlockers shares a similar vision for software development.
1 | ||
Improve effectiveness by empowering teams.
90% of features fail because we are trying to predict how people's behaviour will change. The truth is we can't know what works until we get it in front of customers.
Product development is a design challenge, not a build challenge.
The same team needs to talk to customers, understand their issues, design solutions, validate them and iterate towards products that customers love.
This means that teams need the authority to decide on the solutions they build to deliver the business outcomes they are responsible for.
Traditional Approach
Idea Generation | Sign Off | Delivery |
---|---|---|
Business | ManagementMgmt | IT |
ZeroBlockers
Idea Generation | Sign Off | Delivery |
---|---|---|
Empowered Stream Teams |
2 | ||
Improve efficiency by removing blocking dependencies
As companies scale so too do the dependencies between teams. We try to manage these dependencies with project managers, detailed plans, separation of responsibility, and more.And yet it keeps getting worse.
Dependencies can't be managed - they need to be removed.
On top of not working, our current approach has the side-effect of removing accountability. Since nobody owns the end-to-end process everyone focuses on their part and nobody takes accountability for outcomes.
Traditional Approach
Teams | Code | Path to Production |
---|---|---|
Stream A | Shared Code | Shared Path to Production |
Stream B | ||
Stream C |
ZeroBlockers
Teams | Code | Path to Production |
---|---|---|
Stream A | ||
Stream B | ||
Stream C |
The complexity is in the implementation
It is easy to say we should prioritise outcomes over outputs or that we need autonomous, empowered teams.
But it is really hard to do in practice.
We define the team structures, processes, alignment, funding and governance processes.
The framework is based on hundereds of case studies so you can be confident that it will work.
We help teams to do iterative rollouts, learning and adapting as they go.
1 | ||
Structure with scalable cross-functional teams
Scale without slowing down by creating different cross-functional team types at different product levels.
Ecosystem Team | ||||
---|---|---|---|---|
Product A | Product B | |||
Stream A | Stream B | Stream C | Stream 1 | Stream 2 |
2 | ||
Fund based on strategy
A stream team is limited by it's size. But the scope is variable.
By allocating a single high prority stream to a team, and multiple lower priority streams to other teams, we can effectively fund the teams according to the strategy.
Strategies change and teams may not perform as expected. By holding weekly business reviews Product Teams can identify issues with the performance of the Stream Teams early and take corrective action, which, in extreme cases, can include stopping funding.
Stream Team A
Value Stream A |
Stream Team B
Value Stream B | Value Stream C | Value Stream D |
Stream Team C
Value Stream X | Value Stream Y |
3 | ||
Align with purpose and context
If teams are empowered to make decisions they need to understand the context in which they are working because there are many ways to solve a problem.
Stream Teams need to understand the product vision, strategy and current objectives so that they can make decisions that are aligned with the business goals.
4 | ||
Govern on outcomes, not outputs
It doesn't matter how much we build. It only matters whether we hit our business goals.
But it's not fair to hold people accountable for outcomes if they don't control the inputs.
Once we have autonomous, empowered teams in place we can shift from tracking outputs to outcomes. Product teams agree the objectives with the Stream Teams and then track performance against those objectives.
Input Metrics
Hours
No correlation to outcomes
Output Metrics
Features
Most features fail to deliver value
Outcome Metrics
Customer Behaviour
The sweet spot
Impact Metrics
Revenue
Too lagging to provide feedback
5 | ||
Enable high performance by offloading low value work
Cross-functional teams can be inefficient because they need to repeat a lot of the same work. We can improve efficiency by offloading the repetitive, low value tasks.
Internal product teams such as Platform teams, Design System teams and even legal or HR, centralise some of the most common repeated tasks and free up Stream Teams to focus on higher value work.
In addition, we can create Enabling teams, such as ProductOps, DesignOps and DevEx, to identify areas where the Stream Teams can upskill and provide the tools and training to do so.
Product Team | |||||
---|---|---|---|---|---|
Stream A | Stream B | Stream C | |||
Platform | Design System | ||||
ProductOps | DesignOps | DevEx |
Companies implementing the principles of ZeroBlockers
ZeroBlockers is the result of a decade of research into how real companies are building better products in the real world.
Defining Good
AutoDeskImplementing Dual-Track Agile for Enhanced Collaboration at Autodesk
How adopting dual-track agile improved design and development collaboration at Autodesk, leading to better product outcomes.
Why change now?
AI has changed the game
Customers demands are increasing faster and AI is making software easier to build. If we don't start removing dependencies and blockers our increase in changes will grind the system to a halt.