As we look at how software teams deliver a solution, we need to examine the technical practices that are used in conjunction with an approach that supports lean and agile values and principles and the characteristics of learning organizations (these are covered in more detail in my post, What is Agile Development?). Technical practices are the second of three pillars in the House of Agile:
I’m not going to delve into detailed guidance on any one technical practice. There are entire books written that cover any one of these practices in much greater depth than I need or want to cover with a book designed to talk about expectations.
And just like everything else associated with agile development, I’ll steer you away from looking at technical practices in isolation. Being agile puts greater context into the equation that will help you to distinguish being agile from doing agile. This will allow you to decide for yourself whether a practice makes sense for your situation or if you have another means at your disposal of accomplishing the same objective.
Agile development seeks to overcome a challenge that I put forth in Chapter Two:
To produce greatest possible, high-quality quality customer outcomes…
…in the shortest amount of time possible
…using the least amount of effort
…at the lowest possible cost
…keeping risk reduced
…while creating a sustainable, rewarding, and satisfying work environment that supports learning and continuous improvement.
In the words of Maverick and Goose from the movie Top Gun, we have “… the need for speed!” But we need to get better without making long-term sacrifices that always come back to bite us. So another part of our challenge is that we need to enable speed by using a lightweight, yet disciplined approach. We’ve already seen enablers of speed as we explored the business pillar; if agile is new to you, you may have a feel for them. Can you put them into words?
Speed is enabled through:
- Minimizing overhead
- Efficient, effective communication
- Eliminating bottlenecks and impediments
- Combing tasks
- Performing work when it is truly needed, and no sooner
If you’ve rejected any one of these practices in the past, hopefully I can shift your thinking by placing them in the framework of a software delivery value chain with feedback designed in as an integral part of the process. And as I stated previously, if you have an alternative way of accomplishing the same thing, go for it!