Individuals and interactions over processes and tools
The objective here is not to eliminate processes and tools, as processes and tools play a significant role in highly productive agile environments, such as DevOps environments. The objective here is to improve clarity, cooperation, and understanding within the value stream. Teams will want to look at how they can enhance the quality of interactions within the team and with those who aid the team in fulfilling its assignments and bringing value to the organization.
Ways to enhance interactions with individuals:
- Confirm understanding of what is wanted.
- Take time to talk and visit with each other
- Collaborate to solve problems and identify opportunities.
- Work together to build relationships of trust and understanding.
- Talk together to understand not just what is wanted but:
o Why is it wanted?
o How will it bring value to the users and beyond?
o Who are the upstream suppliers, and what do they deliver?
o What are the challenges and constraints within their supply/delivery chain?
Working software over comprehensive documentation
The objective here is not to eliminate documentation but to ensure that the customer’s needs are met. Meeting customers’ needs are best achieved through regular ongoing discussions and short-feedback-loops sessions. Written documentation is great to support a discussion but should not replace regular ongoing discussions and short feedback loops. The team members will want to ensure they meet the customers’ needs.
Ways to ensure that the customer’s needs are met:
- Use documentation such as a BRD (business requirements document) to begin conversations within the value stream.
- Hold regular short feedback loop sessions with the customer and other stakeholders.
- Use a short living document like a Feature Vision Document to record constraints, assumptions, questions, dependencies, and findings from ongoing conversations.
- Include customers and stakeholders in story mapping, refinement, and planning sessions.
- Customer collaboration over contract negotiation
The objective here is not to eliminate contracts or service level agreements but to work with the customer through ongoing collaboration and feedback sessions to deliver the maximum value in the shortest time possible in an iterative fashion. The team members will want to break the work into small useable components that are prioritized based on value so that they can focus on delivering the maximum value in the shortest time possible. The value may initially be knowledge-based before it switches to market-based value.
Ways to maximize business value:
- Identify what is motivating the customer.
- Identify the product’s bottom-line business value.
- Identify the product’s future vision.
Identify how others will interact with the product, including the upstream contributors and downstream consumers.
- Provide feedback on possible options, if applicable.
- Identify the path that will enable maximum concurrent demonstrable components.
- Identify and prioritize small useable components-based value.
Responding to change over following a plan
The objective here is not to eliminate a production plan but to deliver the maximum value as quickly as possible. In agile, planning is critical and ongoing, with most agile plans being tied to fix dates. Most agile plans, by design, are continuously being revised as requirements are refined, priorities are adjusted, and situations change. Thanks to the fluid nature of agile planning and the use of iterative batches, teams often begin developing before all the requirements are known and then change requirements on the fly without the defects, late deliveries, missed customer expectations, and budget overruns that plan-driven development often encounters.
Ways to respond to changes with minimal impact:
- Focus on continuously delivering the maximum value.
- Delivering the right solution through early planning, constant reviewing and revising, committing only at the last moment, and continuously delivering small demonstrable results.
- Develop with short-feedback-loops.
- Use mid-range release plans.
- Keep two to three sprints of sprint-ready stories.
- Keep the team’s definition of ready for sprint current.
- Automate testing.
- Use a value-sizing process.
- Release code often.
- Practice transparency within the value stream