Código-fonte como Repositório de Conhecimento Tácito
A gente fica tendo que refletir sobre os impactos da inteligência artificial, dos mecanismos de engenharia de software, agora que ela escreve código bem. Numa ou outra palestra, as pessoas querem saber de mim uma visão, e tem duas frentes que aparecem com frequência, que pra ser bem sincero eu sou cético.
Uma onde que vai ficar tão barato, tão simples, gerar essa cultura digital, que você pode sempre jogar tudo fora o que existia antes. Mesmo que essa parte seja verdade, ainda é difícil a gente descrever a teoria, as definições que existem.
Considerando que a gente não sabe escrever tão bem o que o software faz, que esse contorno nunca é o mais simples de treinar, que a documentação nunca é suficiente, que a análise de requisitos não ajuda tanto, vai ser muito difícil recriar o código, pois muita informação do que o software faz está contida dentro dele mesmo. E também no inconsciente coletivo dos usuários e da própria empresa. Não é à toa que a cultura de uma organização é tão importante. Um pouco da lei de Conway.
O outro fato que eu tô pensando aqui enquanto eu espero no restaurante é essa do end game não ser código fonte. Tem gente que diz que a máquina vai escrever código em linguagem de máquina. É uma questão em teoria de performance.
Eu acho isso muito esquisito porque me parece que todo o mecanismo de LLM, de tokens, são mais propícios a escrever algo que a gente tem muito abundante documentado e vários exemplos de teste de uso. E a Python e JavaScript, a gente tem isso muito mais associado ao caso de uso, a testes, ao que faz e quando faz, do que uma linguagem de máquina, mesmo que seja uma linguagem a ser criada.
Bem, talvez uma linguagem sintética faria mais sentido, mas parece que é um problema que não precisamos resolver, que já está resolvido.
Então eu acho difícil a gente conseguir esse mecanismo de escrever um arquivo, um project definition, um PRD e gerar o sistema OneShot. Simplesmente porque a gente não sabe definir muito bem o que é um projeto, como o software funciona e o que ele deve fazer. Ele é um organismo vivo, dependente dos usuários.
Outro é que eu também não acredito que a gente tenha necessidade de criar uma meta-linguagem, na verdade uma linguagem de baixo nível, que seja mais rápida e mais performática, porque os mecanismos de treinamento já tiram muito proveito dessas grandes linguagens, que tem abundância de exemplos, cada vez mais exemplos, mesmo sintéticos, delas mesmas.