As we saw in the first installment of this multipart article, there are many problems with the current generation of software-development processesdenied commonality, incompleteness, out-of-sync processes, knowledge acquisition, and down-right stupid processes, to name a few. No wonder most developers don't like processes.
The good news, however, is that there is an alternativepractices, and there are hundreds of them. Some are generally accepted, others are unique to a particular methodology. But they all have something to offer, even though they can be hard to mix-and-match or use together. In our new approach, which we call "EssWork," these practices can be defined separately, and then composed into a simple ways-of-working where they are applied together. This allows teams to select the practices that they want, which are then assembled to describe their individual way-of-working.
In this installment, we examine what makes a good practice and identify the benefits of adopting a practice-based approach.
What Is a Practice?
A "practice" provides a way to systematically and verifiably address a particular aspect of a project.
It is important to note that:
- A practice does not attempt to address the entire problem. Rather, a practice attacks a particular aspect of the problem.
- A practice is systematic in that someone can articulate it. It is not a black art. A practice has a clear beginning and end, and tells a complete story in usable chunks.
- A practice includes its own verification, providing it with a clear goal and a way of measuring its success in achieving that goal. Without verification, the practice is not complete.
Because of these qualities, practices can be developed, learned, and adopted separately, and they can be used in conjunction with other practices to create easily understood and coherent ways-of-working.
In short, a practice is a proven way of approaching or addressing a problem. It is something that has been done before, can be successfully communicated to others, and can be applied repeatedly to produce consistent results.