Já se foi o tempo em que você comprava um cartucho da Nintendo e nunca atualizava o software nele. O mundo mudou, e o software também.
Em vez de viver em sua própria caixa cinza e preta minúscula (incrível), o software está vivendo em máquinas interconectadas. Ele precisa reagir às mudanças, precisa se adaptar e por diferentes motivos. Seja uma atualização de segurança em face de um novo ataque ou uma atualização de recursos para acompanhar esse ecossistema em constante mudança. O software precisa ser atualizado; ele precisa ser mantido. O código tem que ser reescrito, as dependências têm que ser atualizadas, os aplicativos têm que ser reimplantados.
Isso não é gratuito. Há um custo contínuo para mantê-lo implantado, de modo que ele continue fornecendo valor. E quanto mais código você tiver que manter, maior será o custo, e é por isso que o código é frequentemente excluído. Agora a pergunta é: por que você excluiria um código que agrega valor? Onde está o valor do código?
Evolução do código e do ecossistema de desenvolvimento
Para entender o valor do código, precisamos falar sobre abstração. A maioria dos desenvolvedores não codifica com 0 e 1, ou mesmo de 0 a f (alguns ainda o fazem). Em vez disso, as linguagens de programação evoluíram para permitir que os desenvolvedores usassem palavras reais em vez de 0 e 1. O hardware evoluiu para abstrair em silício o que os desenvolvedores teriam que escrever. As linguagens de programação evoluíram ao longo do tempo e continuam evoluindo para níveis mais altos de abstração para facilitar a vida dos desenvolvedores. Passamos de linguagens de máquina de baixo nível (linguagem de primeira geração ou 1GL) para assembly (segunda geração ou 2GL), para linguagens de alto nível mais abstratas (3GL), como C ou Java, para linguagens mais específicas de domínio (4GL), como R, SQL ou PL/SQL, para linguagens baseadas em restrições/lógicas (5GL), como Lisp, OPS5 ou Mercury. A questão é que cada geração abstrai mais complexidade do desenvolvedor. As 5GLs dependem da IA para criar solucionadores com base em problemas e condições declarados.
Os ecossistemas de desenvolvimento evoluíram em sintonia com as linguagens de programação. Os desenvolvedores não começam do zero ao iniciar um novo projeto. Eles usam bibliotecas, dependências, bancos de dados, plataformas de dados, no code/low code. Eles usam e interagem com o software existente. Qualquer coisa que abstraia o código, qualquer coisa que signifique que, no final, eles continuem fornecendo o mesmo nível de recursos com menos código escrito.
Redução do custo total de propriedade (TCO) e melhoria da manutenção
Começar do zero seria proibitivamente caro. Eu sempre me lembro disso história da torradeira. Thomas Thwaites decidiu criar uma torradeira do zero, sem nenhuma de nossas abstrações existentes. Ele fez tudo sozinho, desde a extração do minério até a fundição e tudo o mais que você precisa fazer para construir uma torradeira. No final, a torradeira não funcionou e custou uma quantidade absurda de tempo e dinheiro. É preciso uma civilização inteira para construir uma torradeira. O software é a mesma coisa (embora talvez ainda não tenhamos chegado a esse ponto). Se você quiser fornecer valor, use abstrações. Menos código escrito significa menos código para manter, resultando em menos dinheiro para gastar na manutenção, o que significa menor TCO.
O trabalho de um desenvolvedor é escrever código "legado". Se você tiver um código legado ainda em execução em algum lugar, parabéns, você forneceu e continua fornecendo valor. Uma das melhores maneiras de fazer isso é escolher sabiamente seu ecossistema de ferramentas e dependências ou suas abstrações. Usar uma plataforma de dados em nuvem moderna que ofereça suporte a vários tipos de cargas de trabalho e continue propondo novos tipos é uma boa aposta. Porque mudar os bancos de dados ao longo do caminho é caro. Não se trata tanto de mover os dados, mas sim de reescrever o código e manter coisas novas. E todos nós sabemos que quanto mais código você escreve, maior é o custo de manutenção.
Impacto da IA no desenvolvimento de software
O que isso tem a ver com IA? Houve muita empolgação com os modelos de linguagem grande (LLMs), e vimos novas ferramentas surgindo e prometendo escrever código para você. Embora isso possa reduzir o custo inicial do desenvolvimento de software, é realmente isso que os desenvolvedores/organizações/equipes querem? Qual é o custo de ter mais código escrito que pode ou não fazer exatamente o que pedimos e que não foi escrito por ninguém da equipe? Quão desafiador seria manter esse código quando ele poderia ter sido abstraído pela ferramenta certa, pela biblioteca certa? Quão caro isso se tornará?
Considere esse código IA generativa são geradores de dívida técnica para 3GL, por enquanto. Isso pode mudar no futuro, à medida que ele se tornar mais preciso e melhor no uso de abstrações existentes e ecossistemas adjacentes. Mas, no momento, não está gerando valor agregado, é o oposto. Você tem tantas maneiras de escrever código Scala quanto tem desenvolvedores Scala (com 3GL você estaria gerando muita "cola" ou código boilerplate - código que ajuda a fazer a interface com as abstrações que você está usando, ou mesmo que substitui o que poderia/deveria ter sido outra abstração, outra dependência).
No momento, é mais interessante analisar o 5GL existente ou usar a IA generativa para o 4GL, especialmente aqueles com restrições de domínio, como o SQL. O SQL é uma ótima opção para a IA generativa porque a sintaxe é mais simples. SQL é SQL. Você não precisa manter o código SQL tanto quanto faria com 3GL. E ao gerar código SQL, o valor é diretamente o valor do domínio, o valor do negócio. Essa é a parte mais importante. O SQL é o ponto ideal entre 3GL e 5GL. Ainda é uma linguagem de programação como a 3GL. Você ainda pode expressar o que deseja, em vez dos problemas e restrições que tem, como faria com a 5GL. Há um motivo pelo qual todos os armazenamentos de dados acabam trazendo de volta o SQL. E por que o SQL continua sendo atualizado com novos recursos, como estamos fazendo no Couchbase.
Conclusão
Se estiver procurando reduzir seu TCO, escolha as abstrações certas. E se estiver procurando por IA generativa para reduzir seu TCO escrevendo código para você, pense duas vezes e certifique-se de usá-la com 4GL.
Para reduzir TCO e dispersão de dados, muitos empresas escolhem o Couchbase. Experimente o Couchbase hoje mesmo com nosso julgamento.