Spike Driven Development

test-Driven development (TDD) is a very powerful and beneficial approach to developing software. I routinely recommend it as a solution to untested and hard-to maintain software. However, every rule has its exceptions and there are occasions when a pure TDD approach is not very helpful.

Mark Needham wrote a recent blog post on the subject where he describes a kind of “Spike Driven Development”: Coding: Spike Driven Development at Mark Needham.

I tend to think of this as some sort of experiment-driven development. I start by choosing a goal. Typically this is either finding out about some murky or unknown aspect of a system such as interfacing with a third party, or improving a variable quantity such as performance. This in turn leads to thinking about ways to assess whether we have done enough to meet the goal and how much time to allocate to the exercise. Finally, a period of playing, following where each trial leads. The important bit is to repeatedly check progress against the goal – that’s what links it to the aspects of TDD which work well.

Tech Crunch On Bootstrapping (yes, it exists)

Recently, Tech Crunch ran an article which claimed to dispel the myth of a successful “bootstrapped” startup company. I disagreed with many of the assumptions in that article, so I’m pleased to see an opposing view from Duane Jackson of KashFlow.

Guest post: On Bootstrapping (yes, it exists).

simple, useful pages about site design

The false dichotomy of tests

It’s a conversation which seems to crop up again and again, and provoke a mixture of assumptions and opinions. Here’s Gojko Adzic‘s take on what is a unit test, and what is an acceptance test.

Gojko Adzic » The false dichotomy of tests.

For me, an “acceptance test” is a concrete expression of one or more particular acceptance criteria, typically formulated as a story or use case with explicit (and ideally customer-supplied) values. Everything else is is just a (development) test, regardless of how much or how little of the system it exercises. I see no particular value in separate names and arguments over whether something is a “unit” test, an “integration” test, a “story” test, or whatever.

When Does a Test End?

An excellent story from James Bach: James Bach’s Blog » When Does a Test End?.