Spike

A spike is a throwaway attempt at a solution to some technical problem. It's usually done as an exploration or learning exercise.

Examples of spikes might be:


 * Which of these three Ruby gems works best sucks least?
 * I've never used JQuery before, so I want to try building something with it.
 * What would happen if I rearranged this whole area of code?
 * I want to pitch an idea but it'll be easier if I have a demo to show.

In practical terms, a spike is just a Git branch which never gets merged. This means you can work on a spike alone (i.e. not Pairing) if you want.

If a spike leads to a result that we do want to bring into the main code repository, you'll need to pair with someone and, ideally, re-implement it from scratch. However, pragmatically speaking, you may settle on detailed code review together and/or cherry-picking commits to bring across into a new story branch. The important point is that experimental spike code should never be merged without going through pretty rigorous review, so that at least one other person understands it as well as the person who did the initial spike.