Jolt Awards: The Best Books, September 18, 2012 Six notable books that every serious programmer should read.
by Gojko Adzic
This excellent book by a well-known advocate of Agile testing, who has previously written about Cucumber and FitNesse, takes you through an extraordinarily comprehensive dissection of the essence of the software specification process. It successfully aligns specifications with the tenets of modern development methodologies, particularly Agile and its cousins. Using a variety of case studies, one of which is sure to feel applicable to your own project, Adzic shows how the old-school ideas of specification still remarkably improve the likelihood of delivering the right product. The principal ideas are collaborative user involvement; user-friendly documentation styles (as opposed to programmer-friendly styles); overlapping the roles of user, analyst, developer, or tester; and frequent, automated specification validation. Woven into every page are typically two or three subtle tips to buttress the successful employment of these ideas. For people new to the ideas, each tip often comes paired with a specific "when to use this" hint.
Recognizing that some of the concepts may be new in your environment, Adzic devotes a chapter to identifying potential leverage points to insert the ideas into an existing project. This alone provides much more relevance than many similar books can offer. The weakness is that the material does not discuss how to get the required upper-management support for the obvious cultural change that is implied by this approach. A consultant familiar with those culture change issues may need to help you with that. Also, this chapter does not deal with another problem; namely, not all personality types can handle the overlapped roles. In this regard, this book pairs ideally with the Jolt finalist, How Google Tests Software by James Whitaker, et al., a book that also finds value in widened roles.
The power of this book comes from a sometimes subtle and sometimes overt imperative for developers and users to trust one another, to work in concert in overlapping ways, and to leverage specifications as living documents in this process. That, by itself, makes this book highly recommended.
— Roland Racko