Capacidades do desenvolvedor sênior na era da IA: aproveitando a experiência para obter resultados melhores
(manuel.kiessling.net)- Nos últimos meses, experimentei usar ferramentas de programação baseadas em IA tanto em projetos pessoais quanto no trabalho
- Os resultados foram muito positivos, e vivi na prática tanto a redução do tempo de desenvolvimento quanto a melhora da qualidade das entregas
- Por outro lado, alguns desenvolvedores também compartilham feedback negativo de que as ferramentas de IA não funcionam bem
- Com essa experiência, passei a ter convicção de que o desenvolvimento de software com IA tem potencial para dar um salto para o próximo nível em produtividade
- Mas isso exige não uma adoção acrítica, e sim a perspectiva correta e uma abordagem equilibrada
- Neste texto, compartilho boas práticas que vivenciei e descobri diretamente para
ajudar, ainda que um pouco, a acelerar a adoção inteligente de ferramentas de IA na comunidade de desenvolvimento como um todo
Situação atual do uso de ferramentas de programação com IA
- Pelo que observei no Twitter, as ferramentas de programação com IA estão fazendo muito sucesso entre desenvolvedores não especializados
- Eles estão usando IA para encarar novos projetos e aprender a desenvolver de forma prazerosa
- Essa tendência é positiva e contribui para reduzir a barreira de entrada da tecnologia para novos públicos
- No entanto, isso é apenas um dos aspectos do potencial das ferramentas de IA e,
- mesmo em contextos profissionais, como no caso de desenvolvedores sênior, a IA pode oferecer grande valor
Os pontos fortes do desenvolvedor sênior
- Embora ainda estejamos em um estágio inicial de evolução, a conclusão até aqui é a seguinte:
- Desenvolvedores sênior estão na melhor posição para usar ferramentas de IA com máxima eficácia
- Não se trata apenas de receber ajuda, mas de otimizar o uso dessas ferramentas
- O ponto central é o seguinte:
A experiência de desenvolvimento e o know-how de condução de projetos, que podem até parecer um pouco antiquados na era da IA,
são justamente a base para tirar o melhor proveito dessas ferramentas - Se fôssemos comparar um agente de programação baseado em LLM,
- ele se parece mais com um sênior com enorme conhecimento de programação, mas que no contexto atual é um júnior com pouca compreensão do design
- Por isso, para delegar trabalho real a esses agentes,
- preparação estratégica e orientação são indispensáveis
- e a pessoa ideal para exercer esse papel é justamente o desenvolvedor sênior
- Em resumo, até mesmo ferramentas de IA de ponta só podem ser usadas com máxima eficácia quando apoiadas em práticas tradicionais de desenvolvimento e experiência acumulada
Três elementos centrais para uma sessão de programação com IA bem-sucedida
- Para obter bons resultados colaborando com IA, os seguintes três elementos são importantes:
- Documentação de requisitos bem estruturada (Well-structured Requirements)
- Guard rails de qualidade baseados em ferramentas (Tool-based Guard Rails)
- Técnica de keyframing baseada em arquivos (File-based Keyframing)
- Antes da explicação detalhada, vale apresentar alguns casos práticos de projetos usando IA
- Projeto green-field: um projeto criado do zero
- Projeto brown-field: um projeto em que novos recursos são adicionados sobre uma base de código existente
- Em ambos os casos, o foco está em exemplos em que a IA assumiu quase toda a implementação
- Não como simples apoio de autocompletar ou assistente conversacional,
mas com foco em executar trabalho real no modo agente
- Não como simples apoio de autocompletar ou assistente conversacional,
- A ferramenta usada foi o Cursor,
- com base no modelo Claude Sonnet 3.7, da Anthropic
- oferecendo recursos para modificar diretamente todos os arquivos do projeto e executar comandos relacionados
Exemplo 1: Platform Problem Monitoring (projeto green-field)
- Usando Cursor e Claude, foi implementada uma nova aplicação chamada Platform Problem Monitoring
- Código-fonte: link no GitHub
- Esse app se conecta a cada hora ao servidor Elasticsearch do ELK para coletar mensagens de erro e envia um relatório por e-mail formatado resumindo o estado atual dos problemas da plataforma web
- Toda a implementação foi feita pela IA, e nenhuma linha de código foi escrita manualmente
- O autor não tem grande familiaridade com a linguagem Python, mas
- graças a uma ampla compreensão de arquitetura, operações e boas práticas, o trabalho pôde avançar sem atritos
- esse projeto também foi uma oportunidade de testar o quanto a IA pode ajudar em uma stack tecnológica pouco familiar
Observação: problemas de qualidade de código
Na discussão no HackerNews, foram apontados problemas de qualidade de código, como configuração de logging, parsing de configuração customizada e race conditions
O objetivo desse projeto era mais a criação rápida de um protótipo do que código de produção,
com foco em entregar funcionalidade, e não em manutenção de longo prazo ou convenções idiomáticas da linguagem
Exemplo 2: Process Management UI Integration (projeto brown-field)
- Um caso de integração de UI a uma funcionalidade de backend legada baseada em PHP/Symfony
- O backend operava por comandos CLI baseados em cron, e não havia UI
- A ideia era integrar essa funcionalidade a uma aplicação Symfony moderna
- aproveitando uma estrutura amigável para UI, com base de código atual, suíte de testes e guia de estilo
- Principais tarefas:
- Comunicação com o sistema legado via HTTP API
- Implementação de transferência de dados entre sistemas
- Construção das telas de acordo com o design system da UI
- Implementação de um cliente de API dentro de um bundle Symfony compartilhado
- Com exceção dos arquivos-keyframe, toda a implementação foi realizada automaticamente pela IA
Principais insights obtidos nos dois projetos
- Projeto green-field: mesmo em uma stack pouco familiar, foi possível implementar um app funcional com ajuda da IA
- Projeto brown-field: apesar de UI ser uma tarefa menos familiar, a IA permitiu concluir a funcionalidade rapidamente
- Esses dois casos mostraram, na prática, que ferramentas de IA podem gerar mudanças reais tanto na produtividade individual quanto no workflow da equipe como um todo
- No entanto, para que a IA economize muito tempo, é necessário um investimento inicial em setup e uma abordagem estratégica
- assim como ao orientar bem um desenvolvedor júnior talentoso para obter os melhores resultados
A importância de escrever requisitos com precisão
- O coração de uma sessão de programação com IA bem-sucedida é um documento de requisitos sistemático e abrangente
- No projeto real Platform Problem Monitoring, foi criado o documento REQUIREMENTS.md antes do início da sessão
- Esse documento tem 371 linhas ao todo e segue a seguinte estrutura hierárquica
- Nível mais alto: resumo em uma linha dos requisitos centrais
- Nível superior: casos de uso e motivação de desenvolvimento
- Nível intermediário: processos e forma de funcionamento
- Nível intermediário: arquitetura, stack tecnológica e restrições
- Nível inferior: detalhamento de etapas concretas de trabalho com base em entrada/saída/efeitos colaterais
- Um documento estruturado dessa forma também oferece à IA um framework claro, conduzindo a resultados mais precisos
- Escrever esse documento exige tempo e esforço, mas é um investimento indispensável para uma implementação bem-sucedida
- Um dos aforismos do desenvolvimento de software diz:
“Seis semanas de implementação economizam duas horas de planejamento”
- É uma frase irônica, mas carrega a verdade de que a ineficiência na implementação nasce da falta de planejamento
- Por isso, um projeto deve sempre começar no quadro branco, não no teclado, e esse princípio vale igualmente ao colaborar com IA
- Na prática, as sessões no Cursor começam com etapas como estas:
- Fazer a IA resumir os requisitos com suas próprias palavras
- Fazer a IA gerar um plano de execução
- Incentivar a IA a perguntar sobre pontos ambíguos
- Só depois dessa etapa de validação a IA é colocada no modo “Agent” para começar a implementação
Definindo guard rails de qualidade com base em ferramentas
- Se o documento de requisitos define o destino, os guard rails de qualidade ajudam a manter o caminho mais curto até esse destino
- Assim como um sistema de feedback em tempo real é importante durante o desenvolvimento, ferramentas de análise estática também ajudam muito a IA
- Por exemplo, é muito mais eficiente detectar preventivamente um null check ausente durante o desenvolvimento do que descobri-lo depois do lançamento por meio de contato de cliente
- Por isso, antes de iniciar uma sessão de programação com IA, são sempre configuradas as seguintes ferramentas de garantia de qualidade
- Tomando como base este exemplo de Makefile:
black,isort: formatação de códigoruff: lintmypy: checagem de tiposbandit: análise de segurança- a suíte completa de testes
- Tomando como base este exemplo de Makefile:
- Agentes de IA baseados em Claude conseguem reconhecer e usar essas ferramentas
- Ex.: se a checagem de tipos falhar, a IA ajusta o código por conta própria até passar
- Para validação funcional, também são fornecidas requisições de teste de API com comandos
curl- É impressionante ver a IA chamar diretamente os endpoints, verificar as respostas e melhorar o código
- Assim, guard rails baseados em ferramentas são um componente essencial para ajudar a IA a produzir resultados confiáveis
Técnica de keyframing baseada em arquivos
- A IA é forte em implementação criativa, mas pode carecer de direção quando se trata da estrutura do código ou da organização dos arquivos
- Para compensar isso, a estratégia usada é o file-based keyframing
- Essa técnica se inspira no método de keyframes usado na produção de animação:
- um animador experiente cria primeiro as cenas importantes (keyframes), e o restante é preenchido por assistentes
- isso permite elevar a eficiência sem perder qualidade
- Em projetos reais de programação com IA, arquivos stub vazios são criados antecipadamente antes da implementação
- por exemplo: endpoints de API, cliente de API, classes de controller, templates Twig etc.
- Esses arquivos-keyframe fornecem à IA informações de contexto importantes, como:
- forma de organização dos arquivos do projeto
- estrutura de namespaces
- convenções de nomenclatura
- padrões consistentes de código
- Em vez de explicar toda a estrutura por prompt, é possível aumentar a precisão de raciocínio da IA oferecendo pistas na própria base de código
- Essa abordagem também reforça o princípio, ainda importante na era da IA, de “dar nomes”
- como a IA opera com base em linguagem, textos carregados de intenção e significado levam a resultados melhores
Aplicação integrada em um caso real: implementação da UI do dashboard de contratos de assinatura
- A seguir, é apresentado um exemplo prático que integra em um único projeto os três princípios centrais descritos acima:
- documentação de requisitos bem estruturada
- guard rails de qualidade baseados em ferramentas
- técnica de keyframing baseada em arquivos
-
Visão geral do projeto
- Objetivo: implementar um dashboard web de UI somente leitura para visualizar em formato de tabela informações sobre contratos de assinatura dentro da plataforma
- Ambiente-alvo: ambiente multicodebase (monorepo)
backend-app: aplicação Symfony 5, onde os dados estão armazenadosjanus-christophorus: aplicação Symfony 7, que fornece a UIjanus-shared-bundle: inclui a implementação do cliente de APIjanus-webui-bundle: inclui style guide, configuração do Tailwind e templates Twig
-
Estrutura de requisitos
- Ler os dados do backend via API e exibi-los na UI de frontend
- Além do endpoint real da API, oferecer também suporte a modo demo (dados falsos para testes)
- A UI deve ser implementada de forma consistente com o style guide
- Cada camada é implementada com os seguintes componentes:
- endpoint de API
- cliente de API
- classe de serviço da camada de apresentação
- controller e template Twig
-
Trabalho preparatório para a sessão de IA
- Criar antecipadamente arquivos vazios em todas as codebases usando a abordagem de file-based keyframing
- Fornecer à IA o style guide existente, serviço de navegação e funcionalidades semelhantes como material de referência
- Permitir a execução de ferramentas de qualidade (como PHPStan) em cada codebase
- Ex.: uso do script
.dxcli/dxcli.sh quality
- Ex.: uso do script
-
Como os princípios integrados são usados
- Organização dos requisitos: explicar no prompt os requisitos detalhados e a estrutura do sistema
- Fornecimento de guard rails: incluir orientação para o uso de ferramentas de inspeção de código
- Fornecimento de keyframes: criar antecipadamente os arquivos a serem implementados para que a IA escreva código no lugar e no contexto corretos
-
Principais objetivos
- Oferecer rapidamente uma UI que permita entender de forma ampla as informações dos contratos
- Fornecer uma estrutura clara e pistas para que a IA possa fazer perguntas e elaborar um plano durante a implementação real
- Esse exemplo mostra muito bem o quanto a colaboração entre ferramentas de IA e experiência humana pode gerar uma sinergia poderosa
Conclusão: ferramentas de IA + experiência humana = a melhor combinação
- Ao fornecer requisitos bem estruturados, guard rails baseados em ferramentas e keyframes baseados em arquivos,
é possível aproveitar o poder da IA e, ao mesmo tempo, manter a qualidade do código e a consistência da arquitetura - Essas práticas tradicionais de desenvolvimento continuam válidas mesmo na era da IA e,
na verdade, produzem efeitos ainda maiores por meio da experiência e da capacidade de insight do desenvolvedor sênior - No fim das contas, a IA é apenas uma ferramenta, e
vivemos uma era em que a experiência e a habilidade humanas para usá-la corretamente são mais importantes do que nunca
1 comentários
Comentários do Hacker News
Um desenvolvedor Python experiente analisou um arquivo específico e apontou que ele estava cheio de erros típicos de um engenheiro de software júnior
load_json, que verifica se o arquivo existe e depois prossegue como se ele certamente existisseUm programador por hobby com 25 anos de experiência sente que LLMs e vibecoding prejudicam a criatividade
Um desenvolvedor com menos de 40 anos acha que a IA é útil como ferramenta para aliviar trabalho manual
Um usuário considera ineficiente gerar código com IA
Um usuário acha que a IA é útil em projetos novos (
greenfield), mas ineficiente em projetos existentes (brownfield)Um desenvolvedor começa os projetos fazendo um plano em arquivo Markdown
Um usuário acredita que a experiência em engenharia de software é importante na era da IA
Um usuário tenta aplicar o conceito de "surpresa" da teoria da informação aos LLMs
Um usuário tenta orientar o código gerado por IA por meio de desenvolvimento orientado a testes (TDD)
Um usuário se preocupa que o estado atual da IA não esteja alinhado com a direção futura do software
Um usuário sente que a IA está evoluindo rápido demais e isso pode ser avassalador