A colleague recently asked me what I thought of Balancing Agility and Discipline: A Guide for the Perplexed by Barry Boehm and Richard Turner. I replied, "It's a fine book and I agree with much of what it says. There's just enough that I don't agree with to make it interesting. :-)" When he asked for more detail, I replied:
It's been a while since I've read the book, but from reviewing my notes, I recall that Boehm and Turner make two key misapprehensions in their book:
They assume that up-front design is more cost-effective than continuous design when requirements are stable. My experience is that continuous design is more cost-effective because it leads to more simpler, more innovative designs that allow features to be implemented more quickly. (See my paper "Up-Front Design Versus Evolutionary Design in Denali's Persistence Layer" for details or my blog entry, "Design Mindsets," for an overview.)
Furthermore, continuous design postpones unneeded infrastructure, allowing software to be released sooner, which can dramatically improve ROI and the internal rate of return (see Software by Numbers, by Denne and Cleland-Huang, for more on this point).
Boehm and Turner consistently overstate the need for senior practitioners. They state that at least 30% "Cockburn level 2 and 3 experts" are needed, with "no Level 1B or -1 personnel." Aside from missing the point of Cockburn's "levels of audience" (a pet peeve*), Boehm and Turner offer no support for this assertion, which is directly contradicted by my experience. I agree that senior developers are needed, and that they need training in agile development, but dispute that they're needed to the extent that Boehm and Turner describe.
*Cockburn's "Levels of Audience" are about how to communicate, not assessing skills. See http://c2.com/cgi/wiki?ThreeLevelsOfAudience for Cockburn's initial thoughts on this, which he expanded on in Agile Software Development.