« If I'm doing Scrumbut, does that make me a Scrumass? | Main | The Great Agile Requirements Showdown! »

May 08, 2009

Comments

Denis

Hilary you sound just like a developer who has been asked to write a user manual ;)

Seriously, unless the developers are exceptional and the code reads like plain english and is layered to support various levels of reading, it is not the best documentation.

Documentation is a projection of the product. It's goal is to communicate something in simpler terms than the code. Agile makes a couple of things clearer: documentation is perishable and documentation is costly to create so you should create only the one that is really useful. If you can generate it automatically from the product, great.

Michael Dowling

Hi Hillary,

I work for one of those organizations that are huge and "long in the tooth," and I absolutely relate to the PMO's need for extensive documentation for requirements. Only recently have I been able to document our requirements as tests, in the form of BDD and FIT/Robot tests along with simple business rules for each story. Before doing this, we were, well, writing use cases as a task on our backlog.

The great thing about the BDD and FIT/Robot tests as documentation is that you can *generate* the official documentation from the tests in the dev repository. Imagine: with business, QA, and the rest of the team, you write out business logic in plain text, BDD and FIT/Robot tests to prove the point, and once the tests pass to everyone's satisfaction, generate the documentation as an aggregate in a word doc to appease the PMO. (FYI, this generation is the subject of my new open source project. Boring, I know. But necessary for organizations like mine).

Audit requirements state that the documention must describe *what* the business contracted a developer to create, the design to describe *how* it got done, and change-controls to describe how it got to production. BDD and FIT/Robot tests describe the *what*, generated UML class diagrams and sequence diagrams from unit tests show *how*. I haven't found the right "agile replacement" for change-controls, though done correctly and with the previous 2 artifacts auto-generates, it tends to be less of a headache.

Something to ponder...

Jay Conne

Hi Hilary,

You wrote: "I'd state the third value ("Working Software over Comprehensive Documentation") like this: The best documentation is the product itself."

As Denis noted, code is unlikely to be sufficiently accessible for some practical needs. In my team training and coaching, I identify three objectives that documentation must serve to be respectful to your employer as a professional. As with any artifact, start with the question, "who is going to use it and how?"

Those three are:
1) Maintainability - since apps cost more to maintain over their life than to build initially, do what yields cost effectiveness here. If the code and test suite is sufficient, the so be it. Perhaps the restated User Stories and Conditions-of-Satisfaction will help. And then whatever else serves the goal. Note that this is NOT the traditional requirements document.

2) Operations - since typically others need to install and serve the application to the user community including handling any errors that occur regardless of cause - code or environment.

3) Usability - introducing users to the application and supporting their continuous learning, matched to the complexity. Is this a separate doc or is it embedded in the code and help system. The more integrated the better. I would want a clear statement of the context to start. This includes a statement of the purpose, scope and limitations of the app.

Keeping these three in sync as the code evolves needs to be part of one's DONE criteria for any changes just like the test suite and other potential debt (in XP terms).

Hope that helps.

Jay

Jay Conne

One additional thought - re keeping double books.

That's exactly what I recommend. Do the right thing and separately do the wasteful thing if that's necessary to keep your job.

Meanwhile track the cost (AKA waste) including the usage of each of the artifacts. This supports management in making evidence-based decisions, to take a term from current medical fashion.

Jay

Project Management

Thanks for sharing this informative post

The comments to this entry are closed.

About Agile Learning Labs

  • Agile Learning Labs teaches agile values, principles and practices through experience-based workshops, at your place or ours. This is our blog, written by Chris Sims and Hillary Johnson.

Tweet, tweet!

Blogroll