Ahhhhhhh fine. I wasn’t going to bring up spikes, but FINE Bradly. Listen, when I heard about spikes I thought that was cheating. What’s the point!? If you get to code out some parts to stop being so confused, and then go and do TDD, I fail to see how that is literally any different than regular coding. Right? Come on, throw me a bone here. Look:
- Realize your code needs a new feature
- Plan out the function
- Poke around the codebase with logs and manual testing until you are confident you know how to integrate
- Write the function
- Test the function
- Refactor/move on
Well, what’s the difference between swapping 4 and 5? I feel if spikes are involved, we’re just splitting hairs now. And my hair is thinning at an appallingly young age so I don’t want to keep splitting hairs.
The achilles heel of TDD is confusion at a new or complex code base where you don’t understand everything from the start. Saying spikes are fine if they’re “short” just felt like a wink and a nod at the camera to me. Kent says that spikes should be short, but what if you’re super confused? How long does a spike have to be before it stops being a spike and starts being…coding? I really think you’re cheesing it if you do a big spike, then test, then write a function.
Spikes feel like when companies say they do Agile, but still have strict delivery deadlines, “sprints” don’t end until the feature is done, and retros are only once a quarter. It really seems like you’re still doing the old way, but just putting a fancy name on it.
If spikes are allowed in the game, then we’re just doing this:

I can’t even argue with you because I know that you and I are just looking at the same thing and calling it different things. You call it a spike, I call it research. At the end of the day, we agree all three parts, learning, coding, and testing, are necessary, we’re just doing them in slightly different order.
Also, if more people taught and talked about TDD with spikes as the crucial piece they are, I doubt I would’ve been salty enough in the first place to write this article.