Uma Spike ou PoC (prova de conceito, do inglês proof of concept) é um investimento de tempo pré-definido (possui timebox) com o objetivo de explorar alguma técnica, framework, linguagem, solução para atingir um determinado objetivo (que pode ser pré-definido ou não, dependendo do contexto).
Em eXtreme Programming, temos o conceito de Spike:
Crie Spikes para descobrir potenciais respostas a problemas técnicos ou de design difíceis. Uma Spike é uma solução de código muito simples que serve para explorar soluções potenciais. O objetivo de uma Spikes deve focar em resolver apenas um problema específico e sugere que você ignore outros fatores e questões. A maioria das Spikes não serão boas o suficiente para se manter no produto, então se prepare para jogá-la fora. O objetivo é reduzir o risco de um problema técnico e/ou aumentar a confiabilidade da estimativa de uma futura história de usuário.
Texto traduzido de: http://www.extremeprogramming.org/rules/spike.html
Spikes são especialmente úteis para casos onde a equipe não tenha um bom entendimento de um ou mais requisitos do sistema ou da solução. Uma Spike pode fazer com que membros do time avaliem diferentes soluções e conversem antes de se definir qual história de usuário será levada adiante ou até mesmo ser priorizada pelo Product Owner.
É importante levar em consideração que uma Spike deve possuir uma curta duração. Se a Spike dura mais de uma Sprint, este é um sinal de que provavelmente não era uma Spike, talvez sejam múltiplas validações de múltiplas hipóteses.
Outra característica relevante é com relação a tomada de decisão após a Spike ter sido executada. Dado as informações coletadas, as observações, o tempo investido e o retorno gerado, qual decisão será tomada? Implementar? Desistir desta hipótese?