Most
books I read related to Lean and Agile development talk about how Agile has
roots in Lean that were then applied to the world of software development.
Preston G. Smith's latest work, Flexible
Product Development, is a bit of "switcharoo" in this regard: it takes
the ideas and principles of Agile software development and then shows how they
can be applied to non-software products.
The book
also has a very healthy dose of Lean behind it, taking some of the ways in
which Agile differentiates itself from Lean, and feeding those back into Lean
for product development, with the moniker of "Flexible" to represent the
result.
What
motivated me to want to read this book was the following excerpt from the
inside flap of the description of the book:
In
this landmark book, Preston Smith attributes the recent decline in innovation
to pressure from financial markets that drives management toward rigid
development approaches such as phased development processes, Six Sigma, and
project office. These processes have unintentionally (but effectively) made
changes during development more difficult, disruptive, and expensive, while the
need for change continues at an accelerating pace.
Advertisement
As an Agile
advocate who works in a large corporation that has solidly "bought in" to the
likes of Six Sigma, stage/gate project management, and project office, this immediately caught my attention.
If the book could explain
this in language I could use with senior managers, it would be worth its
weight in gold.
And if the book could, by
showing how Agile can work in non-software products, convey additional
insight into scaling Agile to large systems engineering efforts that span
multiple geographically dispersed teams, well, then it would be worth its
weight in platinum.
So I
pored through its chapters ravenously, starved for insight that would help me
help a large organization implement Agile at enterprise-scale.
Before
going any further, I should mention a bit more about the author. In addition to
being a founder of the Agile Project Leadership
Network (APLN), Preston G. Smith
is co-author (along with Lean Product Development guru Don Reinertsen) of the classic Developing
Products in Half the Time and co-author (with Guy Merritt) of Proactive
Risk Management.With the
publication of this new book comes a related website www.flexibledevelopment.com,
which contains additional articles, links to resources, and, of course,
promotional material. The last paragraph of the book's homepage differentiates and
perhaps contradicts my own impressions about the relationship between Agile,
Lean, and Flexible Development:
Development
flexibility is not a variant of lean development, rapid development, or any of
a host of others. It is a package of tools focused on one objective: dealing
with change effectively. Its nearest relative is agile software development,
which also aims at embracing change but depends on some special characteristics
of object-oriented software development to achieve its demonstrated successes.
The book
is only 250 pages comprising 10 chapters. The first chapter, entitled "Understanding Flexibility," focuses
primarily on the issue of the inevitability of change and uncertainty, and the
need to be flexible in its presence (including a section explicitly declaring
the roots of Flexible development in Agile software development). Chapter 2
deals with the "fallacy of frozen requirements" and the value of customer
feedback. Chapter 3 moves from requirements to design, focusing on modular (versus
integral) architecture as a key to flexibility. Chapters 4 and 5 discuss
experimentation and set-based design, along with the "Lean" concept of delaying
decisions to the "last responsible moment."
What many
agilists might really enjoy most are chapters 6 and 7, which discuss the
importance of people and teams over process, and the kinds of decision-making
processes and "real options" thinking that are based at enabling flexibility
and responsiveness to change. Smith references Barry Boehm's data
on the COCOMO model to illustrate just how significant the people and team
factors are as compared to "product" factors, and "tool and process factors."
Chapter 8
reads like an abbreviated overview on Agile project management (APM), covering
time-boxing, risk management, metrics, and retrospectives. As someone well
versed in APM literature, this chapter didn't hold my attention as well as the
others. However, I appreciated the overview of rolling-wave planning (which
isn't often defined in Agile literature) and the author's coverage of
"strategic versus tactical" metrics began to pique my interest again. It was a
good thing, too, because immediately afterward came a hidden jewel out of the
blue that Smith dubs a "Flexibility Index" -- defined as evaluation-time
divided by development lead-time. This was something new and promising buried
in a chapter that otherwise seemed like a straightforward rehashing of familiar
APM concepts and techniques.
Chapters
9 and 10 were perhaps of most use to me for what I was hoping to get out of the
book. Chapter 9 addresses issues of processes and emergence, and, of most
interest to me, issues of scaling flexibility and sustaining iterative and incremental innovation
(with numerous references to the Agile
Manifesto and the work of Alistair
Cockburn). I most enjoyed the sections on "Bottlenecks and
Queues", and "Balancing Structure with Flexibility." Chapter 10
is more concerned about the work of the change agent for implementing flexible
product development.
In the
end, as read by someone focused on software development, the book really is
focused on the application of Agile software development concepts to
non-software application. As such, it is an outstanding and relatively easy to
understand introduction to the subject. For someone looking at how to expand
the scope of Agility beyond software, there is much material to help you relate
the concepts and benefits of agile methods and principles to the non-software
portions of the business.
About the Reviewer Brad
Appleton is an enterprise SCM/ALM solution architect for a Fortune 100
technology company. Currently he helps projects and teams adopt and apply agile
development & SCM practices. Brad also author's the Agile CM Environments blog, and is
co-author of Software
Configuration Management Patterns: Effective Teamwork, Practical Integration, the
"Agile SCM" column
in CMCrossroads.com's CM
Journal, and is a former section editor for The C++ Report. Since 1987,
Brad has extensive experience using, developing, and supporting SCM
environments for teams of all shapes and sizes. He holds an M.S. in Software
Engineering and a B.S. in Computer Science and Mathematics.