We believe that a comprehensive understanding of the domain, requirements, technology choices, and effective communication are crucial to successfully delivering the right product.
We adopt set-based development. We generate multiple design alternatives that meet the requirements based on our experience. We delay committing to a specific design until we have enough information to make an informed decision on the best option. This approach allows us to continuously learn and improve our offerings to customers.
We amplify our learning through feedback and iterations.
We have found that most software development projects cannot be treated as predictable manufacturing problems. Therefore, as a team of pragmatic developers, we do not rely on creating large, upfront estimates or speculative plans. Instead, we focus on building adaptable systems that can capture data and adjust to unpredictable changes. We periodically refine our plan and estimates by gathering empirical data as we progress.
We view functionalities as collections of features or user stories. We devise each user story to comprise three aspects: The card that outlines the story's goal, The conversation that provides details about the story, and the confirmation section that includes a list of tests to verify completion of the story.
We assign story points to a user story to represent its size, risk, complexity, and uncertainty. This measure helps to foster a shared understanding and consensus among team members regarding the effort required to complete a task, as well as to communicate progress
We focus on delivering production-quality software at regular intervals. This approach allows our teams to deliver value to customers more quickly and effectively, while maintaining flexibility and adaptability in response to changing requirements or priorities.
We communicate progress, bottlenecks, and dependencies through a couple of charts. We use the burn-down chart to manage iterations, visualizing and communicating how much work remains to be done and how much time is left to complete a sprint or release. This chart helps us infer the project's health, allowing the team to collaborate proactively and adapt to meet the schedule.
We also use the Earned Value Chart to offer a big picture of the project by tracking planned value, actual cost, and earned value over time. The EVC provides a comprehensive view of project performance and helps us identify potential issues early on. By using both charts together, we can gain valuable insights into project progress and make informed decisions to keep the project on track.