Position Statement for First
eWorkshop on Agile Methods (April 8, 2002)
Ken
Auer kauer@rolemodelsoft.com
I
have been a software practitioner in various capacities since the
mid-1980s. I have developed software
for scientific, manufacturing and business applications as well as for a
variety of software development tools.
I have played the role of developer, consultant, project manager,
trainer, mentor, director of applied research, director of consulting, and
small company president.
Over
the years, I have observed that a competent team that works together toward a
goal with honest communication and a flexible plan that does not get in the way
of meeting the goal is far and away the biggest contributor to success at any
scale. A competent team that works
together will outperform a team of talented developers that don't. A team of talented developers led by a
controlling manager who tells them how to work will fail and disperse. I have managed to a plan and met the goals
of the plan. The six-month plan seemed good to everyone when we started, but we
were not allowed to stray from it as we learned without a lot of bureaucratic
and unproductive time. We had a choice to "stop work" while the plan
was adjusted (which would have taken at least a month or two based on the bureaucracy
in place to approve any such adjustment), or do the best we could within the
guidelines of the plan. So, our
highly-skilled team moved forward. The
end result was a fragmented team featuring two camps: those who "did what
they were asked to do" (even if they didn't like it) and those who
"did what they thought was best, complying only enough to not get
fired". Also, everyone (the
project sponsors, and the development team, not to mention me) was unhappy at
the end with a product that was not nearly as good as it could have been if we
were more agile.
When
I heard about XP, I was both attracted to it (a lot of best practices that I
had learned over the years were in there) and a bit skeptical ("Aren't
there some inefficiencies inherent that make it less than optimal?").
I was challenged to suspend disbelief and try it. In 1998, I was given a one-month window to
do so on a small scale and was surprised by the result (even though the first
month was often uncomfortable). As I
compared the result with all of my previous software development team
experience, I couldn't help but be impressed.
The quality of the software and the quantity of the results were quite
impressive in spite of the fact that the gap in experience of the developers
was wide. The amount of knowledge
gained by both the senior and junior developers were even more impressive. I then had the opportunity to lead a much
larger project using XP. The raw talent
and technological skills of the team I was given was far below any team I had
ever been a part of for an extended period of time. The person driving requirements had never really done so. The results were amazing. Although a more talented team could
certainly have produced better results faster (using the same process), the
focus and quality of development was far above what otherwise would have been
expected.
I
would suggest that the article by Dr. Boehm is that of a man who has
experienced many well-executed projects employing a plan-driven approach (and
I'm sure, some less than stellar executions of the same). Dr. Boehm is
observant and humble enough to recognize some of the benefits of agile
methods. However, it is clear that he
has neither experienced well-executed "agile" projects nor been able
to objectively analyze the differences and has deferred to others of like-mind
who suffer from the same inexperience.
For example, he regularly alludes to the assertion that agile methods
only work with skilled developers or, at the very least, skilled leaders. However, he does not seem to recognize the
importance of skilled planners and designers necessary for the success of
plan-driven approaches. He also only
briefly alludes to the problems "architect breakers" cause in
plan-driven approaches as if that validates the approach rather than points to
a problem with the assumptions of the approach. In fact, it would be difficult to argue that the dangers of
having unskilled planners/designers in a plan-driven approach would not be more
devastating to the end result of a software project than an agile approach
where at least the knowledge gained through trial and error can be fed back
into the process. The fact that
less-than-great developers will be involved in coding using either method
should point toward an approach where problems are caught early and the
skill-level of the developers are raised during the process rather than
accepting problems as a fact of life to be blamed on the "lowly coders who
didn't get it". Dr. Boehm rightly points out that "cowboys" are
helped by Agile Methods that add some discipline to their approach. Agile Methods can also help
"disciplined but unskilled developers" raise their skill level.
Dr.
Boehm certainly and somewhat accurately points out the potential pitfalls of
blindly following agile methods without tacit knowledge. I would suggest he apply the same filter to
point out the pitfalls of plan-driven methods before asserting the
appropriateness of one versus the other.
Otherwise, he is merely propagating ungrounded assertions of the
scathing critics in a kinder, gentler way.