Series on Software Design Practices – Part 1
In this small series on design practices, I write about various practices. In every article, I give a brief and simple explanation. This is part 1. Let’s start with spike solutions.
For me a spike is a way to figure out answers to a technical or design problem. It’s a solution to explore potential solutions. You make a spike to reduce the risk of a technical problem or to achieve a better estimate for a user story.
Spike solutions could be technical or functional. Functional spikes help you to analyze an overall solution. What is to be done? How do we break the work into smaller pieces? Where is the complexity hidden?
Technical spikes on the other side are a way to find different approaches for a problem, e.g. specific technical implementation or to get confidence that the chosen strategy works out.
Experience has shown that first you should focus on the problem with the spike and ignore other concerns, second not all spike solution are good enough to deploy in production. And at last, demos and discussions about the approaches are highly valuable steps.