When we develop using agile principles we have learned to "do the simplest thing that can possibly work". What happens if we apply this thought to agile methodology itself?
What is the minimum number of principles and processes that we need, to be able to benefit from agile? Finding them should help us know what to focus on when introducing and using agile methods.
In my experience the three most important components in a successful application of agile methods are:
- WIP limit
- Regular retrospectives
When striving for high productivity and a sustainable pace, I have found that joy is the key factor. It’s simply not possible to work really really hard for a long time if you don’t enjoy what you do. In addition, things that make the workplace and the work situation more productive also improve the mood of the team. It’s a positive spiral, people like the feeling of being productive and if you have fun it’s easier to become more productive.
So, sometimes when to choosing which way to go if you want to improve productivity, look at the joy factor too. Things that work in favor of a joyful workplace are for example: high spirits, control over your own work situation, recognition, trust, humbleness,…
Nothing in my experience can increase a team’s focus more than limiting the amount of work in progress (WIP). A natural reaction when a team feels pressed for time is to start working on more tasks. Probably it feels more productive to do something else if you for some reason are blocked, but it has the opposite effect since you start more work that you might be able to finish and thus wasting man hours.
With a WIP limit you are forced to address the issues that prevent you from finishing tasks, because you are simply not allowed to start a new task until the present one is finished if you have reached the WIP limit. This reveals obstacles faster and focuses on fixing them before moving on.
In my current team, we would never have automated so many tests unless we had reached the WIP limit and found that testing was the bottle neck that prevented us from starting new development tasks. The immediate solution was to have the entire team dig in and do testing, but soon some developers (who hated testing) decided to automate as many tests as possible to remove the bottle neck so that they could go back to coding. The testers found this to be very helpful, since they were so busy testing that they never found the time to automate the tests…
Inspect and adapt. Without the possibility to change the work process itself, improvement isn’t possible. Since we never get things right the first time (we continuously learn things we didn’t know before) and the world keeps changing, we need to regularly evaluate our way of working. Can we change something to increase productivity, joy, focus?
Again, I have seen teams pressed for time going the wrong way, skipping retrospectives in order to save time (why put the whole team in a room discussing things when we already know what we have to do – deliver code?). But skipping retrospectives means cementing the way you work and you may never get out of the trouble you’re in.