Executando verificação de segurança...
11

Akita e o Anti Vibe Coding

Assisti o vídeo do mano deyvin sobre o método Fábio Akita para programar com IA, e... Senhoras e senhores, que sensação de desconforto e estranhesa.

Em resumo, o que eu entendi do vídeo foi que o jeito que o Akita programa hoje e sugere que as outras pessoas façam também é que criem projetos sem escrever o código na mão, ou seja, use a IA para escrever o código.

Para se ter um entendimento melhor, é bom que assita o vídeo (que é um resumo da ideia), leia os blogs do Akita e estude sobre o assunto, antes de se ter alguma opinião prévia.

O assunto me rendeu boas horas de conversa com um colega que também ficou incomodado com esse novo método.

Um dos motivo de estar incomodado e desconfortável com essa ideia é que vem do Akita, e ,por alguma razão, eu acreditava que a forma dele utilizar a IA não seria assim. Estava enganado.

Afinal, Por que o incômodo?

Achei tal método muito semelhante a um No-Code ou Low-Code. Me incomoda o fato de estar ali, só observando, quando tudo é feito sem você ter que você, necessariamente, precise tocar a mão, apenas mandar. Essa passividade é o que destroi. Tenho a ideia de "programação tem que ser algo ativo" bem formada na minha cabeça. Quando digo ativo, quero dizer estar pensando em todos os aspectos, ou, pelo menos, na maior parte possível do desenvolvimento do software - pôr a mão na massa mesmo. Código faz parte disso. Por mais que eu concorde que se reduza o máximo de código - nem falo por boas práticas, falo por deixar o copilot (ou outro agente) completar para você -, mas eu ainda acho que o código não deve ser eliminado da mão do desenvolvedor. (Aqui entra numa parte muito delicada que, se falada de forma desatenta e até um pouco emocional, seria mal entendida).

O que eu quero dizer é, em poucas palavras, que o código é importante para estar conectado ao projeto, é a forma que favorece você a estar ativo ali - um caminho.

Minha conclusão

Levo muito em consideração que o Akita é um veterano, tem muita experiência. Ele escreveu muitas linhas de código na vida dele, simplesmente pode ter chegado numa fase em que escrever código para ele tanto faz como tanto fez, ele já sabe como fazer aquilo mesmo sem auxilio nenhum de IA.

Isso precisa ser levantado e destacado. Entender o contexto que ele está faz com que o "julgamento" fique mais racional. Nós (programadores) fazemos isso o tempo todo.

Me faz ver que eu não posso simplesmente seguir um método porque é o mais fácil e rápido. Nem sempre o mais fácil é o melhor; nem sempre o mais rápido faz você ter o que você realmente quer.

Eu não estou disposto a seguir isso à risca. Não ainda, talvez.

Essa é a minha opinião. Concorda ou discorda?

Pense sobre o assunto.

Reflita. Explore. Discuta.

Carregando publicação patrocinada...
4

Uma das lições que aprendi é que o caminho mais curto nem sempre é o melhor.

Eu sempre digo que: IA não vai sumir. IA é algo que o dev tem que se adaptar a ter no seu dia a dia. Fato. O problema esta em como interpretam isso.

Quem viu os vídeos do Akita, sabe que o cara é o tipo de dev que gosta de se jogar na lama e aprender na marra as coisas. Ao longo da vida, ele já construiu o que era necessário apenas para orquestrar. No futuro teremos discussões do motivo pelo o qual pessoa A é melhor que B, sendo que ambos estão usando "vibecoding". Então falaram de engenharia de prompt e nesse dia irei dar risadas

"Vibecoding" é um termo estúpido na minha opinião. "Vibecoding" é qualquer coisa da interpretação do leitor. Inclusive já estão querendo vender outra ideia com agentes... Isso me lembra os perfis com a descrição "Dev React.js" onde a pessoa sabe "programar" usando React, mas não sabe JavaScript.

Como eu disse mais acima, Akita já estudou, já errou para krl, e já passou por coisas que ninguém sabe. O que temos certeza que o cara é casca grossa. Ele sabe julgar o código gerado por IA. Ele sabe exatamente o que quer na hora do prompt. Ele sabe onde há tradeoffs na hora de pedir algo. Então pessoas que estão tendo dificuldade com coisas básicas ainda vê isso como uma carta coringa e começar usar abusar de vibecoding como se fosse a solução mágica para o mundo. O pior: a consequência é depois de anos.

Bem, veremos no futuro.

3

Também me incomoda, mas nem tanto por mim, é mais porque muita gente despreparada conseguirá entregar mais código e parecer mais produtivo.

O problema é que a programação assim acaba gerando muita dívid atécnica na mão da maioria das pessoas. E pela minha experiência com o mercado, isso não será percebido tão facilmente, vai se pagar os juros dela e perder grande parte do ganho que a IA deu.

Mesmo o Akite eu não sei como ficou o resultado dele. Acompanhando muita coisa dele eu sei que ele tem a ideia que muitos têm que é entregar rápido e barato. Não chego a dizer que ele não liga pra qualidade, mas ele já deu várias demonstrações que isso não a primeira prioridade dele. A empresa dele sempre entregou projetos sem muita preocupação com a manutenção. Mais uma vez não estou dizendo que entregam porcaria, mas apenas sobre o que é prioridade. EU sei que é muito mais fácil vender algo barato e ganhar depois na manutenção. Somente idealistas, como eu, não exploram isso.

Mas tenho que dizer que a IA vai ajudar muito quem sempre programou bem e não ajudará muito ou atrapalhará quem sempre programou mal. Não se discute que o Akita sempre programou bem. O problema será com a esmagadora maioria que terá uma ferramenta pra fazer gambiarras mais rapidamente.

O que o Akita disse (no original, não no react) é que ele consegue ser muito mais produtivo com as novas ferramentas de agora. E no fim vai gerar algo muito parecido com o que ele teria feito na mão.

Certamente sempre precisamos identificar o contexto. E um deles é que o Akita estava testando tudo isso com projetos pessoais que podem dar problemas e ninguém reclamará. Além disse a capacidade dele é muito fora da curva e a maioria das pessoas não chegará perto.

Pode ser que no futuro as coisas melhorem muito e fica mais acessível para produzir algo de qualidade com quem não é tão bom. Mas ainda precisará de um trabalho de engenharia conduzido por um humano.

Eu tenho obtido cada vez mais resultados melhores em várias coisas, mas em programação eu não vi uma melhora suficiente ainda. Também não testei as últimas novidades.

Existe uma outra questão que é se sentir à vontade. Eu acho que para determinados sistemas eu não gostaria tanto de usar a IA. Até poderia usar para ela escrever uma parte de código de cada vez para eu mexer depois, mas tem casos que eu evitaria um pouco mais. Novamente, o contexto determina muito a melhor forma de fazer, e só a experiência criará melhores decisões.

Não acho nem um pouco que vibe coding se aproxima de no ou low-code, é quase o oposto. È too much code. Apesar que ele pode realmente substituir em certos cenários o que antes se fazia com no e low-code. Eu acho que quase sempre será uma solução pior, especialmente na mão de quem costumava usar essas duas formas de fazer uma aplicação se comportar de uma forma específica.

Outro ponto a considerar é que o Akita faz que tipo de vibe coding? Cada um tem uma definição diferente do que é isso. Pelo que eu entendo o vibe coding originalmente era sobre você criar códigos meio que sem saber o que está fazendo, sem grandes preocupações, só interessa o resu7ltado. Vibe coding não parece ser sinônimo de programar usando a IA, e sim a forma como você usar a IA. Eu acho que o Akita usa a IA de forma muito séria e contrária ao vibe coding. Mas se alguém argumentar algo diferente pode estar certa porque não sabemos bem do que estamos falando, são coisas criadas para marketing, não por um estudo científico bem conduzido.

Eu acho que você pode fazer um projeto 100% com IA sem escrever uma linha de código e ser um resultado final interessante, mas vai dar bastante trabalho, dimunindo parte da vantagem. Em muitos testes que eu fiz com IA em várias tarefas, teve vários casos que eu tive o retrabalho tantas vezes até achar um prom pt que entrega o que eu quero que deu mais trabalho que fazer na mão. Eu sei que os cenários assim est~´ao diminuindo quase que a cada mês, mas ainda tem um longo caminho pela frente.

Eu percebi que eu não me sinto bem deixando tudo na mão da IA, pelo menos pra código. Mas eu entendo que o caminho será este, e o português, ou inglês que costuma dar resultado melhor, será uma nova linguagem de programação sem as regras que uma linguagem de programação tradicional.

Mas eu acho estranho você fazer isso e gerar o código de outra linguagem de alto nível. Por que não gerar logo o binário? O motivo principal é que você não conseguirá auditar e melhorar o código gerado assim.

A IA já está gerando o código das próximas gerações da IA, mas não é que ela faz isso sozinha, ele faz o que engenheiros competentes mandam ela fazer, então eles estão mais produtivos, mas ainda no comando.

Acho estranho que parece que as pessoas vão abandonar o uso e criação de bibliotecas e frameworks porque a IA pode fazer o trabalho braçal para você. Mas a IA não fará o certo e você pode confiar. O objetivo de ter bases de código prontos para realizar certas tarefas continua intacto, a IA não deve substituir a maioria desses casos.

Bem, tem alguns casos. O Tailwind mesmo publicou que eles vão morrer em 6 meses. E pode ser bom, porque a IA pode fazer uma espécie de tree shaking agressivo e isso é bom nesse cenário. Ninguém disse que as libs de C, Rust, C#, Java, JavaScript, Python, etc. vão morrer. As bibliotecas corporativas criadas não deixam de ser interessantes.

Minha maior preocupação é que a IA, vibe coding ou não, passará produzir uma quantidade muito maior de código e cada vez será mais difícil administrar isso. Aí é que o engenheiro experiente, bem formado, que não cam em contos da carochinha, vai se destacar e não deixar isso acontecer. Mas para a maioria das pessoas será muito tentador só produzir o resultado.

Uma coisa que eu ouvi do Akita é que agora as sprints não criariam dívida técnica como sempre aconteceu e a maioria faz de conta que isso não acontece. Porque quase sempre você não consegue cumprir tudo que está no sprint no tempo dele, então você faz umas gambiarras e depois vai criar um sprint só para pagar esta dívida. Mas o que eu acho que vai acontecer é os sprints passarem ser concebidos para entregar muito mais já que a IA ajudará, e a dívida não só continuará ser criada como novas dívidas aparecerão.

Me preocupa muito as pessoas pararem de aprender a codificar porque parece o caminho mais fácil. Mas você terá que ser ótimo codificador e com a desvantagem de praticar menos, para produzir bons resultados. Novamente, precisamos entender que a IA não prescinde de um bom programador, de alguém que sabe fazer excelentes códigos, mesmo que ele não esteja usando o teclado diretamente para fazer esses códigos aparecerem na sua tela.

Você terá que aceitar que aprender e treinar programação será parecido com fazer academia, você vai gastar um tempo estúpido para fazer algo improdutivo mas que traz algum resultado. E isso não era necessário no passado, porque as pessoas faziam algo parecido do que fazem em uma academia, no dia a dia da vida delas.

Assim como músculo atrofia, cérebro também.

Gosto muito de Formula 1 e este ano está acontecendo a maior mudança já feita na categoria. Já se sabe que em parte será algo ruim. Em parte mudará as forças na competição porque algumas pessoas vão se adaptar melhor ao carro novo do que outras. Isso sempre aconteceu entre gerações, O Nelson Piquet mesmo hoje seria um pereba, porque o trunfo dele era saber como acertar o carro, algo que hoje são é feito por computadores e não precisam do que ele era bom, precisam de outras características. Pela primeira vez acontecerá uma transformação tão grande na mesma geração. Com programação está acontecendo algo semelhante. Os pilotos não sabem como vão se sair nesta nova forma de pilotar, os programadores também não.

Temos que aguardar para ver o cenário, até lá teremos mudanças constantes como nunca se viu antes.

Antes de terminar eu quero escrever mais uma vez que muitas desculpas das pessoas estão caindo por terra porque agora a IA pode resolver certas problemas que inventavam que o único jeito era fazendo de uma forma ruim. AO mesmo tampo já estão arrumando outras desculpas para usar tecnologias quando a opção é uma gambiarra. Certas coisas que eram vícios não vão mudar.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui).

1

Estava esperando o seu comentário. O senhor sempre sabe como destrinchar o assunto.

Eu percebi que eu não me sinto bem deixando tudo na mão da IA, pelo menos pra código. Mas eu entendo que o caminho será este, e o português, ou inglês que costuma dar resultado melhor, será uma nova linguagem de programação sem as regras que uma linguagem de programação tradicional.

Essa daqui é a questão. Me é estranho deixar com que a IA tome as rédeas e escreva, de certa forma, sozinha (claro, terá a nossa supervisão, que, inclusive, dizem que esse será o novo papel do engenheiro de software). Mas, como o senhor mesmo disse, "temos que aguardar para ver o cenário".

Lembro de quando entrei na área, lá em 2022, o que mais se discutia era copiar e colar o código direto do falecido Stackoverflow; se era melhor usar React, Vue ou Angular; se existia alguma linguagem melhor do que Javascript; entre outros. Qual à coisa comum entre os que citei? Todos, de alguma forma, reduzem o trabalho de escrever código. Então essa automatização de escrita não é de hoje, mas o que acontece atualmente é muito mais radical. A IA foi um jeito das pessoas fazerem isso da forma mais rápida que se tem (e cada dia mais essa forma está evoluindo).

Por mais que meu tempo na área seja pouco, a mudança que está ocorrendo me é muito brusca. Na minha cabeça era para isso ser ao contrário, estar mais apto à mudanças. Não consigo nem mesmo imaginar como vai ser um projeto usando inteligência artificial, dessa forma que temos hoje, da forma que foi apresentada. Me dá dor de cabeça essa mudança.

Sei que ser um engenheiro de software não é só sobre saber escrever código. Há muito tempo que eu ouço que não faz diferença se tu sabe o código de cor ou não, o que importa é saber o que usar naquele contexto em específico.

Nem sei mais o que dizer sobre o assunto.

1

Por favor, não me chame de senhor ;)

De fato tem várias maneiras de se tornar mais produtivo e as pessoas precisam explorar isso. Eu percebo há muitos anos que a maioria dos programadores não sabem ou não gostam de criar abstrações/generalizações para economizar trabalho. Agora então vai piorar muito.

Existe uma diferença enorme entre as várias formas. Usar uma biblioteca ou framework é de um jeito, criar as suas próprias bibliotecas e diferente, usar no ou low-code, usar geradores de código/scaffolding e usar IA cada um tem vantagens e desvantagens e precisamos trabalhar de acordo com a necessidade.

1

Vocês dois dos comentários prévios mencionaram preocupação e ela tem sido tema recorrente na comunidade.

Eu agora tô no time dos tranquilizadores com o argumento de que essas relações (tecnológicas ou sociais) tendem a se auto-regular. Por novos ou conhecidos mecanismos, mas eu acho que a poeira vai baixar.

2

Bom meu amigo, a sensação que vc teve somente agora, é algo que milhares de devs já estão sentindo na pele de modo prático.

Minha opinião? Vai ser disso para cada vez mais abstração, a medida que os novos modelo entregarem cada vez mais consistência nos resultados (que já está muito solido). O foco não será mais codificar, mas sim criar, arquitetar, definir a engenharia e focar no problema / solução. Quem ama código, infelizmente terá que aceitar, ou ficará para trás no mercado.

Código puro será apenas para entusiastas ou hippies (e olhe lá).

Por fim, o caminho será se atualizar e adaptar o workflow de trabalho e ferramentas, mas ainda sinto que estamos apenas em um período de transição e que a abstração vai aumentar ainda mais e o "Vibe Coding" vai se tornar apenas o novo normal, fazendo com quem seja mais generalista ganhe mais espaço a médio prazo.

:)

1

É difícil aceitar que nos tornaremos irrelevantes em poucos anos. Isso dói, principalmente para nós engenheiros de software, porque mexe com o propósito que construímos na nossa profissão. Em certo nível parece uma perda de sentido da nossa vida.

Mas não vejo espaço para negação. As objeções ao desenvolvimento por IA estão caindo uma a uma. A tendência não é parar, é evoluir cada vez mais rápido e se tornarem cada vez mais independentes, precisas e seguras.

Talvez o ponto não seja resistir e se incomodar, mas redefinir o nosso papel dentro desse novo contexto.

1

Meus 2 cents,

Recentemente fiz um build de um projeto no estilo @akita e @teknolista: tudo feito pelo agente, nem sei que cara o codigo tem.

Eh um projeto pontual e para uso interno apenas, algo que se fosse programar ia tomar dias e um tempo que nao queria gastar com aquele tipo de aplicacao.

Usei codex e antigravity, eles entregaram tudo que pedi o projeto esta rodando: eh o que me basta.

SPOILER: comeram tokens como se nao houvesse amanha, zerou minha quota mesmo em um sistema teoricamente simples.

Se eu fiquei com saudade da forma antiga ? Confesso que estava interessado apenas no resultado, resolver um problema antigo, meio besta mas que nao valia o meu empenho para resolver.

Via agente resolveu em umas 2 horas de interacao, entao para mim estava otimo.

Vou fazer mais projetos assim ? Se for de baixo risco e nao trouxer dor de cabeca, com certeza.

Para mim programar eh apenas uma atividade, um trabalho sem romantizacao: logico que tem de cumprir metas de qualidade, mas eh basicamente isso.

Nao entenda errado, em 79 quando vi um anuncio de micro (um sinclair) ali escolhi o que queria para minha vida, e desde entao estou nesta jornada, sem grandes arrependimentos.

Mas por mais que eu ainda goste de codar, uma analogia: como pedreiro, nao me vejo a esta altura do campeonato tendo de misturar areia, cimento e brita na mao se tenho uma betoneira a minha disposicao.

Saude e Sucesso !

1

Na minha visão, o que o Akita chama de "Agile Vibe Coding" só funciona porque ele tem mais de 30 anos de experiência escrevendo código, e já deve ter todos os coding patterns na palma da mão e de olhos fechados, fora que ele sempre diz que revisa tudo o que a IA escreve, embora a IA acabe escrevendo 100% do código dele.

Considerando que o nosso cérebro, através da neuroplasticidade, aprende melhor com caminhos mais "difíceis" (aprendizado ativo), e que quanto maior o uso da IA, maior atrofiamento cerebral é causado no usuário, eu diria que seria um risco enorme aplicar essa técnica a júniors, uma vez que eles mal têm a capacidade de entender completamente o código que a IA gera, e analisar se o código gerado é de boa qualidade ou não, considerando as alternativas e os trade-offs de cada uma.

Nesse caso, assim como o @teknolista disse logo abaixo, eu julgo que seja melhor usar o spec-driven-development quando o desenvolvimento for auxiliado por IA, e sempre procurar entender cada linha de código que a IA gera, para não deixar o atrofiamento e o auto piloto da LLM tomar conta, e também poder ficar alinhado às novas demandas do mercado, uma vez que é bem capaz do SDD realmente se consolidar como uma metodologia de desenvolvimento de software e cada vez mais vermos mais IA sendo utilizada no desenvolvimento em geral (mesmo após estouro da bolha).

2

"[...] nosso cérebro, através da neuroplasticidade, aprende melhor com caminhos mais "difíceis" [...], quanto maior o uso da IA, maior atrofiamento cerebral é causado no usuário [...]"

Perfeito.

Essa é a parte onde eu enxergo que a IA vai atrapalhar bastante, só olhar para as outras áreas em que ela é aplicada (escola, provas, resumos, escrever artigos). O que se vê é um pessoal que não sabe usar a ferramenta, acha que o excesso dela vai resolver todos os problemas. E o contrário também é ruim, achar que não precisa se atualizar com o que é de mais recente.

A vida é uma faca de dois gumes.

A questão do Akita é que ele tem muita experiência, como você mesmo citou. O cara, provavelmente, refletiu bastante para chegar na conclusão que ele chegou; não foi por "moda" ou algo semelhante. Posso estar enganado? Sim. Mas é o Akita.

1

Olha, eu li toda a série do Akita, sobre esses últimos projetos dele. Concordo em parte porque não uso vibe-coding, mas ainda na contra-mão do que tu disse acima.

Eu tenho usado o SDD (spec-driven...) e isso transfere o rótulo de verdade-final do código para as especificações. O código seria um novo Assembly, sempre gerado quando necessário. Por isso não mexo nele.

Acho que tu vai ficar então horrorizado com isso: eu estabeleci como regra não tocar no repo, tudo é feito pelo agente. Chamo de vibe edit. Nem README, CHANGELOG e outros artefatos eu edito mais. Tudo é pedido pro agente, e tem uma regra no AGENTS.md pra logar todos os prompts. Aí outra pessoa pode acompanhar o que foi submetido ao agente, bem mais simples que rastrear os commit-logs.

Mas ainda estou explorando processos e formas de tocar meus projetos. Uma hora eu crio um workflow bacana. Fiz um post sobre isso, mas acho que o povo não entendeu muito bem.

1

Acho que tu vai ficar então horrorizado com isso: eu estabeleci como regra não tocar no repo, tudo é feito pelo agente.

Pior que me pareceu justo.

Talvez seja porque eu uso Golang, e nela eu sou obrigado a escrever todo o repositório. É uma camada chata pelo motivo de que é tudo a mesma coisa - a tal tarefa repetitiva.

Acho que é a emoção que se tem quando se cria um post, várias ideias na mente, vontade de falar tudo e, no final, acaba fazendo um resumo e ainda não falou nada do que queria falar. Mas eu acho interessante, sim, aplicar a IA; aplicá-la à coisa certa, não querer aplicar em tudo.

Bem, é algo muito novo ainda e mexe bastante com o que é de costume. Isso já tá me dando uma certa dor de cabeça de tanto pensar.

1

Muito tem se dito que desenvolvedores de agora em diante irão orquestrar agentes. Mas a gente também precisa lembrar que um maestro não toca instrumento. Ele até pode saber tocar um ou outro, pode tocar vários instrumentos, como muitos possuem essa capacidade. João Carlos Martins, o regente famoso que possui uma enfermidade nas mãos, é pianista. Mas na hora de orquestrar uma sinfonia, fica só em cima do pódio balançando a batuta. Em nenhum momento ele desce do pódio e pega o instrumento de algum músico. Pode chamar a atenção de algum deles, pode pedir para reiniciar a sinfonia, mas além disso não faz muito.

A batuta do dev é o prompt. E só. Chegou a hora de desapegar.