“Agile development may be suitable for software development, but for hardware development we have to use something more formalized and waterfall just works for this”.
Some time ago I stumbled across the above comment. I can’t
disagree more.
I have electrical engineering background and for two decades
I have been involved with embedded systems development. I have never seen a
specification being complete nor frozen before the design for electronics. To me
that’s completely irrational idea. Further, I have yet to witness a project during
which changes, and/or discovery, did not affect the pcb and mechanical co-design.
Fast-paced iterative process models fit the challenge much better than up-front
plan-driven. I have been lucky to work for more than a decade with people who think the
same (at least on this topic).
Software development domain faced the same challenge and answered with Agile software development. But based on my own observation, product
development is very similar ball game – despite the engineering discipline. Yet,
in hardware development domain it is still not so rare to hear comments like
above and for some reason waterfall mindset prevails. This leads us to the main point of this post. Actually flexible hardware development is supported by a very
surprising source; the authors that are cited to “demand the waterfall process
model”!
To begin with, of course we, members of agile community,
know that the original "waterfall paper" by Winston Royce actually argued against
using waterfall approach (link).
Second, the N&N paper, which inspired Scrum framework
for software development, did not talk about software development. The case
projects developed copiers, cameras and cars. And this was decades ago, when
these products were not that software intensive either (link).
Further, PMI’s PMBOK is not that exclusive either. It
presents the waterfall approach, but only as one alternative process model. As
equally considerable alternatives the guide presents models with overlapping
phases and iterative approach.
Finally, Stage-Gate process model introduced to us by Robert
Cooper has gone through several generations since its first introduction in 1986
and has continuously moved towards recommending the fast paced iterative
development. However, the very first edition already recommended iterative,
collaborative approach;
“…parallel marketing
and operations activities are also undertaken. For example, market-analysis and
customer-feedback work continue concurrently with the technical development,
with customer opinion sought on the product as it takes shape during
development. These activities are back-and-forth or iterative, with each
development result – for example, rapid prototype, working model, or first
prototype – taken to the customer for assessment and feedback”.
After this brief review, I summarize the situation to be
exactly like the case with misunderstanding of Winston Royce’s paper but on a
larger scale. People read the material to find what they want to find. Beauty
is in the eye of the beholder. Or they skip reading altogether, and just go
with their hard-wired mental model. As an example, several years ago I had a
presentation with quotes from a process manual of a very large enterprise. The
quotes were 100% supportive to agile development. I presented this to a room
full of project managers and PMO directors. I asked if they knew from where the
quotes were. None was able to answer. I asked who had read the complete process
manual, their own by the way. None had. Despite this, they were very consistent
in arguing that the very manual “demanded waterfall”.
This would be funny, if only it wasn’t true.
Incremental and iterative models are recommended for
hardware development in the literature. For some reason, the adaptation rate
seems much higher in software development domain. I think it is worth checking
what actually made agile software development methods so popular in the
industry and is there something to be learned for the system development
domain. Yes, software development has certain characteristics increasing the
flexibility, but my belief is that this is not the whole picture. Further, in
systems development the product development challenges are shared between the
engineering disciplines and it would be beneficial to have a shared approach
to development.
Luckily, there’s been signs of more and more people getting
interested in transforming the agile development knowledge from software
development domain to system development domain (containing for example
electronics and mechanical engineering), f.ex (link)
Knowledge about iterative hardware development exists, but
learning together between the domains can’t hurt anyone. Agile Alliance has
just recently initiated a program for Agile Engineering aiming at this (link)