Unusually for an agile practice, it appears practitioners largely agree on what the term ‘spike’ or Spike Story describes: a brief, focused effort to answer a question, explore a concept or investigate an issue. Fortunately the unsettling feeling of general agreement is quickly displaced when we try to agree the origin of the term.
Kent Beck is generally recognized for introducing ‘spike’ to software development parlance, as part of the XP movement. However, he has not been forth coming on why that particular word was chosen, at one stage even avoiding the term because it was too nuanced:
Because people variously associate “spike” with volleyball, railroads, or dogs, I have begun using “architectural prototype” to describe this implementation.
– Guide to Better Smalltalk:
It is interesting too that Cynefin, much of whom’s focus is on experimentation chooses not to borrow the term spike. Understanding the source of the term is useful, and potentially interesting, given how often the concept is illustrated by real word example. Listed below are some of the definitions I frequently hear, do let me let me know if you’ve heard others!
The Mountain Climber – A spike is another term for piton, used to anchor oneself to a rock face. If the piton in secure it is safe to take that route and hang more gear (and actually yourself) from it, if not it’s time to find another path.
The Railroader – Even within this single domain there are at least two derivations. A spike is a huge nail used to secure track to sleepers, hence ‘spiking a track’ – in order for a train to move safely over newly laid rail. Secondly a spike, or similar shaped wedge may be used to hold open a point (switch) and set the direction of subsequent traffic.
The Geologist – A spike is a kind of probe used to assess the layers beneath by inserting a hollow core, which fills with material, withdrawing the core, and inspecting the resulting sample. From this a geologist may determine if there is firm foundation to build upon, or if there is anything of value to extract.
The Sci-Fi Fan – Named for the Buffy The Vampire Slayer character, a Spike disregards team norms and provides an excuse to go it alone with a focus on what is cool, often leaving behind a trail of destruction for others to deal with. Actually, I just made this definition up, but all too often I see these behaviors.
The Builder – This definition, from Ron Jeffries, appeared during a debate on Stack Overflow: “Spike” is an Extreme Programming term meaning “experiment”. We use the word because we think of a spike has a quick, almost brute-force experiment aimed at learning just one thing. think of driving a big nail through a board.
The Electrical Engineer – This one I remember from my brief time as an Electrical Engineer, in the days when it was far more necessary to tinker with hardware to support our software habit. We used to spike relays to hold them on or off, isolating part of the circuit as a temporary measure to assess behaviour and assist problem solving.
The Statistician – I’m sure you’re familiar with this one; when charting a values over time a spike is a sudden sharp increase in those values, often of short duration. When monitoring production systems this sharp rise frequently correlates with increased shouting and coffee consumption. In terms of a spike story then, this is a burst of effort towards a goal, a sprint within a sprint.
Of course, there is another option, one that perhaps we’d rather not consider. Thanks to a cognitive bias we all have (yes, even you) called the Halo Effect, we are prone to liking or believing things from certain sources. Simply because we believe the term ‘spike’ was coined by a person we admire and respect we believe it must have a respectable and admirable definition. I’m afraid it is entirely possible that little thought was given to the term, the wrong word was used, it is an in joke, or that the reference is something only the author would understand. Luckily for agile and XP practioners everywhere, we’ll probably never know.