Reflexões do uso extensivo de IA sem se preocupar com arquitetura e testes
Faz +-2 semanas que lancei a versão 2.0 do Barbatos, onde refiz o projeto quase inteiro. Vou compartilhar o porque eu refiz e também reflexões que eu acredito que todos nós deveríamos ter.
Lição número 1:
O contexto: Para fazer o Barbatos funcionar na sua primeira versão, eu havia desenvolvido com IA grande parte do projeto. Depois que ele ficou “estável” e eu fui fazendo melhorias, eu percebi que comecei a ter regressões: basicamente, mexia em um lugar e quebrava outro.
É de conhecimento geral que uso de testes automatizados resolveriam isso, mas ignorei e segui sem kkkk, priorizei fazer funcionar. Acho que por ser um projeto pessoal, até vai não adicionar testes, depende do quanto você se importa com ele e quanto tempo quer gastar aumentando a cobertura.
Agora, em um ambiente profissional onde temos acessos as melhores IAs com vários tokens pra gastar, “economia de tempo” como desculpa para não implementar testes ja não cola mais… Na real, justamente por ter uma IA mexendo nos arquivos do projeto é que voce deveria se preocupar com esses ‘guard rails’. Um exemplo clássico: se seu projeto tem cobertura de testes apenas para uimodel e demais funções, MAS ele contém telas e fluxos, já é um indicativo que pode haver regressão e você nem vai perceber.
Um exercício mental de se fazer é: suponha por um momento que você vai intencionalmente adicionar um bug no seu projeto. Em qual lugar da para colocar ele de forma que os testes deem todos certo ✅ ? A resposta dessa pergunta também responde a “quais são os lugares que falta cobertura teste?”.
Lição número 2:
Como a IA tinha feito a fundação e quase todas as features do projeto, eu tinha um conhecimento raso de como estava estruturado. Então adicionar melhorias era custoso, pois eu não conseguia dar um direcionamento claro de como eu queria que ficasse, justamente por não saber como está.
Teve um blogpost que eu li um tempo atrás que dizia sobre o conceito de Arquiteto de Software “Ivory Tower”:
Ivory Tower (noun): a state of privileged seclusion or separation from the facts and practicalities of the real world.
Um “arquiteto ivory tower” é aquele que está desconexo da codebase, dá soluções mesmo desconhecendo como funciona os pormenores do código. Esse conceito veio algumas vezes na minha mente quando eu não sabia como funcionava meu próprio projeto, e acredito que isso aumentou a chance de causar regressões.
Eu vejo potencial nesse projeto; então ao invés de abandoná-lo, eu decidi refazer ele de forma ‘artesanal’, usando a IA no máximo como autocomplete e tirador de dúvidas. Agora que eu fiz a fundação eu tenho capacidade de dar contexto suficiente para evoluir o código num caminho que se encaixe com a arquitetura que eu projetei. Ou seja, influencia na eficiencia do uso da IA e também na detecção de códigos que vão em desacordo com o que era planejado.
No final essas 2 lições que citei são apenas reflexões que pude extrair desse projeto, espero que faça mais pessoas refletir.