- Com a ascensão do Vibe Coding, também esquentou o debate entre "agora desenvolvedores não são mais necessários" vs. "ainda falta muito para isso"
- Vejo sentido nos dois lados. Acompanhando a evolução da IA e trabalhando como product engineer, organizei aqui algumas reflexões que venho tendo
- Mas eu não sou especialista em IA, sou apenas um desenvolvedor. Também tenho pouca experiência com Vibe Coding. Ainda assim, escrevi este texto porque queria ouvir a opinião de outras pessoas e porque espero que ele ajude desenvolvedores júnior que estão ansiosos com esse cenário
Vibe na prática: até aqui tudo isso vs. só isso até aqui
No fim de semana, tentei criar um jogo de bolinhas com Vibe Coding. Fiz para jogar com minha filha de 7 anos. Cerca de 90% do código foi feito só com prompts, e o tempo de implementação caiu drasticamente (em 4 horas ficou pronto com uma qualidade nada ruim)
Nesse processo, fiquei alternando entre a decepção de pensar "nem uma coisa tão simples consegue fazer?" e a surpresa de pensar "com só esse nível de requisito ele consegue criar algo tão bom assim?". Principalmente no primeiro caso, porque não foi nada fácil fazer a IA "seguir o que eu dizia"
Mas, de todo modo, se eu refinar os prompts e a tecnologia evoluir mais, acredito que a parcela de "surpresa" vai crescer muito mais — e isso com certeza vai provocar uma queda acentuada na contratação de desenvolvedores júnior
Vou falar dessa sensação usando a regra de Pareto e o conceito de maturidade de produto
Lado do desespero: talvez a IA escreva 96% do código
Se enxergarmos a maturidade de produto em 3 etapas (zero-to-one, one-to-ten e além disso), o mais chocante para mim foi perceber que grande parte da programação no nível zero-to-one já se tornou passível de substituição por IA
Pela regra de Pareto, penso que 80% do código produzido por desenvolvedores para construir produtos talvez fosse justamente resultado desse estágio zero-to-one.
- Códigos que surgem no processo de implementar uma ideia e encontrar PMF. E também códigos que até não desenvolvedores conseguem criar com facilidade usando Vibe Coding.
Indo além, se assumirmos que 80% do que é necessário em one-to-ten pode ser bem definido, dividido e tratado como trabalho de nível zero-to-one...
- Em um cenário extremo, algo como 96% da produção de código (= 0.8 + 0.2 * 0.8) talvez possa ser substituído por IA
- No vídeo da Y Combinator que apresentou o Vibe Coding, alguns fundadores teriam dito que "95% do código-base do produto foi escrito por IA", e curiosamente os números parecem bater
Isso deve elevar o patamar esperado tanto da capacidade dos desenvolvedores quanto do nível esperado de um produto tipo MVP.
- Algo semelhante ao que aconteceu depois de Bootstrap e TailwindCSS, quando "um nível razoável de estilização de UI" virou praticamente conhecimento básico esperado de desenvolvedores front-end
Se for assim, parece inevitável que diminuam as vagas para desenvolvedores que antes seriam valorizados apenas por conseguirem criar produtos na fase zero-to-one. Por isso, dizer que "agora desenvolvedores não são mais necessários" deixa de soar como exagero....
...será mesmo?
Lado da esperança: ainda há muito trabalho para desenvolvedores
1) O mercado fica muito maior, então há mais trabalho
O maior significado do Vibe Coding está em reduzir a barreira de entrada para o desenvolvimento de produtos
- A maior parte do trabalho que antes precisava ser feita manualmente por desenvolvedores no zero-to-one está sendo substituída por agentes de código com custo extremamente menor (tempo/dinheiro/pessoas).
- Em outras palavras, ficou possível girar rapidamente o ciclo de executar e validar ideias mesmo sem desenvolvedores
Portanto, vão surgir de forma explosiva muito mais produtos de nível zero-to-one (ou até abaixo disso) que antes nunca chegariam a existir, e também vai aumentar bastante o número de pessoas que pensam "eu também quero colocar minha ideia em prática".
Tudo isso deve ampliar o tamanho do mercado no qual "desenvolvedores podem ganhar dinheiro". Pessoas que antes não eram clientes de desenvolvedores passam a formar uma nova camada de clientes. Por exemplo:
- Ensino de Vibe Coding para não desenvolvedores, PMs e designers que querem transformar suas próprias ideias em realidade
- Freelances curtos para ajudar a finalizar produtos que chegaram a 90% com Cursor, mas ainda não conseguiram ser concluídos
- Consultoria para fazer um produto que foi criado de qualquer jeito realmente operar e gerar monetização contínua
- Desenvolvimento de várias ferramentas pagas que ajudem a fazer Vibe Coding melhor e com mais facilidade
Seja como renda extra fora da empresa, seja com o surgimento de empresas focadas nisso, acredito que quem mais vai se beneficiar dessa mudança de mercado serão os próprios desenvolvedores
2) Desenvolvedores podem — e precisam — fazer muito mais do que só programar
Mesmo que a IA substitua 90% da "programação", não dá para demitir 90% dos desenvolvedores
- Porque o peso da programação dentro do desenvolvimento de produto — e, mais amplamente, da product engineering — não é tão grande quanto se imagina
Basta olhar quantas etapas existem, em média, até uma única funcionalidade ser adicionada a um produto.
- Percepção do problema
- Geração de ideias de solução
- Estimativa de impacto esperado e custo, definição de prioridade de desenvolvimento
- Planejamento para transformar isso em funcionalidade do produto
- Design de UI/UX
- Desenho de arquitetura
- Implementação de backend + frontend + infraestrutura
- Code review, testes automatizados, QA
- Deploy, monitoramento, divulgação da funcionalidade, testes A/B
- Coleta de feedback dos usuários, operação, melhoria
Aqui, o Vibe Coding substitui apenas parte do 7 e do 8.
- Um product engineer excepcional precisa participar, em algum nível razoável, de todas essas etapas
- Como a IA passa a cuidar da programação, o valor de quem faz bem o restante aumenta ainda mais
3) Mesmo olhando só para programação, ainda há bastante trabalho relevante
Mesmo sem ir até product engineering, ainda existe muita coisa a fazer
- Ainda haverá muito trabalho para fechar os últimos poucos por cento do one-to-ten
- Se desenvolvedores ajudarem com definição de especificações, desenho de estrutura e divisão das tarefas, o custo do Vibe Coding também deve cair
E, em produtos além do one-to-ten, o Vibe Coding tem muitas limitações
- O código-base cresce -> janela de contexto limitada
- Para manter alto nível de segurança e melhorar performance, é preciso intervenção direta de especialistas
- O mesmo vale ao programar em linguagens ou bibliotecas nas quais a IA provavelmente não treinou bem
- https://pt.news.hada.io/topic?id=19923 também fala de problemas parecidos
Então, o que acontece agora com desenvolvedores júnior?
Se o mundo caminhar para o lado do desespero ou para o lado da esperança, uma coisa é certa: tudo está mudando rápido demais. Em especial, com a porta de entrada do mercado de trabalho ficando drasticamente mais estreita, como desenvolvedores júnior deveriam aprender e evoluir?
Depois de ler o artigo <O que faz um excelente desenvolvedor?>, defini assim cinco competências centrais de um desenvolvedor excepcional
- Escrever ótimo código
- Praticar tomada de decisão baseada em evidências
- Ajudar colegas a tomar decisões eficazes
- Maximizar o valor atual do trabalho
- Aprender com constância e de forma eficaz
Tudo isso continua importante na era da IA. E dá para conectar essas competências ao lado da esperança
1) Aproveitar ativamente o mercado em expansão
Se fosse eu, tentaria coisas como estas
- Estudar prompt engineering
- Testar um por um os novos apps de IA que estão surgindo
- Estudar e experimentar como dividir melhor o trabalho para que agentes de código entendam bem meus requisitos
- Implementar e publicar, com Vibe Coding, um app que resolva um pequeno problema meu
- Se algum conhecido não desenvolvedor quiser fazer Vibe Coding, dar aulas particulares para ele (cobrando)
- Também ajudar esse conhecido a concluir a implementação, publicar e operar o produto (também cobrando)
2) Desenvolver competências como product engineer
Se fosse eu, tentaria coisas como estas
- Ter interesse por todo o ciclo do produto: percepção de problemas, ideias, planejamento, arquitetura, testes, operação etc.
- Criar e operar um app como fundador solo naturalmente ajudaria a desenvolver competências de product engineering
- Tentar melhorar produto em trabalho em equipe para evoluir tanto colaboração quanto competências de product engineering
Quando eu contratava desenvolvedores e escrevia a offer letter, eu sempre colocava algo como: "espero que você trabalhe pensando como um mini CTO"
- Pelo menos no projeto pelo qual você é responsável, você é o responsável final pelas decisões técnicas
- Participe de todas as etapas necessárias para fazer esse projeto dar certo
- Ajude colegas, em questões técnicas ou não técnicas, a tomar decisões e agir de forma eficaz
3) Entender profundamente tecnologias específicas e desenvolver sensibilidade para código
Desenvolvedores que entendem profundamente tecnologias específicas continuam tendo demanda. Para ir além de PMF e chegar a empresas unicórnio ou decacórnio, Make it Right & Fast é indispensável.
Aqui não existe atalho. É preciso investir tempo e se esforçar (com ajuda da IA, se quiser).
- Explorar o interior de frameworks/bibliotecas, entender o contexto histórico, contribuir com open source, criar bibliotecas próprias, rastrear/corrigir bugs, melhorar padrões web/performance etc.
Ao mesmo tempo, vai ficar ainda mais importante construir seus próprios critérios sobre o que é um bom código e desenvolver uma "sensibilidade para código" que permita reconhecer isso. Porque será necessário perceber quando a IA está seguindo um Vibe errado, parar e intervir.
Para desenvolver essa sensibilidade, é preciso treino deliberado. Aqui também será necessário investir tempo e esforço
- Ver muito código bom, receber bastante feedback sobre o código que você escreveu — seja da IA, seja de desenvolvedores sênior —, olhar o código escrito pela IA ou por colegas e tentar prever "que problemas podem surgir se continuarmos por esse caminho", depois comparar com o que realmente aconteceu
11 comentários
De qualquer forma, o trabalho prático de engenharia de software vai mudar bastante. As máquinas de código vão perder competitividade, mas eu aposto que os engenheiros que realmente conseguem criar produtos end-to-end vão sobreviver.
O trabalho de digitar no teclado diminuiu, mas foi acrescentada a tarefa de encontrar o código cheio de armadilhas gerado por IA.
Muito obrigado por este texto tão significativo e excelente!
Cometi um erro de digitação. ;_;
Em especial, o segundo caso se devia em grande parte ao fato de que não era fácil fazer a IA 'seguir o que eu dizia' -> o primeiro
Acho que é bom entender profundamente a engenharia de produto necessária para startups, mas também acredito que seguir o caminho de levar a tecnologia ao limite e refiná-la ao máximo continua sendo algo muito válido. O desenvolvimento para criar aplicações web simples será substituído pela IA, mas alguém ainda vai precisar conceber o Kubernetes e projetar o ElasticSearch.
Como o número desses arquitetos de componentes centrais é limitado, no fim das contas acredito que a demanda pela função de "desenvolvedor" realmente vai diminuir.
Conforme fui respondendo aos comentários, a mensagem que eu queria transmitir no texto foi ficando mais clara.
Acho que, em empresas individuais, a demanda por desenvolvedores deve diminuir de um jeito ou de outro, mas o número de empresas — ou negócios/pessoas equivalentes — que precisam de "trabalho de desenvolvimento" vai aumentar muito mais, então ainda haverá muito trabalho para desenvolvedores.
Claro, a IA também pode substituir isso, mas, se chegar a esse ponto, será que vai sobrar alguma profissão que não seja substituída...
Ótimas palavras!
Concordo. Acho que, daqui para frente, vai se dividir entre o trabalho feito com codificação por IA e o design e a revisão feitos por humanos, e acredito que vão coexistir até surgir uma IA que entenda o projeto como um todo.
Concordo! Claro que a IA também vai ajudar ali, mas acho que no modo vibe seria difícil.
Só para referência, este é o jogo feito com vibe coding: https://www.stdy.blog/vibe-go-stone/