Agile on a page
There are lots of things written about agile, agile techniques, agile frameworks and the agile mindset. The Agile Manifesto is still very relevant, though it is quite old. Forget the details of doing effective agile for now - just focusing on a few key things will help you to be agile and get the value it delivers. Some of this sounds obvious - and so it should. Agile is about the simple and obvious, not unnecessary complexity.
Key ways of thinking
- Deliver what people need
- Not the same as what they want - people tend to want what they had before, so we have to educate them in what is possible and continuously review requirements
- Engage with all relevant people (users, stakeholders and anyone affected by the solution) early and frequently
- Do not deliver stuff without a demonstrated and valuable need (e.g. adding something just because you can)
- Define and observe the goal(s)
- Be clear about what you are trying to achieve and why at the highest levels
- Make sure everyone is aware of this and uses it to inform their decision-making
- Be honest and support honesty
- Default to being open about what is going on and why
- Ensure everyone, at all levels, feels able to talk openly and honestly about what is working or not in all areas - not just their own specialisms
- Trust others to do their jobs
- Do not try to micro-manage
- Use abstracted data and metrics to understand what is going on
- Encourage and expect people to raise issues they are unable to resolve alone to the group of which they are a part
- Respect the expertise and experience of others
- Continously improve
- Individuals and teams at all levels should regularly reflect on events that have happened to see what can be learnt from them
- Agile is an ongoing process of change and way to approach work so we should all be looking for ways to improve things all the time
These are all discussed in more detail elsewhere on these pages, so we will just mention a few practical things which are common to all ways of being agile.
Practical things
Pretty much all ways of approaching agile have these things in common.
- Break work down into small units
- The smallest units are sufficiently small to be done or not done - we do not concern ourselves with 'partly done' but look at why these units were not able to be done as planned (a 'blocker'). This makes progress management easier
- Typically, we organise the work as hierarchies of units, where larger ones are 'done' once all their child work is 'done'
- Fill in details of each unit just in time. This avoids us trying to guess details too far ahead
- This is an ongoing, regular process - not a one off activity
- Prioritise and estimate regularly/frequently
- Regularly review planned work to refine, prioritise and estimate effort based on the latest infomration
- Maintain a backlog of 'ready' work from which the next activities can be selected at any time
- Only do work that is 'ready' and keep doing it until it is 'done'
- Do not start work until it is sufficiently well described, estimated and prioritised
- Do not accept work which has not been through this process
- Be clear about how we are working
- Clearly define how we accept, refine, prioritise, execute and deliver work
- Make sure this is clearly and simply documented. Share it with eeryone we work with
- This is not fixed - expect to review and improve it as we gain more experience
- Use clear, empirical information for progress and decisions
- Use the tools to develop a single source of data from which everyone can derive relevant views
- Make everything visible to everyone by default, in the most appropriate way for them
- Make decisions based on actual data and monitor their effect so we can learn more
- Minimise intermediaries in this process (people whose only role is reporting or communicating decisions up and down a hierarchy of management)