Irrational Artifact Attachment
The lowly whiteboard is one of my favorite tools for design work on projects: you can stand in front of it as a group, you can easily play “what-if” games with emergent designs, and you can argue until everyone agrees (or at least until everyone is equally unhappy). Once you’ve got it done, a quick snap with a digital camera and you’ve got a project artifact, ready to post on a wiki or similar until supplantation by actual code. Once you have real code, you are better off allowing the design to continue to emerge from it rather than trying to keep the two in sync. Alternatively, you can use a reverse engineering tool to produce a prettier version of the original diagram from the code.
I prefer this low-tech approach to the more formalized version using tools (from drawing tools all the way up to really formal tools like Rational Rose) because of the proportional relationship between a person’s irrational attachment to some artifact to how long it took to produce. If you create a beautiful UML diagram using some tool like Visio that takes 2 hours, you have an irrational attachment to that artifact that’s roughly proportional to the amount of time invested. That means that you’ll be more attached to a 4 hour diagram than a 2 hour one. By “irrational attachment”, I mean that it’s harder to listen to reason as to why it’s wrong because you know how much time it took to create it (and therefore the required effort to update it).
This applies to pretty much any software artifact. I’ve seen this effect for design documents and diagrams, architecture, requirements, use cases, and database schemas. This suggests that really elaborate tools favor one-shot designs, where the pressure is on to get it right on the first pass. Of course, you can change it, but how much willpower exists to do that? One of the benefits to the low-ritual approach to much of agile software development revolves around creating “just in time” artifacts, with as little ceremony as possible (this helps explain the dedication to lots of agilists to index cards and sticky notes). Using low-tech tools frees you to throw away what’s not right, freeing you to experiment and allow the true nature of the artifact emerge through revision, collaboration, and discussion.