Are you a stream-aligned team?
The following questions should be asked to determine if you have a stream-aligned team:
Does your team aim to produce a steady flow of features?
Mature teams release multiple times per week, and in some cases, multiple times per day. In pursuit of this goal, mature teams should use continuous integration and continuous delivery (CI/CD) to ship features frequently.
Is your team quick to change direction based on feedback (customer or internal) from the latest changes?
It’s often best to use an experimental approach to product evolution. Mature DevOps processes include automated testing to ensure quality code shipments. Yet experimentation goes beyond simple unit or acceptance tests. You can ensure that your products deliver the most value to customers by using feature flags to automate roll-outs to a subset of users, alpha and beta releases to solicit and measure user feedback and behavior, and qualitative continuous feedback via comments, support tickets, and community forums.
Does your team have minimal hand-offs of work to other teams?
This should be true in two ways. Your team should be self-contained and work should happen with immediate teammates to ensure fast delivery. Beyond work scope, minimal hand-offs can also take the form of automated processes. Automating your development cycle ensures that moving things along is a seamless process, regardless if the next step is an action like an automated test or merge to master, or an actual human.
Bonus points if….
Does your team have time to address code quality changes (a.k.a. “tech debt”) to ensure changes are safe and easy?
Mature teams rely on trunk-based development and CI/CD practices to maintain their codebase. Capacity planning should include dedicated time to address tech debt. Plus, large-scale projects that address underlying infrastructure or platform issues should receive as much attention as feature development.
Is your team evaluated by the right metrics?
Beyond how fast your team ships, it should also consider team-health and technical quality metrics in their measures of success.
Regarding the last question around measurement, DevOps teams have traditionally considered the four key DevOps Research and Assessment (DORA) metrics in their definition of “success”:
- Deployment frequency - How often an organization successfully releases to production
- Lead time for changes - The amount of time it takes a commit to get into production
- Change failure rate - The percentage of deployments that cause a failure in production
- Time to restore service - How long it takes an organization to recover from a failure in production
In addition to these metrics specified by DORA, Atlassian found that high-performing, stream-aligned teams also monitor these attributes:
- Balanced team - Your team has a diverse set of skills and perspectives
- Full-time owner - A full-time owner ensures that the nuclear team and cross-functional participants know who to ask questions to and how to make decisions related to projects owned by the team
- Shared understanding - There is a shared understanding of the requirements, along with the definition for values and metrics for success
- A focus on value and metrics - Your team has north stars that guide which tasks to tackle in order to move projects to release
- Proof-of-concept - Having a real artifact to spar and test assumptions with helps a team constantly iterate and improve
- Managed dependencies to maintain velocity - Understanding managed dependencies keeps blockers at bay and helps the team maintain velocity