First, a confession of self interest. Gojko is a new professional friend, who I have met at several IT Conferences. He cites and credits me, and my ideas, in his book. All of his ideas are highly resonate with my own. So, what is not to like?
On the other hand, I have a reputation, I hope, of being highly critical of most all the new IT development trends. Partly for the sport, partly because software as a trade is still so embarassingly primitive, and failure prone (a subject Gojko leads in with). So, if there is something wrong with the book, something that would waste the readers time - I am honor-bound to say so!
I have a method for reviewing books. If the point made in a sentence or paragraph is IMHO a good one, I write a `+' in the margin. If it is debatable, a `?' and you can guess what symbols I use for brash claims and bad logic. If it is generally bad for long stretches, I don't mark anything, put it aside and, politely, don't review it.
Hopefully the intelligent public won't be fooled either, by useless books. But the IT development community is famous for liking and adopting very `simple' development ideas, that don't work. Or, worse, the methods work a little better than even worse, previous methods. Our failure rate is still horrendous - a shame to the profession. I read this book in 3.5 hours straight, interspersed with other things (OK, family TV).
So how does this book rate? Every page has about 4 to 8 `+'s. There are no `-`s at all. There are a very few places where a `?' means it might be clearer for me. So that means I think Gojko has hundreds of well-formulated and useful insights (`+') that are worth sharing. Pretty good, since some books in our profession have none (IMHO).
But the overall picture is even more important than a stream of deep and useful insights.
1. He totally understands that IT and software development must primarily be about delivering real value for money to stakeholders (who he calls `actors').
2. He understands that software alone is not the solution to all problems and objectives, even in a software-dominated system or application. He understands that we have to include a notion, that others call `systems engineering': meaning `considering the totality of smartest ways to solve the problem, of delivering value for money to stakeholders'.
3. He gives us a simple co-operating set of potentially useful tools (`Impact Mapping') for helping us keep focused on the real stakeholder objectives - in spite of a complex and rapidly changing world.
He is very open to any ideas that might help us further the `value for money for stakeholders' objective, and draws on a rich, but reputable, variety of credited sources. He is enthusiastic about his toolset, yet clear about the fact that it is early days in his own personal use of the entire method, and that we need to get experience with it, and perhaps evolve it - as he already has done compared to his previous book. He does not yet offer detailed case studies, let alone scientific studies of the method. But he hopes the community will help collect this data, and specifically refers to a website to start a community of practice. If history is any guide, the case studies will arrive, and data will be collected. And `Impact Mapping' will hopefully turn out to be a useful wave of improvement.
I know, from my own experience, the power of much of what he recommends, for example the power of taking the step of quantifying the top level project drivers; to clarify the stakeholder values. This step is like day from the night of the pervasive management BS driving most all software projects.
He tries to describe pitfalls, so we can avoid them. I like such a balanced picture, and a realistic picture.
One central idea, if not THE central idea, is that there is a causal chain from the central `business' objectives of the development project, to the stakeholders, their values, and finally to the means (design) to deliver prioritized satisfaction of those values. I am totally in sympathy with that idea, and it has been totally missing from the current `agile' culture, as I have repeatedly pointed out.
IT systems are too important to society to be put in the hands of `coders' who cannot raise their sights to the interests and values of victims of their craft.
Gojko gives us a practical set of tools to work this value chain, and maintain its integrity during change.
Are their things I would improve upon? Of course; and so will Gojko, and hopefully maybe you, reading this. But we all are subject to the cultural maturity of our clients and students. We cannot impose `ideas of sophistication' on the many who are not yet motivated, experienced and ready for such `improvements'. Culture change takes decades, at least, and we have to be patient.
I, for one, would be delighted if Gojko helps us get more buy-in, for real, of the central practice of `recognizing that the central mission for IT developers is to consistently, early, frequently, and cumulatively deliver central, critical, high-level improvements to the stakeholders'.
Imagine if we `nerds' one day became famous for our ability to deliver amazing value quickly?
18 November 2012