Table of Contents
Nesse artigo vamos falar um pouco sobre como realmente usar AI para agilizar o processo de criação e saída da inércia com projetos de desenvolvimento.
Que fique claro: A ideia não é para substituir nosso pensamento crítico ou simplesmente deixar que a LLM faça todo o trabalho (Apesar de que ela irá fazer uma boa parte! Você entendeu!!), dificilmente ela irá criar algo que seja realmente bom e que principalmente seja seguro como as boas práticas orientam.
Primeira dica
Sempre que possível faça commits, isso vale para todos os cenários, mas principalmente quando estivermos usando um agente de AI para auxiliar no desenvolvimento.
O motivo? Bom. Imaginemos o seguinte cenário:
- O agente implementa uma primeira versão, as coisas funcionam de certa maneira, tudo parece ok e funcional.
- Agora você decide pedir outra coisa, uma alteração simples aqui e ali.
- O agente "pensa" por 3 minutos e... ele desfez toda a primeira versão e agora te sugeriu algo completamente diferente e com um adicional especial: nada funciona mais.
Experiência de quem passou por isso... 🥲
Então, faça commits por partes, após garantir e que tudo está seguro para a próxima alteração, continue com as instruções, se algo der errado, é só voltar a versão anterior. Vai por mim, vai te salvar alguns minutos e deixar o processo ainda mais tranquilo.
Iterações, iterações, iterações...
Um dos pontos mais interessantes de se utilizar um agente focado em código é a habilidade de análise e codificação rápida que temos em mãos, quando entendemos o que precisamos fazer e como fazer, o uso de AI se torna bem mais evidente, como podemos ver no seguinte exemplo:

Essa é a resposta que o agente me forneceu, após uma primeira sessão de código, fiz o prompt inicial e obtive um bom resultado, mas agora queria ir mais longe, para criar uma aplicação que seja menos "caótica" e que seja fácil de ser lida por seres humanos (no caso eu mesmo) no futuro, não podemos dispensar o uso do bom senso e de seguir as boas e velhas práticas de um código bem escrito.
Então instruí a LLM a começar a pensar em modularização, separando a aplicação em bibliotecas independentes utilizando o conceito de Single Responsibility. Para isso podemos usar um framework para facilitar a implementação, como é o caso do Flutter Modular, Ng Modules, PNPM Workspaces, NX, etc.
Melhorando as instruções para o Agente
Um dos principais pontos que notei ao utilizar os agentes é a falta ou perca de contexto sobre alguns detalhes, a maioria das ferramentas de AI hoje em dia possuem uma boa janela de contexto, mas isso não quer dizer que o agente possa se perder em meio a tantas instruções.
O que é janela de contexto?
Traduzido do inglês Context Window, é um conceito presente no campo de AI/LLMs, basicamente se refere ao tamanho da "memória" que um modelo de machine learning pode acessar durante uma sessão de interações, quanto maior a "janela" melhor, ou seja, o modelo irá se "lembrar" melhor das últimas conversas.
Como é o caso ao se utilizar essas ferramentas em uma sessão de codificação mais longa, a medida que vamos solicitando ajustes e implementações, o agente acaba perdendo um pouco das regras, algo como uma falta de "atenção à detalhes".
Para resolver isso, podemos usar uma estratégia simples, mas efetiva, seja usando o tradicional arquivo README que geralmente contém informações sobre o projeto e decisões técnicas, ou também um arquivo chamado, o {CODING_AGENT}.md.
{CODING_AGENT}pode ser diferente a depender do agente que esteja utilizando, como por exemplo:CLAUDE.mdouGEMINI.md.
Por exemplo, com o Gemini CLI, Claude Code e outros, podemos criar esse arquivo e definir algumas instruções importantes que o agente irá consultar sempre que receber uma nova instrução.
Algo interessante que podemos fazer é sempre que o agente gerar algo não esperado, podemos instruir de maneira que ele corrija e ainda pedir que adicione no arquivo
.md.

Ainda preciso escrever código?
Bom, sim, ao meu ver muito ainda, não acredito que a AI irá substituir o trabalho de um bom dev, e isso fica ainda mais evidente quando utilizamos essas ferramentas de AI durante o processo criativo, veja só:

Na imagem acima, solicitei o agente para gerar um componente bem comum em aplicativos mobile a "BottomSheetModal", até ai tudo bem, mas o comportamento não foi o esperado, como podemos ver abaixo:


Da esquerda para a direita: 1. Versão com erro gerada pela AI - 2. versão corrigida por mim
Parece uma modificação simples, mesmo solicitando para o agente a correção ele ainda assim não conseguiu resolver (inventou todo um esquema desnecessário), a solução era mais simples do que parecia:
void _showAddContentMenu(BuildContext context) {
showModalBottomSheet(
context: context,
useRootNavigator: true,
builder: (_) {
...
);
}
Ao usar a propriedade useRootNavigator, o component da modal será exibido a partir do objeto raiz de navegação, o que fará o componente sobrepor quaisquer outras camadas que estejam no mesmo local (sendo este o comportamento esperado, observe acima a imagem da direita).
Esse entendimento de como as coisas funcionam e onde ajustar continuará sendo extremamente importante, precisamos manter o pensamento crítico sobre tudo o que a IA ou qualquer outra ferramenta nos vende como a "verdade".
Devemos sim usar as ferramentas, mas não delegar a elas a chance de aprender e sermos bons profissionais a cada dia.
Não basta só reproduzir prompts e seguir no simples "vibe coding", precisamos entender o que e porquê estamos fazendo, dessa forma seremos nós que estaremos à frente sendo mais produtivos utilizando as ferramentas e não dependendo delas (ou sendo usados por elas).