A medida que amplio meu conhecimento sobre IA, e acabo consumindo conteúdo de influencers, é cada vez mais comum ouvir histórias repetidas de como a ferramenta do momento pode potencialmente substituir todos os devs no futuro, e como estamos todos super ferrados!
O pânico fabricado para ganhar mais seguidores, utilizando a tendência dos algoritmos sociais de favorecer conteúdos polêmicos está acabando com a nossa capacidade de enxergar o grande golpe que IA está se tornando, enquanto o trabalho de alinhamento e regulação de Inteligência Artificial segue a passos lentos, se comparado com a capacidade dos mercados em lançar ferramentas novas.
Essa é a minha tentativa de responder a pergunta do momento:
Seremos substituídos por IA? O fim está próximo?
Dentro do mestrado, ainda estou iniciando o trabalho de compreender mais a fundo as ferramentas, mas na minha última encarnação como CEO de empresa de consultoria de software, estive conectado com o mais variados vendedores de sonho, e acredito que a principal skill que alguém de tecnologia precisa construir no momento é Pensamento Crítico para identificar o golpe:
Se um vendedor quer te vender uma vaca que voa, é sua responsabilidade ser cético e crítico ao fato de que não existem vacas voadoras.
Nós últimos meses ouvimos:
Não é uma teoria da conspiração, tudo isso é basicamente uma peça de marketing.
Sobre a gravação "vazada" para a Business Insider, é nítido o viés de marketing feito pela empresa:
Vazou uma conversa gravada de uma mega liderança, dentro de uma empresa que vende ferramentas de inteligência artificial, que vende ferramentas de treinamento de inteligência artificial, que vende infraestrutura de inteligência artificial e coincidentemente está dizendo que IA dominará todas as esferas de desenvolvimento de software. 🤦 - Mais descarado impossível.
No mundo da especulação financeira e corrida do ouro da IA, só ganha dinheiro quem vende pá.
Precisamos conhecer mais do mercado, como tecnologistas, e ficar atentos a quem diz que os devs vão acabar. Quem são as lideranças, influencers e empresas que mais vendem essa ideia de que no ambiente de desenvolvimento vai ser substituído completamente, de que programadores vão ser substituídos?
O que alguns devs dizem? Vale a pena buscar entender como, com o tempo, vários devs tem chegado às mesmas conclusões: com a experiência, essas ferramentas podem ser úteis, mas sem nenhuma perspectiva de substituir completamente devs.
Este é um jogo de interesses: interesses especulativos. Não dá ao certo para prever como todas essas ferramentas vão impactar o futuro de desenvolvimento de software, e o quanto dessas ferramentas será incorporado ao workflow das empresas - sabemos que a tecnologia é útil, em casos específicos com ganhos expressivos em produtividade, e que estamos no momento de expectativas infladas. Os únicos players do mercado que estão contando vantagem e cantando vitória neste momento são **vendedores de ferramenta**, seja cloud, modelos, hardware ou frameworks.
Existe um interesse real em inflar as expectativas das ferramentas para manter a especulação financeira já precificada nas ações destas empresas. Apesar do aparente crescimento das ações de diversas companhias que vendem soluções de IA, existe uma preocupação crescente com o fato de que IA depende de tanta energia e dinheiro, que talvez estejamos chegando perto do fundo do bolso.
Você vai ouvir muitos dos vendedores de ferramenta falando nesse contexto, enquanto diz para investidores que precisa de trilhões de dólares para criar sua iniciativa de chips. De uma maneira descarada, tentando inflar completamente a percepção das ferramentas que dependem de um buraco sem fundo de dinheiro, sem um retorno evidente de lucratividade em escala. Exemplo: com as dezenas de bilhões investidos na OpenAi, estamos muito longe da recuperação do investimento feito pela Microsoft e demais investidores, que agora planejar usar energia nuclear para seguir com a demanda energética exponencial para treinamento de modelos de IA
Low code e Inteligência Artificial Generativa tem a ver? Não
Eu já ouvi inúmeras vezes argumentos parecidos com os que usamos para IA, direcionado para as várias opções de low code. apesar de incomum, me parece um caminho quase natural comparar as ferramentas de IA generativa ao hype de alguns anos atrás com ferramentas low code, mas isso está muito longe da realidade: são fundamentalmente visões diferentes de soluções.
OutSystems, Genexus e outras ferramentas de low-code tem um foco diferente do que o hype atual está direcionado com ferramentas como Cursor, GitHub Copilot e as dezenas de ferramentas que existem. As ferramentas existem com um objetivo claro: viabilizar e acelerar o processo de geração de código, boilerplate, seguindo arquiteturas que são bem definidas e nem sempre flexíveis. Low code é uma ferramenta de produtividade. Não é uma tecnologia feita pra que você possa gerar qualquer tipo de solução sem que você tenha uma iteração direta e real de desenvolvimento.
A intenção é ter um processo padronizado pra geração de aplicações.
Agora, quando estamos falando sobre as ferramentas de Copilot e IA Generativa, a visão vai além disso. Não é sobre padronização de geração de código, padronização de uso de ferramenta. A intenção é ter um assistente te ajudando a resolver os problemas que você precisa resolver através de geração de código.
Copilot para todo mundo!
A intenção de substituir devs, na minha visão, tem pouco a ver com os quesitos técnicos: o que vai ditar a substituição é o negócio. Obviamente que não estamos no ponto de avanço tecnológico que possa simplesmente reduzir a quantidade de gente no time porque o Devin vai substituir 20% das pessoas. Se fosse esse o caso, as empresas de tecnologia que vendem essas ferramentas estariam fazendo o mesmo (e não estão).
Fazendo uma distinção: eu gosto bastante do posicionamento da Microsoft e Google sobre suas ferramentas, como aliadas ao trabalho de desenvolvimento para que se possa impulsionar os resultados. Mas ainda assim, o viés é carregado de interesse em construir uma comunidade dependente do ecossistema que não consiga trabalhar em outros ambientes. A intenção é maximizar a capacidade dos desenvolvedores de resolver problemas e de melhorar throughput de código através do lock in, não substituir devs (em teoria).
Um pessoa com uma ferramenta de IA pode se tornar mais eficiente do que uma equipe que não utiliza IA - no curto prazo. Desenvolvimento de software também depende da dimensão de tempo em que um sistema se mantém ativo, e ainda não sabemos ao certo o impacto do uso prolongado de ferramentas de copilot para bases de código muito complexas. O que se sabe:
Há uma evidente percepção de aumento de produtividade do uso de copilots
Existe um benefício no início de um trabalho complexo, servindo na ideação
Sugestões nem sempre são corretas, discernimento profissional é essencial
Rubber Ducking: copilots em IDEs agem no processo de ideação, ampliando a capacidade decisória, se parecendo muito com uma conversa e não um decisor no desenvolvimento
Qualidade de código será afetada negativamente
Qualidade de código
Sugiro a leitura de um estudo de caso que foi publicado no primeiro trimestre sobre o uso de Copilot e a correlação com o processo de desenvolvimento de software, buscando uma percepção de produtividade de profissionais.
Ao mesmo tempo, é possível encontrar estudos destacando um aumento significativo em Bug Reports no uso de AI Copilots em equipes de desenvolvimento. A maior parte dos dados, a meu ver, trazem uma visão preocupante sobre o assunto.
O Estudo da Uplevel, que tem uma escala relativamente pequena, aponta para uma realidade diferente do que vendedores de ferramenta dizem:
Aumentar throughput de código não resolve problema algum no mundo de desenvolvimento de software profissional. Não é throughput de solução, não é throughput de estratégia, não é throughput de feature, é throughput de código. O artigo é claro ao apontar um aumento significativo de bugs em código, sugerindo que o uso de Copilot diminui a qualidade de código.
No meu último post sobre o mundo de IA, apresentei a intenção por trás do interesse da indústria em colocar essas ferramentas nos times. Obviamente que existe uma intenção de viabilizar redução de custo operacional através do aumento produtividade individual: se eu tenho 100 Devs trabalhando no time, talvez usando inteligência artificial eu consiga entregar o mesmo com 20, ou talvez 80 pessoas, mas não mais a equipe de 100.
GitClear gerou uma análise bastante interessante sobre o uso de Copilot e de que forma que a qualidade de código pode ser afetada, avaliando as operações de código e identificando um aumento real e expressivo de Churn de operações de código, que basicamente significa "código errado" submetido a uma base de código, que eventualmente é substituído. Na projeção do estudo, essa situação vai somente piorar com o uso das ferramentas novas como o1, da openAi.
O artigo descreve um grande desafio ao utilizar Copilot para desenvolvimento de software:
Ser inundado com sugestões para adicionar código, mas nunca sugestões para atualizar, mover ou excluir código. Esta é uma limitação da interface do usuário dos ambientes baseados em texto onde a autoria de código ocorre.
O tempo necessário para avaliar sugestões de código pode se tornar custoso, especialmente quando o desenvolvedor trabalha em um ambiente com múltiplos mecanismos de auto-sugestão concorrentes (isso inclui os populares IDEs da JetBrains, Cursor, VisualStudio, etc).
A sugestão de código não é otimizada pelos mesmos incentivos que os mantenedores de código. Os algoritmos de sugestão de código são incentivados a propor sugestões que têm maior probabilidade de serem aceitas. Os mantenedores de código são incentivados a minimizar a quantidade de código que precisa ser lido (ou seja, para entender como adaptar um sistema existente).
A própria GitClear chega à conclusão de que:
Quando desenvolvedores são inundados com sugestões de código rápidas e fáceis que funcionarão no curto prazo, existe uma constante tentação de adicionar mais linhas de código sem realmente avaliar se os sistemas poderiam utilizar algum tipo de refinamento e reutilização de estruturas que já existem
O problema com qualidade de código, é que quem paga o preço nem sempre é quem tomou a decisão, e os incentivos diversos para mudar de empresa quando o trabalho aperta, deixam a situação ainda pior.
Se brown field já era difícil pra mexer, no futuro será muito pior. Quem tem que mexer em código legado sabe muito bem o preço que se paga no futuro pelas decisões erradas do presente.
Como você perde seu emprego
Inteligência Artificial não vai substituir todos os devs, mas seu chefe sim.
Existe uma força natural de eficiência, que no nosso caso, significa redução de headcount mantendo o mesmo throughput de código. É bom escutar o que os desenvolvedores de ferramenta estão falando, mas é melhor apontar os ouvidos para os executivos que compram essas ferramentas: a intenção é clara, mesmo que isso afunde toda a base de código já criada.
Você provavelmente vai ser "substituído" por uma IA não porque a ferramenta é boa, mas porque existe uma meta de aumento de eficiência financeira que o executivo da sua empresa precisa cumprir! (leia: "redução de custos")
No fim, se algo do tipo acontecer, será assim:
A simples percepção da empresa de ganho de produtividade gera pressão por mais entregas
Mais entregas individualizadas dão a percepção de eficiência maior do time e a maior capacidade de execução
Times são divididos e reduzidos para chegar ao baseline anterior, que agora precisa de menos pessoas, mesmo que a base de código esteja sendo degradada ao ponto de não retorno
Equipe mais estressadas produzem código pior, acelerando a degradação da base de código. O que era ruim fica ainda pior
Problemas de manutenção e complexidade de código gerado diminuem ainda mais a capacidade de entrega dos times e serão o próximo direcionador de contratação, que precisarão reescrever produtos para compensar o estado dos sistemas anteriores
Você perde seu emprego por uma decisão de gestão de uma pessoa, lembre-se disso.
Ninguém mais escreve javascript na mão
No início dos anos 2000, quando eu comecei a minha vida de desenvolvedor, nós ainda estudávamos Pascal, escrevíamos HTML e JavaScript na mão para automatizar validações em formulários e outras tranqueiras. A maneira como eu trabalhava lá em 98/99 construindo sites no Geocities é completamente diferente dos dias atuais. E essa é a única certeza da sua vida no mercado de tecnologia.
A maneira como engajamos com código muda a cada década e nunca volta a ser a mesma. Atualmente eu arrisco a dizer que a grandiosa maioria do trabalho de Desenvolvimento de Software é configuração e integração de plataforma, com apenas uma parte mínima sendo realmente escrita de algoritmo, preocupação de performance e coisas do tipo.
Construímos uma série de mecanismos para ampliar as abstrações de desenvolvimento de software para sermos mais produtivos em representar problemas, em resolver problemas, em integrar ferramentas. A única certeza é que programação será completamente diferente no futuro.
IA Generativa pode ser incrível para apoiar o processo de desenvolvimento de software e de ideação de novas soluções. Inclusive na última semana Martin Fowler descreve em seu site um artigo sobre o uso de GenAI para planejar a migração e modernização de Arquiteturas Legadas, que vale a leitura.
No momento em que você passa a delegar cegamente seu poder decisório e seu conhecimento para esse tipo de ferramenta, o único resultado é quebrar a cara no futuro. O conhecimento de desenvolvimento de software é essencial para saber se o que você está colocando em produção realmente funciona ou realmente é a melhor estratégia.
Posso dizer tranquilamente, em quase duas décadas trabalhando com consultoria de software, seja como consultor, empresário, executivo ou programador, que 80% dos problemas de projetos de software não são sobre código. Eles são sobre comunicação, alinhamento, priorização, estratégia e de pessoas. Nosso trabalho nunca será meramente técnico: nossa capacidade de nos organizarmos para resolver problemas complexos é o que nos mantém vivos. Inteligência Artificial não faz isso. Gerador de Código e Copilot não fazem isso.
Se você é medido por linhas de código produzidas por hora, talvez você tenha seu trabalho desafiado por um assistente de código, mas você também está desperdiçando a maior parte da sua capacidade profissional. Mas se o seu trabalho tem o mínimo de complexidade, que precisa de alinhamento, conversa e relacionamento para resolver um problema, você está relativamente mais tranquilo no seu dia a dia de trabalho e talvez você tenha que incorporar novas ferramentas que tragam maior produtividade para sua sua vida profissional.
Por isso é importante avaliar quem está trazendo a mensagem de substituição total de desenvolvedores, quem está trazendo a mensagem de fim do mundo? Provavelmente existe um interesse não declarado por trás da mensagem.
Sem ingenuidade: Trabalhos que são meramente scripts reproduzíveis, trabalhos que são repetitivos e trabalhos que demandam somente conhecimento direto, serão muito impactados por inteligência artificial, e teremos momentos sombrios pela frente. Geração de documentos para advocacia, diagnóstico médico e atendimento são algumas das atividades que mais serão impactadas.
Automação permite maior produtividade, não necessariamente menos pessoas.
Como se preparar para o futuro?
A Skill mais importante para a próxima década, como profissional de tecnologia e como pessoa trabalhando dentro do mundo corporativo é o pensamento crítico.
Unir o seu conhecimento técnico com aquilo que você está vendo no mundo para poder tomar decisões mais acertadas. Descobrir antes que seja tarde quando você está sendo enganado será o maior investimento para sua carreira.
De maneira geral, sempre que você ouvir propagandas futuristas, maquiadas como previsões realistas, preste atenção em quem está mandando a mensagem: qual o interesse em criar um alvoroço no mercado? Será que estamos no meio de um tiroteio de especulação financeira?
Nós, como tencologistas, programadoras, agilistas, analistas: É importante conhecer o que está acontecendo no mercado. É importante que você tenha conhecimento técnico, mas, principalmente, é importante que você tenha senso crítico para entender quando você está sendo enganado e quando as coisas parecem boas demais para ser verdade.
Para quem leu até aqui, obrigado. Eu sempre pareço crítico demais ao mundo da Inteligência Artificial, já que minha postura é sempre combativa: mas não se engane, eu também estou me preparando para o futuro em que IA será a maior força impulsionadora do mundo, para o bem e para o mal.
Nos vemos no front, enquanto a gente tenta debugar o código zoado que o copilot gerou na versão de 2022
コメント