Quais são alguns bons critérios para usar o Tracer Bullets?

9

Recentemente, eu estava lendo The Pragmatic Programmer pela primeira vez e me deparei com o conceito de Tracer Bullets. Percebi que havia codificado de acordo com esse modelo no passado e meio que apresentava a maneira como estava trabalhando no meu cérebro como "ágil".

Eles dão apenas um exemplo de onde o usaram no passado. A maneira como a situação foi identificada como uma boa candidata à Tracer Bullets foi

Havia muitas incógnitas, e muitos ambientes diferentes, e ninguém tinha muita certeza de como a GUI deveria se comportar.

Parece que é assim que começa um grande número de projetos, especialmente quando você trabalha com pessoas não técnicas em um aplicativo de linha de negócios típico para um fundo de hedge (como exemplo).

Eu usei porque simplesmente parecia certo, sem realmente saber como era chamado ou explicado. Eu sabia que se eu tentasse colocar todos em uma sala e fizessem com que eles especificassem tudo (ou pelo menos algumas coisas) na frente, seria um desastre completo, mas, novamente, isso é uma sensação ...

Alguém pode apresentar alguns critérios mais concretos para quando esse modelo pode ser o caminho a seguir?

Jason Punyon
fonte
Traçadores Rememeber funcionar nos dois sentidos
MattyD

Respostas:

5

Você precisa ter um projeto no qual possa ter uma idéia se está no caminho certo com apenas um pequeno subconjunto de funcionalidades. Geralmente isso é possível para coisas como o design básico da GUI, mas é difícil com coisas em que os resultados são desconhecidos - por exemplo, se você estiver projetando um aplicativo de mineração de dados e o formato da ferramenta dependerá do tipo de padrão que ocorre nos seus dados.

Você também precisa estar em uma situação em que possa se repetir várias vezes. Isso custa tempo e desenvolvimento (e, claro, pode ser benéfico se você se inscrever em processos de desenvolvimento ágil), mas mais difícil é o custo em termos de exposição aos usuários. Os usuários ficarão exaustos rapidamente se você mostrar muitos designs e a qualidade do seu feedback diminuirá muito. Portanto, você precisa de um grande pool de usuários ou escolhe suas (micro) versões com cuidado.

Alex Feinman
fonte
11
Não concordo com o segundo parágrafo. Na minha opinião, o desenvolvimento do Tracer Bullets ajuda a criar uma arquitetura que funcione para o seu projeto. Nenhum feedback do usuário é necessário, o TBD ajuda os desenvolvedores a arquitetar os componentes internos do produto, não os recursos visíveis do usuário.
Barjak
2

Eu diria que existe realmente apenas um fator básico que determina a utilidade de uma abordagem do Tracer Bullet: o número e o escopo de incertezas na arquitetura e no design do aplicativo.

Como o objetivo principal (se não apenas) da técnica é esclarecer essas incertezas, você não se beneficiará muito dela se não tiver nenhuma ou se não interessar à arquitetura ou ao design. Um projeto greenfield sem restrições arquitetônicas é um exemplo típico de quando começar com um Tracer Bullet é quase a única coisa sensata a ser feita, enquanto um projeto maduro com alguns novos recursos para implementá-lo provavelmente seria uma perda de tempo (embora pode haver incertezas quanto aos requisitos, esclarecendo-os é mais o domínio do desenvolvimento geral ágil ou iterativo).

Michael Borgwardt
fonte
0

Me deparei com o conceito de desenvolvimento do Tracer Bullet no livro Ship It! , editado pelos programadores pragmáticos .

Eu acho que na sua pergunta, você está se referindo ao livro O Programador Pragmático: Do ​​Journeyman ao Master . Eu não li esse e não sei como o TBD é apresentado lá. Em Ship It! , há um capítulo (20 páginas) dedicado ao TBD. Em particular, eles falam sobre sua experiência com um exemplo concreto: um aplicativo de datamining para uma empresa de biotecnologia. Basicamente, eles explicam que ter boas camadas de abstração (projetadas usando TBD) os ajudou a remover os gargalos de desempenho um por um, paralelizando cada camada.

Na minha opinião, TBD é duas coisas:

  • Crie uma arquitetura de software isolando os objetos do sistema e permita que os desenvolvedores colaborem para definir as interfaces entre esses objetos do sistema
  • Use objetos simulados para garantir que a arquitetura seja sustentável (teste a arquitetura mais cedo)

Eu acho que o primeiro ponto é uma maneira muito boa de arquitetar um software, não importa o quê. O segundo ponto é interessante: ele pode impedir uma reescrita completa de um projeto devido a uma arquitetura inicial que não funciona na prática.

barjak
fonte