DEV Community

Rodrigo de Avila
Rodrigo de Avila

Posted on • Originally published at docs.rda.run

O Imperativo da Velocidade: A Lei de Boyd e o Ciclo OODA no Software

A base para a estabilidade no desenvolvimento de software reside na filosofia da "tecnologia tediosa". Contudo, o imperativo da velocidade é impulsionado pela "Lei da Iteração de Boyd". Originalmente aplicada à análise de combate aéreo militar, esta lei revela que a velocidade do ciclo de aprendizagem é mais crucial do que a qualidade de uma decisão individual. Ao combinar a estabilidade proporcionada pela tecnologia tediosa com a agilidade da Lei de Boyd, cria-se uma sinergia poderosa, resultando em um desenvolvimento de software sustentável e de alta velocidade.

O Ciclo OODA: Vantagem do Ritmo

A lei formulada pelo Coronel da Força Aérea dos EUA, John Boyd, surgiu após a análise dos combates aéreos na Guerra da Coreia. Boyd notou um paradoxo: embora o caça a jato americano F-86 fosse tecnicamente inferior ao MiG-15 soviético em quase todos os indicadores de desempenho, como taxa de subida e raio de viragem, os pilotos de F-86 venciam seus adversários em uma proporção de nove para um.

A conclusão de Boyd foi que o fator determinante para a vitória não era a superioridade em observar, orientar, decidir ou agir, mas sim a capacidade de executar este ciclo — denominado ciclo OODA (Observar, Orientar, Decidir, Agir) — mais rapidamente que o oponente. O piloto que conseguisse completar seu ciclo OODA de forma mais ágil conseguia interferir no processo de tomada de decisão do adversário, gerando confusão e desorientação, e assim, obtendo a vantagem.

A razão pela qual o F-86 conseguia iterar mais rapidamente era surpreendentemente simples: seus controles de voo eram totalmente hidráulicos,enquanto os do MiG-15 eram manuais e demandavam maior força física para operar. A cada manobra, o piloto do MiG-15 ficava um pouco mais fatigado, retardando marginalmente seu ciclo OODA. Ao longo de um combate aéreo, essa pequena desvantagem de atrito acumulava-se, permitindo ao piloto do F-86, menos fatigado, ditar o ritmo do confronto. Essa analogia é profundamente relevante para o desenvolvimento de software: o atrito, seja ele cognitivo ou processual, é um obstáculo à velocidade.

A Lei de Boyd no Desenvolvimento de Software

No desenvolvimento de software, a rapidez na iteração é mais crucial do que a qualidade individual de cada iteração. A capacidade de testar hipóteses, obter feedback, aprender e adaptar-se rapidamente é mais valiosa do que buscar a solução perfeita desde o início. Conforme demonstrado por Jeff Atwood, o ciclo OODA (Observar, Orientar, Decidir, Agir) é aplicado a práticas de desenvolvimento modernas, todas focadas em acelerar o ciclo de feedback:

  • Testes Unitários Rápidos: Testes devem ser concisos e executados em segundos. Testes demorados levam os desenvolvedores a executá-los com menor frequência, atrasando o feedback sobre a qualidade do código.
  • Testes de Usabilidade Ágeis: A realização de pequenas alterações e testes regulares com usuários permite que as equipes identifiquem rapidamente o que não funciona, evitando o investimento prolongado em direções equivocadas.
  • Metodologias Ágeis: A maioria das abordagens ágeis sugere iterações (sprints) de no máximo quatro semanas. Isso garante a entrega contínua de valor e a reorientação com base no feedback recebido.
  • Falhar Cedo, Falhar Frequentemente: O propósito dos testes de software não é comprovar sua funcionalidade, mas sim identificar falhas o mais cedo possível no ciclo de desenvolvimento, quando são mais baratas de corrigir.

Em todos esses cenários, o princípio subjacente é o mesmo: encurtar o ciclo OODA. O objetivo é aumentar o número de iterações em um determinado período, acelerando assim a aprendizagem e a adaptação organizacional.

Estabilidade e Velocidade: Uma Relação Simbiótica

A filosofia de "escolher tecnologia tediosa" e a "lei da iteração" de Boyd, embora distintas, são interdependentes e se fortalecem mutuamente. A estabilidade e previsibilidade de tecnologias "tediosas" são cruciais para acelerar o ciclo OODA de uma equipe de desenvolvimento, minimizando atritos.

A analogia do F-86 ilustra isso: sua vantagem não veio de uma tecnologia revolucionária, mas de uma que reduzia a fadiga do piloto, ou seja, o atrito. No desenvolvimento de software, tecnologias novas e não comprovadas geram atrito e fadiga cognitiva. Engenheiros gastam tempo e energia desnecessários ao lidar com stacks desconhecidos. A "Ignorância Produtiva" — admitir não conhecer uma nova ferramenta e preferir uma já dominada — reduz esse atrito, permitindo que a equipe itere mais rapidamente na resolução de problemas reais.

Em um stack desconhecido, o ciclo OODA (Observar, Orientar, Decidir, Agir) é impactado negativamente:

  1. Observar: Dificuldade em identificar a causa de um bug ou quais métricas monitorar.
  2. Orientar: Desafios para entender o contexto de um sistema complexo e desconhecido, dificultando o raciocínio sobre causas e efeitos.
  3. Decidir: Planejar uma correção torna-se arriscado devido à incerteza das implicações, levando à paralisia da análise ou soluções excessivamente cautelosas.
  4. Agir: A implementação da correção é lenta e propensa a erros, com ciclos de depuração prolongados devido a falhas inesperadas.

Por outro lado, um stack tecnológico "tedioso" e bem compreendido minimiza o atrito em todas as etapas do ciclo OODA. A equipe sabe onde procurar bugs (Observar), entende o sistema e suas interdependências (Orientar), pode prever com confiança o impacto de mudanças (Decidir) e implementar correções de forma rápida e segura (Agir).

Ao reduzir a sobrecarga operacional e cognitiva, a tecnologia tediosa atua como os controles de voo hidráulicos do F-86. Ela libera a energia da equipe para que se concentrem na execução eficiente do trabalho, em vez de lutarem contra suas próprias ferramentas. A estabilidade não se opõe à velocidade; ela é o fundamento sobre o qual a velocidade sustentável é construída.

No próximo artigo, vamos explorar como implementar ciclos OODA mais rápidos através de práticas específicas de desenvolvimento, demonstrando como acelerar iterações sem comprometer a estabilidade do sistema.

Top comments (0)