[chbot] Agile! Jack Ganssle AUGUST 11, 2014
Mark Atherton
markaren1 at xtra.co.nz
Thu Aug 14 20:25:52 BST 2014
sense at last :)
stolen from http://www.embedded.com/ hopefully with full credits included
-mark
============
Bertrand Meyer is one of the most literate
authors in computer science. His latest work,
Agile!, is an example. Its a 170 page summary
and critique of the leading Agile methods. The
introduction gives his theme: The first
presentations of structured programming, object
technology, and design patterns
were
enthusiastically promoting new ideas, but did not
ignore the rules of rational discourse. With
Agile methods you are asked to kneel down and
start praying. The book burns with contempt for
the eXtreme attitudes of many of Agiles leading
proponents. He asks us to spurn the proof by
anecdote so many Agile books use as a substitute
for even a degraded form of the scientific method.
This is a delightful, fun, witty, and sometimes
snarky book. The covers image is a metaphor for
the word Agile: a graceful ballet dancer
leaping through the air. He contrasts that with
the Agile manifesto poster: The sight of a
half-dozen middle-aged, jeans-clad, potbellied
gentlemen turning their generous behinds toward us
!
He quotes Kent Becks statement Software
development is full of the waste of
overproduction, [such as] requirements documents
that rapidly go obsolete. Meyer could have, and
should have, made a similar statement about
software going obsolete, and that both software
and requirements suffer from entropy, so require
a constant infusion of maintenance effort. But he
writes The resulting charge against
requirements, however, is largely hitting at a
strawman. No serious software engineering text
advocates freezing requirements at the beginning.
The requirements document is just one of the
artifacts of software development, along with
code modules and regression tests (for many
agilists, the only artifacts worthy of
consideration) but also documentation,
architecture descriptions, development plans,
test plans, and schedules. In other words,
requirements are software. Like other components
of the software, requirements should be treated
as an asset; and like all of them, they can change. (Emphasis in original).
He describes the top seven rhetorical traps used
by many Agile proponents. One is unverified
claims. But then he falls into his own trap by
saying refactored junk is still junk.
The books subtitle is The good, the hype, and
the ugly, and he uses this to parse many Agile
beliefs. Meyer goes further and adds the new,
with plenty of paragraphs describing why many of
these beliefs are actually very old aspects of
software engineering. I dont see why that
matters. If Agile authors coopt old ideas they
are merely standing on the shoulders of giants,
which is how progress is always made (note that
last clause is an unverified claim!).
The book is not a smackdown of Agile methods.
Its a pretty-carefully reasoned critique of the
individual and collective practices. He does an
excellent job of highlighting those of the
practices he feels have advanced the state of the
art of software engineering, while in a generally
fair way showing that some of the other ideas are
examples of the emperor having no clothes. For
instance, he heaps praise on daily stand up
meetings (which Meyer admits are not always
practical, say in a distributed team), Scrums
instance on closing the window on changes during
a sprint, one month sprints, and measuring a
projects velocity. (I, too, like the Agile way
of measuring progress but hate the word
velocity in this context. Words have meaning.
Velocity is a vector of speed and direction, and
in Agile velocity is used, incorrectly, to mean speed).
One chapter is a summary of each of the most
common Agile methods, but the space devoted to
each is so minimal that those not familiar with
each approach will learn little.
Agile! concludes with a chapter listing practices
that are bad and ugly, like the deprecation of
up-front tasks (e.g., careful requirements
gathering), the hyped, like pair programming
(hyped beyond reason), the good, and the
brilliant. Examples of the latter include short
iterations, continuous integration, and the focus on test.
The book is sure to infuriate some. Too many
people treat Agile methods as religion, and any
debate is treated as heresy. Many approaches to
software engineering have been tried over the
last 60 years and many discarded. Most, though,
contributed some enduring ideas that have
advanced our body of knowledge. I suspect that a
decade or two hence the best parts of Agile will
be subsumed into how we develop code, with new
as-yet-unimagined concepts grafted on.
I agree with most of what Meyer writes. Many of
the practices are brilliant. Some are daft, at
least in the context of writing embedded
firmware. In other domains like web design
perhaps XP is the Only Approach To Use. Unless
TDD is the One True Answer. Or Scrum. Or FDD. Or Crystal
Jack G. Ganssle is a lecturer and consultant on
embedded development issues. He conducts seminars
on embedded systems and helps companies with
their embedded challenges, and works as an expert
witness on embedded issues. Contact him at
jack at ganssle.com. His website is www.ganssle.com.
More information about the Chchrobotics
mailing list