We believe in delivering value fast. Our methodology is designed to optimize the flow of ideas to production applications, removing obstacles that frequently get in the way. For example, we adopt an incremental development process which allows us to deliver value to stakeholders early and continuously throughout a development effort rather than all at the end. Regular inspection points allow us to identify obstacles and to adapt in order to continuously improve our velocity.
We believe delivering the right solution is as important as delivering fast. We use design thinking techniques to fully explore the business problem and to design a solution that will have the most impact. Goals aren’t something we discuss at the beginning of a project and forget, we use them as pole stars driving the way we plan and design throughout development. Feature lists can become traps where effort is wasted on the wrong problems. By consistently evaluating our solution in the context of our goals, we can make smart trade-off decisions and prioritize the right things.
We believe that the best solutions emerge when business and development teams create applications together. It is hard to know what you need until you “see it”, so regular collaboration allows business users to provide clearer requirements. Similarly, it is hard to build the perfect feature without having “lived it”. Frequent input from those that have helped developers validate their assumptions. Our processes facilitate regular collaboration across the joint team and encourage embracing feedback.
We believe that small, fully-formed and stable teams move faster. Collaboration is easier for smaller teams with the costs of communication and coordination much lower. A fully-formed team with all the skills needed to deliver their outcomes has fewer dependencies and therefore encounters fewer delays. And by keeping the team together across projects, they spend less time learning how to work together. Larger programs can be built by organizing agile teams into a team-of-teams model where mostly independent agile teams work together under a common framework.
We believe delighting users requires putting them at the center of our design process. Before creating a solution, we first consider our users’ context, empathizing with their needs and constraints. Throughout our development process, prototyping allows us to elicit fast feedback from users as we build. Embracing user-centered design techniques, ensures that our application not only delivers value but is a joy to use.