On Hacknot is a great post about Antipatterns in legacy code. I’m afraid that I am a perpetrator of the “NadaDoc” more often than I should be. All six are good, but this one stuck out as the most compelling and immediately applicable to the situations I see and have been seeing for the last few years:
Architecture Where Art Thou?
Many developers are not very enthusiastic about forethought. It just delays the start of coding, and that’s where the real fun is. Alas, when there is no pre-planned structure for that code it tends to grow in a haphazard, organic and often chaotic way. Rather like growing a vine – if you train the vine up a trellis, then the resulting plant exhibits at least a modicum of structure. Without the trellis, the vine wanders randomly without purpose or regularity. My current project was grown without a trellis and is riddled with weeds and straggling limbs. The original developers have, presumably against their will, attempted to document the project as if there were some intentional underlying structure. But there is too little accord and too many inconsistencies between the structure described and the reality of the code base for the one to have guided the construction of the other.
I also like the one on “oral documentation”. I’ve never heard an XP fanatic mention that to me. If they did, I too would erupt in gales of laughter.