A relação entre especificidade e obsolescência
Uma metáfora para explicar porque especificações técnicas longas tendem a gerar retrabalho
Imagine que você receba a seguinte informação: Lady Gaga está trabalhando em seu próximo álbum.
Se é verdade agora, seria verdade amanhã também? Provavelmente. As chances são de que ela passe alguns meses até terminar o álbum, e a frase ainda será verdadeira durante esse período. No entanto, se você receber uma informação mais específica, o cenário pode mudar:
Lady Gaga está trabalhando na primeira música do seu novo álbum
Por quanto tempo essa frase será verdadeira? Talvez alguns dias ou semanas.
Lady Gaga está escrevendo a letra da primeira música do seu novo álbum
Por quanto tempo essa frase será verdadeira? Talvez alguns dias ou horas.
Lady Gaga está escrevendo o refrão da primeira música do seu novo álbum
Por quanto tempo essa frase será verdadeira? Talvez algumas horas ou até mesmo minutos.
Quando se trata de software, poderíamos dizer o mesmo. E Kent Beck recentemente republicou um artigo legal sobre o assunto chamado “Software is Bananas” (link abaixo).
O problema é que informações diferentes em contextos diferentes terão "datas de validade" diferentes. Digamos que você tenha um problema e queira criar um produto de software para resolver esse problema, então você formula uma hipótese:
Se essa ideia que eu tenho funcionar, o problema X desaparecerá.
Se você não implementar sua ideia em, digamos, 6 meses, ela pode não fazer mais sentido mesmo que o problema original ainda exista. É natural: o problema é menos volátil do que a solução simplesmente porque existe uma relação de dependência entre eles.
Mas digamos que você decida seguir em frente e implementar sua ideia. Você então começa a fazer anotações sobre como fazê-lo:
Para implementar essa ideia, farei a etapa X, a etapa Y e a etapa Z.
A mesma regra se aplica aqui. Se você não seguir as etapas que estabeleceu imediatamente, poderá decidir implementar a mesma ideia de outra maneira. As etapas são mais específicas e, portanto, mais voláteis.
Em resumo, não tem problema ter uma lista de problemas para resolver, desde que você não gaste muito tempo pensando em como resolver muitos deles de uma vez. E não tem problema discutir os detalhes de implementação de um punhado de ideias, desde que você tenha certeza de que vai implementá-las nos próximos dias.