August 22, 2006

...Learn TDD with Codemanship

Code Aging & Stool Analysis

Neal Rayner emailed this thought on code aging:

"I wonder if it's like a car - it's not always the mileage that counts, but the number of previous owners.

By owner, I don't mean a specific developer, but a team.

A lot of codebases have been through different team ownership (usually signified by a change in TL, or movement to support teams). The design ethos and technical focus is often different no matter how uniform an orgs approach is, so the s/w gets pulled in a slightly different direction, and definitely ages."

He's got an interesting point there. Not only might new developers taking over an existing code base apply their own architectural style to the code they write, but also I've seen many instances of developers learning as a project progresses, and you can see how their style matures and evolves in newer parts of the code.

In this respect, code might have layers of aging, like layers of sediment in rock (or rings in tree trunks). These could provide more clues as to what happened throughout the lifetime of the code.

More and more I become convinced that we can learn a great deal about the way code was developed just by examining the code itself. You'll have to forgive the unpleasent analogy, but it's a little like examining an animal's poo (bear with me on this):

The ultimate output of software development is - er - software. And this software is "excreted" through the process of software development. In much the same way that our internal biological processes act upon food and therefore produce stools with particular properties (colour, consistency - that's enough detail, I think), so too do our software development processes - our real processes, and not the ones that we pretend to follow - produce code with specific properties.

A skilled practitioner might be capable of deducing that a chicken was free range just by examining its droppings. Likewise, if I knew what to look for, I might be able to deduce waterfall development just by looking at the end product.


Posted 15 years, 7 months ago on August 22, 2006