Mudanças nos limites de responsabilidade provocadas pelo Codex
Gerar código é rápido, mas o que é realmente caro é mudar silenciosamente a questão de "quem é responsável pela verificação"
Quando apresentei o Codex à equipe em larga escala pela primeira vez, a primeira coisa boa foi que finalmente estava disposto a fazer algumas pequenas mudanças.
Uma situação comum no passado era que todos sabiam claramente: este código precisa ser refatorado, este script precisa ser testado e este limite precisa ser registrado. Mas eles estão todos presos na mesma realidade. Você tem que prestar atenção aos custos para começar a escrever e revisar depois de escrever.
Codex reduz o “atrito prático”.
Os problemas começaram a surgir a partir daquele dia.
Porque à medida que o atrito diminui, os limites da responsabilidade também se movem silenciosamente.
Superficialmente, você pode pensar que está comprando autores mais rápidos, mas o que na verdade está comprando são mais mudanças. Quando há demasiadas mudanças, o sistema necessita de uma aceitação mais clara e de mecanismos de controlo mais fortes.
Caso contrário, a eficiência do Codex será dada de outra forma: acidentes on-line, fadiga de revisão e retrabalho que “parece certo, mas é instável” repetidas vezes.
Como as coisas gradualmente se tornaram “o revisor é responsável”
Na primeira semana após a introdução do Codex, todos o usaram com muita moderação.
-Escreva um widget
- Alterar o nome de um parágrafo
- Adicione um julgamento if
Estas mudanças, se não forem perfeitas, acarretam riscos limitados.
A partir da segunda semana, as mudanças ficaram maiores.
Algumas pessoas começaram a pedir ao Codex para “organizar o código circundante”, algumas pessoas começaram a pedir para “refatorar este módulo junto”, e algumas até substituíram uma seção inteira de lógica complexa por uma versão gerada.
Nesta fase, a frase mais comum é:
Olha, o código está todo escrito e a lógica está correta.
O problema é que há uma substituição oculta nesta frase.
No passado, o autor era o principal responsável por saber se a lógica estava correta ou não. O autor precisa passar por uma convergência completa ao escrever: motivos das mudanças, quais são os limites, o que acontecerá se falhar e como reverter.
Codex nivela o processo de convergência no meio. O autor passa a ser “aquele que faz exigências” e deixa a restrição para o revisor.
Portanto, o limite de responsabilidade começa em:
- O autor é responsável por convergir as alterações até que estejam prontas para lançamento
tornou-se:
- Os revisores são responsáveis por filtrar as alterações até que não causem problemas
Esta não é uma questão moral, é uma questão mecânica.
O modo de gerar código tende naturalmente a “escrever uma versão primeiro” em vez de “pensar claramente sobre os limites primeiro”. Esta transferência de responsabilidade ocorre enquanto o processo não explicita os limites.
Muitas vezes o preço será pago em três lugares imediatamente
1) A revisão se torna “arqueologia”
No passado, a revisão analisava as escolhas do autor:
- Use isso para alcançar
- Dividir nessas funções
- Adicione esta proteção aqui
Agora a revisão analisa a saída:
- Este código gerado perdeu algum limite?
- Foram introduzidos novos efeitos colaterais?
- Você mudou discretamente a semântica da lógica antiga?
Não é o mesmo tipo de trabalho.
A primeira é julgar o processo de raciocínio do autor, e a segunda é encontrar armadilhas em códigos desconhecidos. Este último é mais caro e depende mais da familiaridade do revisor com o contexto.
Em breve você verá um fenômeno:
- O código é mesclado
- Algo deu errado on-line
- Durante a revisão, ninguém soube dizer por que foi escrito assim.
Porque o “porquê” nunca é escrito.
2) O teste é tratado como “opcional”
A maior tentação na geração de código é: ele parece completo.
As funções são lindamente divididas, os nomes são os mesmos e até mesmo alguns testes individuais adicionais são fornecidos.
O problema é que esses testes unitários geralmente “verificam a implementação” em vez de “verificam os requisitos”.
Os sintomas típicos são:
- Maior cobertura
- Muitos acidentes
Porque o que falta são critérios de aceitação, não um formato JUnit/pytest.
3) O caminho de reversão foi esquecido
Mudanças manuscritas geralmente levam a pensamentos naturais de “e se não funcionar”.
Gerar mudanças pode facilmente dar a ilusão de que esta é uma implementação mais limpa e deve funcionar bem.
Mas a coisa mais dolorosa online é “as mudanças são muito grandes e você não pode voltar atrás”.
Quando as alterações geradas abrangem vários arquivos e são refatoradas em vários locais, a reversão não se trata mais de desfazer um commit, mas de reconstruir a semântica antiga.
Esta é a conta mais cara depois que os limites de responsabilidade são alterados.
Para trazer de volta os limites da responsabilidade, o que precisamos fazer é não “desativar o Codex”
Quando muitas equipes veem esses problemas, a primeira reação é restringir seu uso:
- Desativar geração de segmentos grandes
- A modificação dos módulos principais é proibida
- A lógica chave deve ser escrita à mão
Estas regras são úteis a curto prazo, mas rapidamente se tornam formalistas.
A abordagem verdadeiramente eficaz é avançar a parte da “responsabilidade do autor” para o processo de uso do Codex.
Finalmente reduzi a quatro requisitos rígidos. Se faltar um deles, não vou desistir:
- A intenção de mudança deve ser escrita de forma clara: descreva o comportamento a ser mudado em uma frase, não “refatore-o”.
- Os critérios de aceitação devem ser aplicáveis: quais são as entradas, quais são as saídas esperadas e como se comportar em caso de falha.
- O limite de risco deve ser listado: Quais chamadores são afetados por esta mudança e qual é o pior cenário?
- O plano de reversão deve ser claro: para qual versão reverter, como processar os dados e onde está a opção de downgrade.
O Codex pode ajudar a escrever implementações, mas não pode substituir esses quatro itens.
Mais importante: depois de escrever esses quatro itens, a resenha ficou mais leve.
O revisor não precisa adivinhar “o que exatamente você quer fazer” no código, mas apenas julgar “se a intenção escrita e a implementação são consistentes”.
Os mal-entendidos mais comuns
Mal-entendido 1: Tratar o Codex como “um novato que pode escrever código”
Os recém-chegados ficam presos em lugares que não conhecem, fazem perguntas e expõem incertezas.
O Codex não.
Ele lhe dará a resposta que parece mais confortável quando você não tem certeza. Sem critérios de aceitação, isso enterra a incerteza no código.
Mito 2: Usar mais palavras rápidas para compensar processos de engenharia ausentes
Palavras-chave podem ajudá-lo a se aproximar mais do estilo, mas não podem substituir o mecanismo de controle.
Colocar processos ausentes no prompt resultará em uma “memória organizacional que é gravada cada vez mais”, mas não tem controle de versão, nem estratégia de reversão, nem exercícios de falha.
Mal-entendido 3: Contando apenas “quanto tempo é economizado”
A métrica mais perigosa é: quanto tempo de desenvolvimento é economizado por requisito.
Porque levará todos a buscar um escopo maior de geração.
Prefiro focar em dois indicadores:
- Gerar taxa de retrabalho após integração da mudança
- Proporção de incidentes introduzidos por mudanças de geração
Eles estão relacionados aos limites de responsabilidade.
Limites aplicáveis
Nem todas as equipes precisam de restrições tão pesadas.
Se o sistema for pequeno o suficiente, os lançamentos forem frequentes o suficiente e as reversões forem simples o suficiente, o risco do Codex será engolido.
Mas uma vez cumprida qualquer uma das seguintes condições, os limites de responsabilidade devem ser explicitados:
- As alterações afetarão links de alto custo, como pagamento, controle de risco e aprovação
- Longo ciclo de lançamento e alto custo de reversão
- A propriedade do código é ambígua e a revisão já é um gargalo
Nesses cenários, o “mais rápido” do Codex irá primeiro passar para mais lento.
Resumo
Codex certamente torna a escrita de código mais rápida.
Mas o que realmente muda é a resposta padrão da equipe para “quem é responsável pela mudança?”
Se a intenção, a aceitação, os limites e as reversões não forem levados adiante, a responsabilidade passará naturalmente para o revisor.
No final, você descobrirá que o que se economiza não é o tempo de desenvolvimento, mas sim a atenção de toda a equipe. Esta conta é muito mais cara que o token.
What to read next
Want more posts about Uncategorized?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home