O que aprendi usando o Codex, o agente de programação da OpenAI
Estaria o fim dos programadores cada vez mais próximo?
Quando a OpenAI apresentou o Codex, confesso não ter ficado muito impressionado. Afinal, tenho sido um heavy user do Claude Code, cujo modelo de AI voltado para programação me parece bem superior. Além disso, são tantas ferramentas surgindo dia sim dia também que é necessário dar um basta e focar em uma coisa só.
No entanto, uma leve curiosidade começou a se formar quando eles anunciaram que o Codex estava disponível no celular. Isso já era um diferencial. O Claude Code é uma CLI, ou seja, roda no terminal. Já o Cursor é uma IDE, precisa de um computador minimamente decente. O que seria possível fazer pelo celular?
Foi então que me deparei com um excelente artigo por Zachary Proser onde ele fez um review do Codex, seus pontos fortes e fracos. Enfim, fui vencido: que tipo de hacker seria eu se não testasse todas as ferramentas, anyway? Afinal, tenho um blog e um canal no YouTube pra cuidar e conteúdo nunca é demais…
Mas antes de entrarmos nos pontos fortes e fracos da nova ferramenta, precisamos entendê-la: o que é o Codex?
Vamos começar com a definição da própria OpenAI: o Codex é um cloud-based software engineering agent. Ou seja, um agente capaz de replicar o trabalho de um engenheiro de software (SWE).
Esse é o momento ápice do ceticismo. Não foram poucas as promessas recentes de se substituir os programadores com a IA. Apesar disso, esse evento ainda parece distante. Inegavelmente os modelos tem ficado melhores e a velocidade do desenvolvimento aliado com a quantidade de players do mercado faz com que os mais otimistas considerem essa substituição uma questão de tempo. Mas o que a prática nos diz?
Como disse, tenho sido um heavy user das ferramentas de IA. Mas também sou engenheiro de software de formação, atuo na área, e portanto vou além dos side projects onde a IA costuma brilhar, mas que não substitui o trabalho “formal” de um programador num time de software de larga escala.
E a verdade é que o grande diferencial de humanos sobre as máquinas é a capacidade de pensar – no sentido metafísico da coisa – o que sempre nos dará um edge em relação às IAs, ainda que durante seu processo de desenvolvimento muitos que trabalhem de forma medíocre – no sentido literal da palavra – fiquem pelo caminho.
Portanto, é com bastante ceticismo que encaro a promessa de um software engineering agent. Certo, ele consegue programar. Mas ele consegue abstrair um problema? Identificar as preferências do stakeholder? Aderir aos standards da codebase? Propor abordagens diferentes? Antecipar problemas? A lista é longa.
Pois bem, foi com todas essas considerações que decidi testar o Codex, hoje disponível apenas no plano Pro do ChatGPT (e que custa módicos $200 por mês), e posso dizer que concluí os testes positivamente surpreso. Todo o processo foi documentado no YouTube.
Por que utilizar o Codex?
Indo direto ao ponto: qual a principal vantagem do Codex? No artigo mencionado acima, o autor imagina seu dia de trabalho ideal:
I'd like to start my morning in an office, launch a bunch of tasks, get some planning out of the way, and then step out for a long walk in nature.
Como grande entusiasta de se reduzir a carga cognitiva durante o trabalho, eu entendo o que ele quis dizer. Muitas tarefas do dia a dia do programador são pouco criativas, ou requerem um esforço mental significativo: ler documentação, encontrar o arquivo certo para se corrigir um bug, aderir a um padrão diferente do que se está acostumado, etc.
Além disso, qualquer um que trabalha em múltiplos projetos (como é o meu caso com o QuantBrasil, e outros toy projects como o MMA Trends e Portal Vasco) agradeceria se fosse possível navegar em tantos contextos diferentes sem estafar-se mentalmente. “Context switching is the productivity killer”, disse Elon Musk.
Eis então a principal vantagem do Codex: sendo um agente cloud-based cuja barreira para uso é tão simples quanto um app mobile, você consegue disparar tarefas para a AI de forma paralela, em múltiplos projetos, com mínimo desgaste mental. Com um limite tão generoso quanto 60 tarefas por hora (essencialmente ilimitado), essa ferramenta funciona como uma espécie de brain dump.
O fim do backlog
Explico. Considere que quando tenho uma ideia de funcionalidade, melhoria ou identifico um bug em um projeto, preciso registrá-lo de alguma forma. É comum usar gerenciadores de projeto como Linear ou Jira, ou simplesmente escrevê-los em uma nota ou softwares como Obsidian ou Notion. Depois, essa ideia registrada precisa virar uma tarefa. Ora, e se o próprio ato de registrar se tornasse uma tarefa? Esse é o mundo prometido pelo Codex.
Assim, seria possível disparar múltiplas tarefas buscando revisá-las depois, as mais simples sendo facilmente aprovadas, enquanto as mais intrincadas necessitando um cuidado maior. Evidente que um pressuposto para esse workflow funcionar é ter uma IA competente na arte de programar – e o modelo codex-1, que sustenta a nova ferramenta, tem um desempenho decente.
É preciso dizer, no entanto, que o modelo escolhido para desempenhar as tarefas foi fine-tuned para resolver os problemas “de uma tacada só”. Isso significa que iterar em uma tarefa não é a experiência mais agradável. Em verdade, cada nova iteração, se quiser ser testada, vira um novo pull request – mesmo dentro de uma mesma tarefa. Isso torna a experiência um pouco inconveniente, embora eu espere que isso seja resolvido em breve.
Onde o Codex funciona?
A grande pergunta então é: onde utilizar esse negócio? Da forma como ela se apresenta hoje, o principal caso de uso seria trabalhar em tarefas autocontidas e que exista uma referência clara existente na codebase. Por exemplo: na Leaderboard do MMA Trends o usuário pode selecionar o período (7, 30, all time). Com o Codex, bastou eu escrever “add last 90 days to the leaderboard” e pronto – ele buscou onde modificar e como estender a funcionalidade.
Assim, pequenas adições, principalmente no backend, ou tarefas de rotina como refatorar um componente ou uma função, adicionar testes unitários, fazer um linter passar, são excelentes candidatos para o novo agente.
Onde é necessário melhorar?
Mas é evidente que existe um conjunto grande de tarefas que não se encaixa no perfil. Em particular, qualquer experiência mais elaborada no frontend, uma vez que o agente não executa o código e portanto não consegue ver o resultado. Assim, o back-and-forth de criar um PR, dar o checkout localmente, pedir novas modificações e iterar, não é prático (além do mais, esqueça fazer isso enquanto caminha pelo parque).
Também, por questões de segurança, o Codex não tem acesso à internet depois que o ambiente é instalado. Isso significa que buscar uma documentação mais atualizada, ou interagir com outras ferramentas, está fora do escopo de trabalho. Sendo assim, o prompt precisa ser muito preciso (o que vai contra a praticidade original prometida pela OpenAI) ou a tarefa muito simples (como adicionar um botão na tela, mudar um texto de lugar, adicionar um filtro, etc).
Um workflow para se pensar
Gostaria de oferecer, enfim, um vislumbre de workflow que buscaria minimizar a carga cognitiva e ainda ser útil em projetos maiores e funcionalidades mais complexas. Utilizando o Codex como brain dump, ele é capaz de gerar um ponto de partida, mesmo que não ideal. Para a maioria das tarefas, um refino seria necessário. Mas nesse ponto, já existe um código, um contexto e uma intenção. Fica muito mais fácil lançar mão de um modelo mais apropriado como Claude Code nesse caso – ele já saberia de onde partir, e a iteração fica muito mais prática.
Eu vejo valor em um mundo onde abro o Codex e existe uma lista de 5-10 tarefas para revisar, em vez de abrir o Jira e encontrar uma lista de 5-10 tickets para começar. A economia cognitiva nesse caso é tremenda – e é isso que efetivamente transforma a produtividade de um programador.
Por fim, ainda não foi hoje que fomos substituídos pela IA. Estaria esse dia cada vez mais perto? Hoje, o Codex substituiria bem um estagiário, capaz de resolver pequenas tarefas de forma assíncrona, sem muita dificuldade. Amanhã, sua capacidade pode ser tamanha que conseguiremos delegar problemas ainda mais complicados.
De qualquer maneira, a capacidade de síntese e abstração necessária para se operar com a IA está cada vez mais em alta. Saber se expressar, identificar bottlenecks e fazer o juízo correto de quando se utilizar tal ferramenta continua sendo fundamental. Apeguemo-nos a isso e não precisaremos temer Codex algum. Pelo contrário, quando chegar o dia onde não precisemos mais programar, respiremos aliviados por termos sido, enfim, libertados.