Tuesday, April 20, 2010

Little Systems

Technique Tuesday

Time and again, I'll learn of a new idea, particularly in software development, only to find that it's something I'm doing or already understand, though perhaps not in quite the terms or with quite the eloquence of the new explanation.

I had that experience years ago when I read Jim McCarthy's Dynamics of Software Development and came to his discussion of little systems.

Jim gave the example of a pair of coffee shops in Seattle (this was before all coffee shops were Starbucks shops--sometime in the late Cretaceous, I think). In one shop, the coffee was consistently excellent. In the other, it was hit-or-miss. The shops were the same in all material aspects: similar facilities, locations, offerings, staff, and clients. The only difference was that in the consistently good shop all the pots had been etched with a line about half-an-inch from the bottom and there was a standing rule that if the level fell below the line the staff was to brew a new pot.

That line made a significant difference because when things got busy in the hit-or-miss shop the staff wouldn't notice they were out until they drained a pot. Then customers had to wait until the staff brewed a new pot. If there were too many people in line, the temptation to pull the pot early would become irresistible.

In terms of software development, Jim pointed out that where big, complex development systems generally only succeed in preventing productivity, small systems can provide a big productivity boost.

The coffee pot system is about as simple as they come: one mark and one rule. If I hadn't labeled it as a "little system," you might likely have barely noticed it if you were being trained to work in that shop. The key point is that little systems blend into the background and become nothing more than "the way we do things here." If the system requires enough ceremony that you notice when you use the system, it's too big.

You probably already use a number of little systems. I, for example, make a point of paying when I receive a bill when I receive it (arguments about earning every micro-cent of interest by waiting till the last moment aside) because it gives me the mental space to focus on my writing without worrying that I've forgotten to honor an obligation.

What little systems have you developed? I'm particularly interested in the ones that help you when you're making.

Image: luigi diamanti / FreeDigitalPhotos.net