Sure, our products are (primarily) made of software, but they’re
still products. And, though software development is a pretty new
field, product development has been around for a while. We should
learn from how products have been developed in other domains, not
That’s the main thing I came away with from Mary Poppendieck’s talk at
SD West. She has experience developing products (at 3M) and software.
And she thinks lots of software development practices ignore
what other fields can teach us. For instance, in the
to her book, Lean
Software Development: An Agile Toolkit (available from
& Noble and Amazon)
Between PMI (Project Management Institute) and CMM
(Capability Maturity Model) certification programs, a heavy emphasis
on process definition and detailed, front-end planning seemed to
dominate everyone’s perception of best practices. Worse, the
justification for these approaches was the lean manufacturing
movement I knew so well.
Detailed front-end planning strikes me as diametrically opposed to
lean manufacturing principles. Process definition by a staff group
strikes me as diametrically opposed to the empowerment that is
core to successful lean manufacturing.
Yet lots of software development “methodologies” do just this. To
a large extent, “agile” software development approaches are reacting
to this rigidity, and its failures. We should empower our product
development groups to define and follow the best practices for
their specific needs, not necessarily the same processes used by
every other product development group in the company.