A falácia de substituir engenheiros de software por IA
Os engenheiros de software hoje são assombrados pelo espectro da IA potencialmente usurpando seus empregos. Modelos generativos de IA como o ChatGPT levaram a preocupações crescentes sobre o fim do desenvolvimento de software centrado no ser humano. No entanto, é crucial reconhecer que tais receios estão longe de ser novos. Ao longo dos anos, várias tecnologias alegaram “perturbar” a profissão de codificação, mas todas falharam em substituir os desenvolvedores humanos. Pelo contrário, muitas vezes tornaram os engenheiros de software ainda mais indispensáveis.
Os equívocos da computação inicial e do desenvolvimento de software
É instrutivo olhar para trás, para a história da computação, para entender por que as preocupações com a IA assumindo os trabalhos de codificação podem ser exageradas. Durante os primeiros dias da computação, a arquitetura de hardware e sistemas era considerada o ápice do esforço intelectual na área. O software foi uma reflexão tardia, muitas vezes relegado a um nível inferior de importância.
Cientistas da computação pioneiros, como John Backus, viam os programadores como fazendo um trabalho servil. A dinâmica de género do período também desempenhou um papel: muitos dos primeiros programadores eram mulheres, cujas contribuições foram subestimadas devido ao sexismo. Apesar das atitudes depreciativas, os programadores continuaram indispensáveis. Eles assumiram o trabalho pesado de codificação, depuração e testes, liberando pioneiros como Backus para se concentrarem no que consideravam assuntos mais “significativos”.
Tentativas evolucionárias de 'eliminar' engenheiros de software
Com o tempo, as inovações tecnológicas visaram simplificar o papel dos codificadores ou até mesmo contorná-los completamente. FORTRAN foi projetado para permitir que cientistas escrevessem programas sem programadores. A sintaxe em inglês fácil de entender do COBOL visava capacitar os gerentes para codificar sem a ajuda de um desenvolvedor. O modelo de desenvolvimento em cascata pretendia padronizar os processos de desenvolvimento de software, enquanto a programação orientada a objetos deveria simplificar a codificação ao ponto de qualquer pessoa poder fazê-la.
Curiosamente, os engenheiros de software muitas vezes resistiram a essas mudanças, temendo que elas se tornassem obsoletas. No entanto, estes receios revelaram-se infundados. Tecnologias como FORTRAN e COBOL acrescentaram novas camadas de complexidade em vez de simplificar as coisas. O modelo Waterfall gerou complicações burocráticas, dificultando o desenvolvimento eficiente de software.
A importância duradoura dos codificadores humanos: uma crise na engenharia de software
Apesar das inovações destinadas a eliminar ou reduzir a necessidade de codificadores humanos, surgiu um paradoxo: o mundo ainda precisava de mais engenheiros de software. Numa conferência de 1968 patrocinada pela NATO, o termo “crise” foi utilizado para descrever a situação na engenharia de software. Os projetos estavam paralisados ou atrasados, não por causa de muitos engenheiros de software, mas por causa de poucos.
ChatGPT e a realidade da IA no desenvolvimento de software
Hoje, o discurso sobre a substituição do ChatGPT pelos engenheiros de software humanos parece carecer de perspectiva histórica. Usar a IA para substituir engenheiros no desenvolvimento de recursos complexos provavelmente resultaria em resultados desastrosos, tornando inevitável a recontratação de engenheiros humanos. Em uma nota mais prática, grandes modelos de linguagem (LLMs) como o ChatGPT podem automatizar tarefas rotineiras, como fornecer sugestões de preenchimento automático ou classificar dados, mas essas tarefas são apenas uma fração do que envolve o desenvolvimento de software.
Melhorar, não substituir, a produtividade humana
Em vez de roubar empregos, o ChatGPT e tecnologias semelhantes poderiam mudar a natureza do trabalho de codificação, eliminando algumas das tarefas mais mundanas e permitindo que os engenheiros se concentrassem nos verdadeiros desafios intelectuais. Este cenário reflete como os compiladores eliminaram a necessidade dos programadores trabalharem diretamente com código binário. O resultado? Os programadores tornaram-se mais, e não menos, valiosos, pois podiam dedicar mais tempo à resolução de problemas complexos e ao desenvolvimento de recursos.
O paradoxo da complexidade: por que a IA não substituirá os engenheiros de software
Edsger Dijkstra observou certa vez que, à medida que os computadores se tornaram mais complexos, a programação deixou de ser um problema para se tornar um desafio significativo. Os esforços para tornar a programação tão simples que qualquer pessoa possa fazê-la resultaram apenas no acréscimo de mais camadas de complexidade. Longe de tornar obsoletos os engenheiros de software, o surgimento de tecnologias avançadas como o ChatGPT provavelmente os tornará ainda mais integrantes do processo de desenvolvimento de software.
Conclusão: a improvável extinção dos engenheiros de software
A noção de que a IA substituirá inteiramente os engenheiros de software humanos parece implausível quando vista pelas lentes da história. Repetidamente, as inovações destinadas a marginalizar os codificadores apenas conseguiram torná-los mais indispensáveis. O potencial dos grandes modelos de linguagem para auxiliar no desenvolvimento de software provavelmente seguirá o mesmo caminho, aumentando em vez de substituir a capacidade humana. Portanto, os engenheiros de software podem respirar aliviados; as suas competências continuam tão valiosas como sempre no nosso mundo digital cada vez mais complexo.