Enquanto lia o livro Aesthetic Programming de Soon e Cox, me deparei com o conceito de “alfabetização expandida” que me fez refletir sobre como diferentes pessoas enxergam o software.
Alfabetização expandida é a capacidade de escrever e ler ampliada com a habilidade de compreender código. Este letramento adicional está ligado a uma melhor compreensão da mídia digital e de como nossa comunicação está sendo aprimorada por novas formas de linguagens de escrita. Novas linguagens que se comunicam tanto com programadores quanto iniciam ações em uma máquina ou sistema online.
Compreender como computadores e códigos funcionam é um dos fatores que diferenciam as pessoas que veem software, IA e tecnologias semelhantes como uma "caixa preta mágica" capaz de fazer qualquer coisa sem custos, daquelas que entendem os limites e os custos da tecnologia. Entendem que qualquer software funciona a partir de um conjunto de comandos que os programadores fornecem ao computador, e que os executa exatamente como foram escritos. Se quiser visualizar isso de maneira mais clara e cômica, veja o vídeo de Josh Darnit (em inglês):
Isso também é verdade para Modelos de Linguagem de Grande Escala (LLMs) e IA generativa. Nestes casos, podemos imaginar que temos um programa que gera outro programa/código com base nos dados de treinamento que recebeu. Este processo tem um custo elevado em termos de energia e trabalho manual para indicar ao modelo o que é correto e o que é errado. Caso contrário, ele pode acabar dizendo aos usuários que “Médicos recomendam fumar 2-3 cigarros por dia durante a gravidez.”
Voltando à ideia de alfabetização expandida, programadores sabem que um código escrito por um programador, especialmente um experiente, tem melhor desempenho e legibilidade do que um código gerado por máquina. Em termos leigos, isso significa que um código escrito por uma pessoa consome menos energia e pode ser melhor compreendido e corrigido — não apenas em relação a bugs que quebram apps, mas também em termos de consequências éticas, como IAs enviesadas, pessoas usando IA para aprender a fabricar armas ou cometer crimes sem serem detectadas (para mais informações, leia: "AI has a racism problem, but fixing it is complicated, say experts" e "Could a Chatbot Teach You How to Build a Dirty Bomb?" ), além de alucinações e mentiras descaradas.
IA é um tema muito discutido atualmente, mas a ideia aqui é focar em alfabetização expandida e nas diferenças entre programadores e não programadores que afetam a todos nós.
Algo comum entre desenvolvedores é a ideia de que “o usuário não se importa com a linguagem usada para construir algo” ou que “a melhor linguagem é a que paga minhas contas”, e eu diria que ambas são verdadeiras. Mas isso só acontece porque o usuário não é alfabetizado em código. No entanto, o usuário final ainda é diretamente impactado pelo código, pela linguagem e pelas escolhas tecnológicas que fazemos. Até financeiramente. Os usuários começam a sentir que seus computadores ou celulares estão “ficando mais lentos” e decidem comprar novos. Parte disso pode ser atribuída ao envelhecimento do hardware, mas uma grande parte está relacionada às escolhas de linguagem, framework, paradigma e tecnologia.
Embora o usuário não se importe com a forma como construímos o software que ele usa, isso afeta a durabilidade do hardware, o consumo de energia da bateria e até a velocidade com que uma ação é executada (para um estudo detalhado, consulte "Ranking programming languages by energy efficiency"). Enquanto os usuários não se preocupam com a construção do software, a maioria das empresas tentará economizar ao máximo e vender software lento como se fosse “extremamente rápido” (tradução livre de “blazing fast” - Um termo familiar para programadores, mas que na prática pode significar qualquer coisa, desde muito lento a realmente rápido), enquanto apenas programadores que podem verificar o que está por trás do sistema conseguem distinguir.
Enquanto os usuários continuarem evitando aprender como computadores e software funcionam, as empresas farão o possível para aumentar seus lucros às custas do dinheiro dos usuários e do meio ambiente. Vendendo promessas falsas de um futuro onde qualquer coisa pode ser gerada usando linguagem natural a baixo custo, quando na realidade somos forçados a comprar novos computadores e celulares para acompanhar tendências que nunca pedimos e das quais não obtemos nenhum benefício.