Agile methods don’t make difficult decisions any easier, but they do make them more transparent. Techniques such as iterative planning, story prioritisation and measurement of velocity are all excellent at aiding decision making by visibly exposing the continual project trade offs between time, cost and functionality.
As agile practitioners, we pride ourselves on providing our clients with all the information they need to assess project progress and make decisions accordingly. But are we always giving them the full picture, and the ability to pull all the levers?
First things first. How do we know what is important to a client? And how do they know what choices they have? Simple. We ask them, and then discuss it with them, as early and as frequently as possible.
Getting the Levels Right
One of the techniques we like to use at Black Pepper are Trade-Off Sliders. This is a deceptively simple way of engaging the client in a conversation about what is most important to them, and establishing a basis from which project decisions can be made. The example below shows a generic set of sliders, but these can be tailored to suit any project:
This is often the first time the client will have thought in these terms, and this exercise may result in surprises for both you and them. It may turn out that much of the functionality you've just spent hours discussing actually isn't that important at all, or that authentication and security are paramount, or that something you weren't fully aware of is actually the top priority. And even if everything is important, some things must be more important than others, and visualising them in this way helps ensure that everyone has the same understanding.
In our view, you can't use this technique early enough.
These trade offs need to be factored into your resourcing profile, your architectural design and your whole project approach from day one to ensure that you're focusing on what is of most importance to the client, and not spending your time (and their money) on things that are not. For instance:
What pace of development is most appropriate (i.e. what team size should we have)?
What test approach is most appropriate?
What % of development effort should we apportion to testing?
Do we need specialist security testing?
How much cross-platform testing is required?
How much UI/UX design resource should we budget for?
How much time should be dedicated to gathering feedback on usability, and responding to it?
How much time should be assumed for writing help files, user guides, tooltips, etc?
This means that they also need to be factored into any estimated costs you have provided upfront, and so it is crucial to use trade-off sliders as early as possible during the sales process or project initiation.
Keeping on Track
Once the project is underway, the fun really starts. Even with best endeavors, issues arise, estimates change, assumptions unravel and reality bites. It’s at this point that hard decisions often need to be made.
Typically the conversation turns to de-scoping, and cutting out anything extraneous, but this isn’t always an option, or the best option (although it always needs to be considered). Scope may already have been pared to the bone, or “feature completeness” may be number one priority, and you may need to discuss other options
Can timescales be changed?
What cost tolerance is permitted?
Is a lower level of testing acceptable?
Can some minor bugs be tolerated?
What changes to the team structure or ways of working can we make?
- What level of usability is “good enough”?
None of these decisions are easy, but looking again at the sliders may help you see things in a different way, and help you to focus on what’s really important. If you've already discussed the relative importance of these factors with the client, then it can be a lot easier to find a resolution.
Better still, with the trade-off sliders foremost in everyone's mind from day one the whole project team (including the client) should find it easier to continually focus on what is of most importance, thereby reducing waste and keeping the project agile.
Discuss trade-offs as early as possible, and revisit them as often as necessary
Don't just stick to the generic list of sliders - make them as specific to your project as you can
Factor them into your estimates and your project approach
Communicate - make sure that everyone around the project sees the same picture
Keep them visible - don't bury them away in a drawer or on hard drive
Always keep your trade-offs in mind when making decisions (big or small), and discuss them openly