At work I’m a Software
Development Manager. Two
decades of studying and applying a variety of methods in computing (Prince2,
DSDM, Extreme Programming (XP), Personal
Software Process, CMM, ISO9000, SSADM, UML, JAD, RAD, UI Design, and more) haven't
actually left me with many artifacts to offer the IT industry - but
it has left with with strong views about what works. (CV
available)
Agile Development
Agile Development is about light and fast application development.
Use it if you've got a short timeframe with a hard deadline and/or your
requirements are soft (i.e. ill defined or changeable). If you've a
comfortable timeframe and stable requirements then Agile won't add much value -
personally I haven't had such a project yet.
There are lots of Agile methods in use now days including eXtreme Programming otherwise known as XP, Scrum, the Crystal family of methods, and DSDM, plus others. Scrum is
probably the oldest (c. 1994) and XP the newest (c. 2000). Some big names use Agile methods for example XP was first used at Chrysler, and DSDM has been used at BT and Orange. Most of the methods originated in the US, but DSDM is
British - not that that makes a difference to where they are used. All these methods have been used for
web/e-commerce type applications - in fact that is probably where they are used most often.
The methods vary in specific details (for example XP has a strong technical component) but they are actually pretty similar, so much so that representatives of these methods have formed an AgileAlliance complete with web site. Their site offers an Agile manifesto and associated principles as an explanation of what they're on about.
I use a blend of these methods; selecting the practices that are appropriate for particular projects, and that fit in with the style of particular customers.
In terms of advantages, adopting an agile approach offers increased likelihood that the customer gets
a product they are happy with, that the product is higher quality, and that the product is developed faster than traditional methods allow. All of which increases the chances of a successful project and a successful product.
I've
written up some of my thoughts on Agile Development in the form of a comparison
of some of the Agile methods. The key feature of Agile software
development is controlled scope management.
Otherwise check out what the experts
say in the links below.
Martin Fowler's
article The New Methodology. Available at either:
http://www.thoughtworks.com/us/library/newMethodology.pdf
http://www.martinfowler.com/articles/newMethodology.html
If you're interested in Agile methods or wondered what they are, and why
they're needed then checkout this paper by Martin Fowler of ThoughtWorks: I particularly like it as it
expressed my own observations and concerns about applying traditional project
management to software development in a way I never could.
Alistair
Cockburn's articles are also worth a read, in particular:
Software
Development as a Cooperative Game
Characterizing People as Nonlinear Components
Neither particularly say what to do - they suggest directions more than
anything else - but they do explain why what PMs and Orgs normally do doesn't
work for software development. And I like Cockburn's writing style.
Manifesto for Agile Software Development
http://agilealliance.org/
Dynamic Systems Development Method (DSDM)
This is my favourite of the published Agile methods. It is a public domain method that is popular in the UK and that you can get
certified for. I like it because it has more formality than the
competitors.
Consortium http://www.dsdm.org/
Selling points for DSDM (and agile)
- A project on time, within cost, to required quality. When client says but
I expect that anyway, the reply is "are you getting it?"
- Cut 25% off requirements hence off spend
- Cut 3 months requirements gathering to 3 weeks of workshops
- Use suitability filter to sell to clients. This outlines what is necessary for a successful DSDM project; if these elements aren't present
then any project will struggle.
- If it fails, it will fail quickly
Tricks from the old hands
- If you're using only one tool from the DSDM toolbox, make it workshops.
- Get client to cost their involvement at the start. It will be high, but they have to know and accept this.
- Be wary of first name proposed for the Ambassador User; they may well be
the person available, not the right person. If the Ambassador has to phone
home base for answers more than once per week then they are the wrong
person.
Crystal Clear, Crystal Orange, Crystal Orange-Web
Alistair
Cockburn describes his family of methods as the lightest of light.
"Use them when you give up on XP". He used to have a site dedicated
to them (http://www.crystalmethodologies.org/)
but this seems to have disappeared.
In addition to his on-line articles mentioned above Alistair
Cockburn is also author of a book called "Agile Software
Development". Like his articles, this book is
more about why Agile works than what to do. I like Cockburn's writing style but if
you want a different perspective then check out Adam Burke's Critical
Review.
Feature Driven Development (FDD)
Chief programmers and all that.
Original Description www.pcoad.com/download/bookpdfs/jmcuch06.pdf
eXtreme Programming (XP)
I used to love this stuff, but I've become more cynical largely due to the
excessive hype associated with XP. It includes some pragmatic project management
techniques, and some sensible technical ideas (e.g. Xunit) but I suggest you
take it with a grain of salt - an XP project can easily get way out of control.
Check out a couple of official XP sites by official XP gurus.
http://www.xprogramming.com/
http://www.extremeprogramming.org/
Also
check out "The
Costs and Benefits of Pair Programming"
by Alistar Cocburn and Laurie Williams.
But
most importantly have a look at the work by Matt Stephens and Doug Rosenberg.
They are extremely anti-XP, so much so that they've released a book Extreme Programming Refactored: The Case Against XP,
but also have some material on the web. In particular check out:
Matt Stephens, The Case against Extreme Programming http://www.softwarereality.com/lifecycle/xp/case_against_xp.jsp
And for links to other anti-XP stuff check out http://www.softwarereality.com/lifecycle/xp/links.jsp
XP Refactored - my summary what the XP-like
process they recommend
Scrum
Scrum concentrates on management of software development, and unlike XP has
nothing to say on programming techniques. It is a good place to start looking if you're interested in Agile
methods, but it really is similar to the Planning Game of XP.
ControlChaos.com http://www.controlchaos.com/
Jeff Sutherland http://jeffsutherland.com/scrum/
Lean Software Development
"Lean" appears to be synonymous with "Agile".
Poppendieck's contribution to the Agile movement is a theoretical link to the
Japanese TQM movement. I call it a theoretical link in the sense that she is
providing a conceptual framework (TQM) to compare the agile methods against. She
then cheekily calls XP, Scrum, Crystal etc "Lean" - thus in a sense
taking credit for these other methods.
I can't fault what she says but she doesn't seem to add much to what the other chaps say, i.e. you'd still have to read the XP, Scrum, Crystal etc to
know what to do. And Alistair Cockburn or Martin Fowler provide a better
rationale for why these methods work.
None-the-less, being a theorist from way back, and having devoted 4 years of
my life to studying TQM, this does give me an interesting slant on the other
material.
http://www.poppendieck.com/
Agile Testing
My company uses a automated unit tests using Xunit, automated build scripts
using ANT or NANT and automated integration using Cruise Control.
Junit http://www.junit.org/
An essential framework for automated unit testing in Java, based on
concepts introduced by XP practioners. For a simple intro to junit try http://www.clarkware.com/. For
an explanation of the XP testing framework try http://www.xprogramming.com/software.htm.
ANT http://ant.apache.org/
or NANT http://nant.sourceforge.net/
The Java and .NET build tools respectively.
Cruise Control http://cruisecontrol.sourceforge.net/
Once you have automated tests and a nightly build then the next step is
continuous integration.
For some practical testing advice look to ...
Brett Pettichord's Software
Testing Hotlist
Not Agile per se, but has great links to lots of good testing material.
XP Testing http://www.testing.com/agile/crispin-xp-article.pdf
A description of how XP testing works. The trick is that acceptance
testing happens in parallel with development, and hence ends with development!
Agile Testing http://www.testing.com/agile/
Links to more sites about testing in an Agile world.
And some tools I
haven't used, but which look interesting ...
JXUnit
http://jxunit.sourceforge.net/
Building
Suites of Test Data with XML
Testing HTML http://httpunit.sourceforge.net/
A tool for testing HTML pages. It is used in conjunction with Junit.
Cactus http://jakarta.apache.org/cactus/
An extension of junit
What I can offer
|