Read in English
6 min de leitura

Reflexões sobre software de qualidade

Notas pessoais sobre o que faz um software ser bom, pra mim. Não é um manifesto, é só o que eu venho notando nas ferramentas que eu mais uso.

O pessoal vive me perguntando o que eu de fato faço com os softwares que eu amo. "Você usa Warp. O que você customiza? Quais workflows? Quais extensões?" E toda vez, a minha resposta honesta é: quase nada. Eu abro. Eu uso. Não transformo em uma IDE pessoal. Não tenho um setup cheio de atalho customizado. Simplesmente funciona.

Essa resposta me incomodava, porque parecia preguiçosa. Mas quanto mais eu paro pra pensar, mais sinto que é exatamente o ponto. O software que eu amo não me pede pra fazer muita coisa com ele. Ele se encaixa no jeito que eu já penso e sai do meu caminho.

Quero anotar o que isso significa. Não como um checklist do que software deveria ser, porque não acho que cabe a mim decidir isso, mas como o pequeno conjunto de traços que eu continuo notando nas ferramentas que eu uso de novo, e de novo. Talvez nomear esses traços ajude outras pessoas a notar o que elas mais usam também.

Paciência

A primeira coisa é: ele te deixa ficar na superfície.

Raycast é o exemplo. Você pode instalar, usar como app launcher, e nunca escrever uma única extensão. Meses passam. Continua merecendo seu lugar no dock todo dia. A profundidade está lá: extensões, scripts, AI, snippets, comandos customizados. Mas nada te puxa pra dentro antes da hora. A ferramenta vai no seu ritmo, e te espera.

Obsidian é igual. Dá pra usar como app de notas em markdown puro pra sempre. Plugins, graph view, dataview, templates, CSS customizado. Existem, estão disponíveis, mas a ferramenta nunca te julga por ignorar elas. Strong defaults, mas nunca impositivos. A profundidade é opt-in.

Ferramentas que não têm essa qualidade se anunciam logo de cara. Exigem uma cerimônia de setup. Querem que você aprenda o modelo delas antes de fazer qualquer coisa útil. Te fazem sentir que você não está à altura desde o primeiro dia.

Antecipação

A segunda coisa é mais difícil de nomear, mas eu senti na primeira vez que usei Railway. A infra inteira renderizada num canvas. Serviços como nós, conexões desenhadas entre eles, cada config a um clique de distância. Nada pra traduzir. O que eu estava pensando era o que a tela estava me mostrando.

Essa é a sensação: a interface e o modelo mental têm a mesma forma. Você não gasta energia mapeando um no outro. A ferramenta já sabia o que você veio fazer.

E essa é a qualidade que vira espelho perfeito no lado de quem constrói. O prazer de escrever uma API bem desenhada é exatamente o reflexo de usar uma ferramenta bem desenhada: qualquer problema que alguém joga nela, a API parece já saber que esse problema viria. A mudança que você não previu tem um lugar óbvio pra cair. Nada precisa ser reescrito pra acomodar; simplesmente encaixa.

Quando eu construo algo com essa qualidade, eu noto. É o que mais me dá prazer nesse trabalho. Não acontece sempre, e talvez seja por isso que importa.

Adaptabilidade

Eu sou diferente de todo mundo. E todo mundo é diferente de mim. Cada um tem o seu próprio jeito de trabalhar, mesmo fazendo a mesma coisa que outras pessoas.

Bom software é bom pra todos nós, de algum jeito.

Não é que a ferramenta vira um camaleão. As ferramentas que eu amo têm um centro claro que não se mexe, e uma borda generosa que se mexe. O centro é o que faz a ferramenta ser ela mesma. A borda é o que faz ela ser sua.

O seu Raycast não é igual ao meu. O seu Obsidian não é igual ao meu. Mesmo launcher, mesmo app de notas, formas completamente diferentes por dentro. E nenhum dos dois está usando errado.

Imperfeição

Bom software vai ter bugs. Acho que nem tem como debater isso.

A diferença é o tipo de bug. O software que eu amo ou solta um fix em poucos dias, às vezes em horas, ou o bug é pequeno o suficiente pra eu não me importar: um glitch cosmético, uma scrollbar estranha, alguma coisa que não me impede de fazer o que eu vim fazer. Tem arranhão, e tem parede. Bom software só tem arranhão.

O que você está medindo aí, na real, é confiança em quem fez. Você assume que essa pessoa está prestando atenção. Você já viu ela consertar coisas antes. O bug é chato, mas não é um sinal de abandono.

Familiaridade

Eu fico voltando pra uma comparação envolvendo comida, e ainda não confio totalmente nela.

Faz sentido: bom software é tipo aquele momento no fim de um dia longo quando você só quer um hambúrguer. Você não está procurando novidade. Você quer aquilo que você já conhece, aquele sabor que você sabe que vai te fazer feliz. É assim que eu me sinto com as ferramentas pras quais eu sempre volto.

Mas tem um lado obscuro dessa ideia que eu ainda estou digerindo. Conforto também é uma forma de se fechar. Se eu estou só pegando o hambúrguer toda vez, será que estou perdendo a próxima coisa que poderia ser melhor? "Bom software", pra mim, é só um rótulo bonito pras coisas que eu parei de questionar?

Não tenho uma resposta pronta. Talvez a versão honesta seja: conforto não é o objetivo, mas é um sinal. Quando um software ganha confiança o suficiente pra eu parar de procurar, ele fez algo certo. O perigo não está no conforto em si. Está em esquecer de, de vez em quando, olhar em volta.

Inventário

Então essa é a lista, por enquanto: paciência, antecipação, adaptabilidade, imperfeição, familiaridade.

Eu não acho que isso é o que bom software é. Só acho que é o que bom software é pra mim. A versão dessa lista que você escreveria seria diferente. Eu ia adorar ler.