A practice of managing and provisioning computing infrastructure through machine-readable code, rather than through manual configuration.
Systems are intentionally disrupted to test their resilience and the team's ability to respond effectively.
This involves various strategies and techniques to streamline the testing process, reduce execution time, and maintain high-quality software.
Remove the need for discussion and painful manual process that is time intensive for your team
Software changes are automatically built, tested, and deployed through a streamlined, automated pipeline
If a problem is detected in the pipeline, the entire process is halted immediately so that the issue can be addressed and fixed as quickly as possible.
Tests are written before the code, guiding the coding process and ensuring functionality.
Creating meaningful and actionable alerts and notifications to inform actions to be taken
This involves deploying the new version alongside the existing one (blue), running tests, and then switching traffic over to the new version (green) if everything is stable.
A practice to build in resilience into the system via deliberately injecting failures into a system in a controlled way
Get an overview of all your services and how they connect
Aggregate and manage logs from all services in one place.
SLAs and SLOs are used together to manage expectations and ensure service quality. SLAs set the expectation. SLOs are internal goals.
Ensure your application is understandable
Basic web app to return a message to determine minimal pipeline required to deploy and consume the app in a production environment
A small implementation of the system that performs basic end-to-end function, with a focus on continuous iterative evolution.
This emphasizes taking responsibility for the overall codebase, not just the specific functionality you're working on within a user story.
Merging small, frequent code updates directly into the main codebase (often called "trunk" or "main") instead of long-lived feature branches
Removing code that is no longer used or needed, enhancing the codebase's efficiency and maintainability.
Used within BDD, clarifies user stories with examples, ensuring everyone agrees on how the software should behave.
A checkpoint in a system designed to halt progress quickly if an issue is detected, preventing wasted effort on faulty code.
There are various ways and styles of pairing together, dependent upon the audience one maybe favoured over another.
Re-running existing tests to ensure software updates haven't broken previously working features. It's like a safety net to catch bugs introduced during changes.
This emphasizes integrating testing activities earlier in the development lifecycle to catch bugs and potential issues as soon as possible.
Good testing practices involve writing clear, independent, and measurable tests that target specific functionalities and contribute to overall software quality.
Giving data ownership and control for vendor independence
Proactively embedding security best practices into daily operations, tools, processes, and culture.
Make workshops engaging (and fast to make) with the 4C method
Distributing authority and responsibility across the team, rather than concentrating it solely with leaders.
Demonstrating product success and ensuring that efforts are aligned with business objectives.
Simple techniques on how to enact on feedback and ideas generated through a team retrospective.
Everyone in a team takes turns demonstrating and presenting
Rotating to facilitate different team role functions
Provide a clear, structured overview of an individual's strengths, weaknesses, opportunities, and threats.
Watch an expert, perform the task yourself, teach the task to someone else.
Provides transparency, facilitates communication, and aids in decision-making
A metric used to measure customer loyalty and satisfaction.
You can monitor every stage of the pipeline from code commits to final deployments.
Regularly present what has been built or accomplished and sharing insights into the team's workflows, tools, and collaboration methods.
To recognize and reduce the amount of mental effort required to process and understand information.
A document outlines the key aspects of how a team operates, communicates, and interacts with other teams, including responsibilities, processes, tools, and expectations.
A document that outlines a team's purpose, goals, roles, and operating norms to ensure alignment and effective collaboration.
A collaboration exercise to introduce your team to one another, their input, skills, goals, and time commitments.
Structured roles designed to optimize software delivery and operations through stream-aligned, enabling, complicated-subsystem, and platform teams.
Teams define and prioritize five key actions to achieve their desired future state.
Identifies key resources and activities (inputs) and their desired results (outcomes) to develop relevant metrics for success.
The team identifies and aligns on a single, critical metric or goal that represents the ultimate value they aim to deliver to their customers, guiding their efforts and decision-making processes.
Brainstorm, discuss, and formulate a clear and inspirational statement that articulates the long-term goals and aspirations
Domain mapping helps visualize and organize the relationships and boundaries within a particular field or area of interest.
A collaborative tool used to gain deeper insight into users’ emotions, thoughts, and behaviors to enhance user-centered design.
A focus on developing businesses and products through iterative experimentation, validated learning, and customer feedback to minimize waste and increase efficiency.
A lean management tool used to visualize and analyze the flow of materials and information required to bring a product or service to the customer.
An experiment retrospective involves reviewing goals, analyzing results, identifying insights, and applying learnings to improve future efforts.
SMART is a popular framework for setting goals that are Specific, Measurable, Achievable, Relevant, and Time-bound
This approach ensures experiments are manageable and actionable, while driving toward larger goals, minimizing risk, and promoting continuous learning.
Frame your changes as experiments to make them easier for teams to try out
Creating a User Story that is appropriate bite size chunks to be effective and focused for delivering the customer value.
Good acceptance criteria are clear, concise, and testable statements that define the conditions that a user story or feature must meet to be complete.
Prioritize working agreements that matter most to the team.
Teams ensure that their user stories are well-structured, actionable, and aligned with Agile principles, making them easier to implement and deliver.
Product manager reviews completed stories to ensure they meet the "Definition of Done" and the pre-agreed acceptance criteria.
A problem-solving method used to explore the root cause of an issue by repeatedly asking the question "Why?"
User stories that prioritize delivering the most significant value to the customer or end-user
A practice to understand your audience the customers of your product
A practice to align and prioritise as a team what to achieve in an iteration cycle
Ensure shared understanding of a user story or feature by discussing requirements, identifying edge cases, and defining acceptance criteria before development begins.
A way to organise priorities and keep you team focused.
Quickly share progress, highlight blockers, and keep the team aligned.
A collaborative practice where two developers work together on the same code at the same time. One developer writes the code while the other reviews it in real-time, offering feedback and suggestions.
A visual way for teams to reflect on their progress, identify what's helping or hindering them, and define actions for improvement.
WIP limit of one means that only one item can be in progress at a given stage and would be ideally pair programmed/mobbed to be effective