The overarching principles and practices described here apply across the whole default delivery process. These are in harmony with:
The Agile Manifesto values:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
The Extreme Programming values:
- Simplicity: We will do what is needed and asked for, but no more.
- Communication: Everyone is part of the team and we communicate face to face daily. We will work together on everything from requirements to code. We will create the best solution to our problem that we can together.
- Feedback: We demonstrate our software early and often then listen carefully and make any changes needed.
- Respect: Everyone gives and feels the respect they deserve as a valued team member.
- Courage: We will tell the truth about progress and estimates.
And User-Centered Design principles:
- Users are involved in the design process from the very beginning: Critical design decisions are evaluated based on how they work for end-users.
- Importance of requirement clarification: The product team always tries to align business requirements with user's needs.
- Introducing user feedback loop in the product life cycle: The product team collects and analyzes feedback from users regularly. This information helps the team to make more user-focused decisions.
- Iterative design process: The product team constantly works on improving user experience; it introduces changes gradually as it gains more understanding about their target audience.
One of our core values is "Customer Delivery First". This means every one of us is engaged in delivery as we live and breathe this value, every day, across all our service offerings, engagements, and roles.
We seek to have a holistic view across all phases of delivery. We aim to build the practical experience and expertise to understand not just when things need to be done, but also why and how. We use this understanding to improve delivery effectiveness with a determined drive to successfully deliver for our customers.
We appreciate that delivery is contextual, especially in a consultancy setting. Our level of influence will vary from engagement to engagement, so our approach to delivery is pragmatic. Our processes and tools are flexible, depending on context and constraints. We view delivery as a craft. The skill and art of delivery come in knowing when and how to apply each of the approaches and techniques in our toolbox to achieve a particular outcome or solve a problem.
1. Deliver value early and effectively
- We are Agile, Lean, and above all, pragmatic.
- We prioritise small, valuable, demonstrable, and deployable slices.
- We de-risk early.
- We identify and minimise waste to optimise flow.
- We have a plan but understand that the plan will change.
2. Build a culture of continuous learning
- We make visible, challenge, and evolve existing processes and ways of working.
- We encourage experimentation.
- We enable fast feedback loops.
- We inspect, adapt, and continuously improve.
- We foster a safe environment where everyone can have a voice.
3. Favour outcomes over outputs
- We understand our Customers' business, vision, and the problems they're trying to solve.
- We validate the impact of deliverables against business goals and user needs.
- We make decisions based on data and learnings.
4. Open and transparent
- We build relationships.
- We are trusted by our Customers and are able to influence and advise.
- We are collaborative; we actively work to break down silos.
- We understand and mitigate risk.
- We are honest about failure.
- We celebrate success.
5. Champion the team
- We create an environment that is optimised for effectiveness and sustainability.
- We build a culture that promotes team health and happiness.
- We motivate, facilitate, and enable.
- We minimise impediments and distractions.
- We advocate team autonomy.
Just enough, just in time
Doing any more than just enough or doing too much up front is wasteful. Things change, often in ways which invalidate earlier thinking or make it irrelevant. Minimising upfront analysis and design effort to just that required to make the decisions needed right now reduces waste. And more is learned during delivery, meaning the best decisions are made later, with the benefit of more information.
Visualise and adapt
When joining an existing delivery, there will be an existing set of processes in place. Start by understanding where you are right now. Visualise the flow of work as it is today to build shared understanding and identify hand-offs and bottlenecks. Gather metrics to allow waste to be identified and processes to be adapted. Remember that change takes time and people understandably assume that there are good reasons for the way things currently are. Be patient, but persistent. See continuous improvement.