January 3, 2006

...Learn TDD with Codemanship

Adaptive Tension & Memetic Engineering

Reading Susan Blackmore's paper on Evolution and Memes: The human brain as a selective imitation device, it occurs to me what role metrics might be playing in Agile Software Process Improvement.

The process of evolution requires three basic components:

1. Replication - the thing that's evolving must be copied to create successive generations
2. Variation - if every copy is an exact copy, evolution cannot occur
3. Selection - not all copies will be successful. Environmental constraints select those that will survive

In cultural evolution, the replicator is the meme. It is copied by a process of imitation - which Blackmore argues is an ability unique to humans. (Though this is a controversial assertion, I understand). When I transmit a meme to you, it may or may not confer some kind of benefit to you. If it does, then the meme is reinforced. If it doesn't, it may be discarded. (Think how many advertisements you ignore every day, for example.) If you discard my meme, then you won't be transmitting it to anyone else. And so its evolution hits a dead end.

Agile SPI works by applying adaptive tension to an incremental process of replication (continuing to do what worked last time) and mutation (trying new stuff this time). When the "new stuff" appears to work - i.e., it conveys some kind of benefit - it improves its chances of being replicated in the next generation.

The catch comes in defining what works and what doesn't. If your boss just wants you to hit deadlines, and doesn't much care what kind of crap you deliver just as long as you deliver it on the agreed date, then "what works" is probably hacking. I've remarked before about teams being rewarded for shitting in the customer's shoes. You need to be very careful what you wish for.

Agile SPI uses carefully designed metrics to select the successful memes that will be carried forward into the next cycle. It adds more weight to the argument that you get what what you measure.

Informally, the Agile SPI presentation that gives an overview of how the process works hints at how the three components of evolution are implemented in a process improvement initiative:

    * Replication - is the process by which successful development practices (and other factors) are carried forward from one cycle to the next
    * Variation - is the process by which new practices, or variations on existing practices, are introduced with each new cycle of SPI. Implied is that the copying from cycle N to cycle N+1 is relatively faithful, so these random "process mutations" are small in each generation.
    * Selection - metrics for productivity and quality (and, if you're feeling adventurous, value) are used to select those practices that will survive into the next SPI cycle

In this sense, Agile SPI is a rudimentary form of memetic engineering. It might be comparable to the techniques used by more primative societies to selectively breed cattle and pets.
Posted 21 minutes, 1 second ago on January 3, 2006