Lucas Almeida Picture

Clean Code Nunca Foi O Ponto

A única coisa que tem valor no seu software é o que acontece quando a CPU o executa. O código-fonte nunca teve valor para o usuário final, e a IA tornou isso impossível de ignorar.

Disponível em: EN ·PT

#software development #code quality #artificial intelligence

A única coisa que tem valor no seu software é o que acontece quando a CPU o executa. O código-fonte nunca teve valor para o usuário final. A IA só tornou isso impossível de continuar ignorando.

Aprendi isso do jeito caro, com uma startup que montei com um ex-colega. Tínhamos uma visão em que acreditávamos, e quando os primeiros sinais diziam que as pessoas não se importavam, nós nos convencíamos de que o problema era o pitch ainda não estar claro o suficiente. Não era o pitch. Ninguém estava comprando a coisa linda que existia na nossa cabeça, e ninguém estava comprando o nosso código também, isso é meio óbvio, mas às vezes o óbvio precisa ser dito: “Nenhum consumidor final se importa se você seguiu os princípios SOLID ou outros conceitos do Uncle Bob”. A única pergunta que importa (e sempre importou) é se aquele bolo de código que você ou seu agente de IA favorito escreveu resolve o problema de alguém que dá dinheiro em troca.

O mesmo ponto cego aparece em como desenvolvedores falam sobre código. Já sentei ao lado de colegas que tratavam um framework ou uma lista de boas práticas como religião, repetindo regras que não conseguiam justificar. Ao perguntar o porquê da utilização do padrão/framework, a resposta é ou “Porque esse é o padrão da indústria” ou “Porque este é o padrão correto”. Sinceramente, isso me dói na alma. O problema não é aspirar a uma codebase bem estruturada e organizada, o problema é “copiar e colar” uma série de regras sem saber o motivo real que levou àquela decisão e sem notar a clara utilização de lógica circular ou apelo à autoridade na hora de justificar a decisão.

O usuário executa o programa, não o repositório

Ninguém que paga por software abre o código-fonte. As pessoas executam o programa. O valor chega no momento em que a CPU executa as instruções e um problema que elas tinham deixa de ser um problema. Software é intangível de um jeito que hardware não é. Uma cadeira tem valor na madeira e no conforto que ela te proporciona. Um programa tem valor só no que ele faz quando roda. A elegância do código-fonte é invisível para a pessoa cujo problema ele resolve. Dê dois programas que resolvem o mesmo problema da mesma forma, e o usuário não consegue dizer qual é código espagueti e qual não é. Ele, o cliente, também não tem motivo para se importar.

Qualidade é um meio, e ela tem uma função

É aqui que as pessoas esperam que eu diga que qualidade não importa. Na realidade, a qualidade importa muito. Só não importa pela razão que a maioria usa para defendê-la. Obcecar com a qualidade do código é um erro, porque polir o código-fonte não produz nada para o usuário. Ignorar a qualidade também é um erro, e custa caro. Código que evolui rápido e sem qualidade custa velocidade de adaptação no futuro, e as entregas vão ficando cada vez mais lentas e de forma exponencial. Quando isso acontece, o valor para de fluir. Qualidade é o que mantém o software barato de mudar, e essa é toda a função dela. Qualidade serve para manter o ritmo de entregas no longo prazo, não é um troféu a ser conquistado. No momento em que você trata Clean Code como o objetivo, você confundiu a ferramenta com o resultado.

A IA fez a conta chegar

Por anos, dava para esconder essa confusão, porque escrever código decente era lento e custoso, então parecia valioso por si só. A IA tirou esse disfarce. Uma máquina agora produz código correto, simples e funcional mais rápido do que qualquer um de nós escreve código bonito à mão. Se uma ferramenta entrega o resultado em execução mais rápido do que você entrega o seu artesanato, você precisa se perguntar o que estava de fato otimizando. Espero que a resposta seja o problema do usuário e não o seu próprio senso de elegância.

Quando você aceita que o código é um meio, a pergunta muda de forma. Ela deixa de ser “esse código é bom?” e passa a ser “esse código me deixa continuar entregando valor de forma barata e consistente?”. A primeira pergunta você pode discutir para sempre dentro de um pull request. A segunda é a mais objetiva e traz o foco de volta para o que realmente importa: entregar valor pro usuário final.