ExtremeProgrammingChallengeEleven
One of the cornerstones of XP is the lightweight communication made possible by people working together. But some systems reach a stage where they change little or change rarely. Such a system might occupy a single person only parttime. Or more people may be involved, but intermittently with extended dormant periods. What practices should be followed to maintain the knowledge about the system and the customers?
Note that this might apply to a part of a system that never changes.
(Thoughts?)
A fair answer might be "It doesn't much matter". I'm not sure. (More below.) But my response to ExtremeProgrammingChallengeTen presumed ten years of an unbroken thread. It's a loose end. (Pun intended :->)
Obviously, if a system never changes, it doesn't matter. But when someone realizes after ten static years that 2-digits years might be a problem, it could matter.
Arguably, any little- or rarely-changing system I've seen was either (1) extremely simple in functionality (though perhaps not in implementation) or (2) not changing because the cost of changes was too high. Is that a fair generalization?
I think it tends to matter when the system suddenly stops working after several years.
Though I'd agree with your two cases. The main example I'm thinking of was quite simple functionally, but had very stringent non-functional requirements. It performed an important, but somewhat timeless role, so the customer rarely wanted any change from one year to the next.
I would spend two weeks writing a 5-10 page overview of the system. I would include areas likely to need to change. I would split the document between the overall concept of the system (the metaphor), and starting points for further exploration in the code. I would also include explicit instructions for how to run the tests and a big warning to keep the tests at 100%. --KentBeck
I like that! Specifically, I like the 1/2 to 1 page per day output. Sort of the opposite of the story about Lincoln who began a letter by apologizing for its length because he didn't have time to write a shorter one. (Was that your intent?) Just point me to where to go in the real design, the source code. --KielHodges (While it may have been Lincoln, it was also Pascal)
I'd use a mailing list for the project. --MarkJanssen
See also ExtremeMaintenance.