Vamos Falar sobre Projeteis Luminosos.

A priorização é um dos pontos mais delicados do gerenciamento de projetos. Durante a concepção de um novo software, em uma pipeline de animação, no design de um novo sistema ou de uma nova funcionalidade a ser implementada, sempre dividimos o desenvolvimento em diversas partes. Mas como priorizamos o que precisa ser feito?

Alguns optam por começar pelo mais fácil, outros pelo mais difícil, mas esses lados não levam em conta algo muito importante: a improbabilidade.

Às vezes, a parte que você achava fácil não é tão fácil assim e vai atrasar o resto do desenvolvimento. Ou você pode achar que a parte que era tão difícil não era tão difícil assim, mas por isso você acabou não tendo tanta visibilidade para uma dificuldade posterior.

Pode ser uma improbabilidade tecnológica, de equipe, de integração, de pessoas ou até mesmo de negócio. A improbabilidade é sempre uma constante em diversos formatos e, na indústria de software, inclusive é a causa de muitos bugs.

Muitos tentam mitigar esse fator, mas eliminá-lo é impossível. Uma das ferramentas que podemos usar para isso são os projéteis luminosos.

Para explicar os projéteis luminosos, prefiro exemplificar com um caso real:

Um dia, estava desenvolvendo um teste que consistia em fazer uma API com 3 endpoints que no fim em consultavam uma API de terceiros. Um endpoint salvava um recurso, o outro listava ordenado e o terceiro achava um recurso específico na API. Minha primeira pergunta foi: o que fazer primeiro?

Então, utilizei uma abordagem um pouco diferente: escolhi a funcionalidade que é mais simples, mas que cobre o software de uma ponta a outra, no caso, o terceiro endpoint.

Nesse caso, o terceiro endpoint da tarefa tinha algumas camadas principais:

  • Middleware HTTP

  • Service

  • Camada de requisição para API de terceiros

  • Arquitetura inicial incluindo camada de interfaces

  • Camada de DevOps como containers

Todos os outros endpoints irão usar essas mesmas camadas. A única coisa que alguns endpoints terão que este não tem é uma camada de repositório de dados, mas, sinceramente, com todo o sistema já construído, a improbabilidade dessa parte é minimizada.

Com essa abordagem quase todas as partes do meu sistema foram "iluminadas” e se tivesse algum problema com elas eu ja saberia, e se não tivesse, eu ja saberia também por que elas foram implementadas

Essa abordagem que usei se chama projéteis luminosos, que prega a priorização de uma funcionalidade que cobre uma ponta a outra do software, mesmo que seja uma funcionalidade básica, porque ela diminui a improbabilidade.

Ela inclusive tem esse nome por causa do termo: "Se você for atirar com uma metralhadora no escuro, você tem duas opções: a primeira é fazer vários cálculos levando em conta o peso da bala, nível do ar, recuo da arma e assim atirar. A outra forma é usar um projétil luminoso que brilha entre algumas rajadas de bala. Se o projétil acertar, as balas estão acertando. Se o projétil errar, você sabe onde tem que recalcular. Inclusive, como esse projétil está no mundo real, diminui a improbabilidade.”

E é isso que um projétil luminoso é: uma funcionalidade que implementa todas as camadas do projeto de uma ponta a outra, em que testa se o projeto em si funciona e tem embasamento, diminui improbabilidades e, após isso, todo o resto do projeto será acoplado a partir dele.

Link sabe usar Projeteis Luminosos no novo The Legend of Zelda Tears of the Kingdom

Um exemplo não tão técnico assim pode ser o ramo da animação. Se fossemos fazer um longa animado, para desenvolvermos uma animação inovadora ou uma parte do storytelling diferente, seria mais fácil fazermos uma parte da animação de ponta a outra, em vez de testarmos todo o storyboard pensando em uma animação para depois vermos que essa animação não é a correta.

A segunda opção é claramente mais custosa, e por isso empresas como Pixar, Dreamworks e Sony Animations Studios usam o primeiro processo.

Lembrando que isso é diferente de uma POC (Proof Of Concept, para os startupeiros) porque elas são normalmente descartáveis após o teste, enquanto o projétil luminoso é parte do projeto e inclusive servirá de base para as outras partes do projeto serem implementadas ao redor dele.

Então, para recapitular, os Projéteis Luminosos são pontos que atravessam de uma ponta a outra do seu projeto para você e sua equipe diminuírem a improbabilidade. E isso é um bom item para priorizar no seu projeto, porque se você acerta em um item desse, você já tem boa parte das camadas e etapas mapeadas, e diminui erros. Portanto, eu sempre recomendo verificar onde tem itens de uma ponta a outra do seu software que tem algum ponto que podem dar errado e prioriza-los.

Aprendemos também que isso, apesar de ter surgido na indústria de software, não é exclusivo a ela. Podemos usar em qualquer indústria, na verdade. Planejo, é claro, trazer em outros artigos outros meios de desenvolvimento de projetos mais saudáveis.

Bibliografia: