14 pontos por GN⁺ 2025-12-12 | 7 comentários | Compartilhar no WhatsApp
  • Na cultura moderna de desenvolvimento de software, os nomes de projetos e bibliotecas estão sendo preenchidos com palavras arbitrárias sem relação com a função
  • No passado, nomes como grep, awk, sed, FORTRAN, COBOL descreviam diretamente a função ou o propósito, mas hoje há uma proliferação de nomes sem significado
  • Essa tendência se acelerou com a expansão do GitHub e da cultura de startups, rompendo completamente a ligação entre nome e função
  • O custo de compreensão e a carga cognitiva aumentam, e os desenvolvedores acabam repetindo buscas desnecessárias para entender o papel de cada ferramenta
  • O texto defende a restauração de convenções de nomenclatura claras e orientadas à função e enfatiza que, em ferramentas técnicas, clareza e profissionalismo devem vir antes da marca

Mudança nas práticas de nomenclatura de software

  • Richard Stallman mencionou, em uma palestra na EmacsConf de 2022, a importância de “nomes fáceis de lembrar”, enfatizando que o nome de um pacote deve revelar o que ele faz
    • O ecossistema do Emacs tradicionalmente manteve convenções de nomenclatura baseadas em função, como dired(editor de diretórios) e eshell(shell do Emacs)
  • Porém, desenvolvedores modernos tendem a dar às ferramentas nomes como substantivos aleatórios, seres mitológicos ou personagens fictícios
    • Em outras áreas técnicas, isso seria considerado falta de profissionalismo

O problema dos nomes sem significado

  • Como exemplo, nomes de ferramentas como “Viper”, “Cobra”, “Melody”, “Casbin” e “Asynq” não permitem inferir absolutamente nada sobre sua função
    • O autor menciona a experiência de ter precisado pesquisar para entender a explicação de infraestrutura dada por um amigo
  • Em outras áreas da engenharia, os nomes descrevem estrutura ou função
    • Ex.: Golden Gate Bridge, Hoover Dam, I-beam, butterfly valve deixam clara sua forma ou papel
  • Na química, há regras como a nomenclatura IUPAC, que determinam que um nome se refira com precisão a um único objeto
    • Ex.: 2,2,4-trimethylpentane significa uma única molécula; ninguém a chamaria arbitrariamente de “Steve”

As regras de nomenclatura do passado e a ruptura atual

  • Nos anos 1980, abreviações baseadas em função como grep, awk, sed, cat, diff eram predominantes
    • Nomes de linguagens de programação como FORTRAN, COBOL, BASIC, SQL, Lisp também refletiam seu propósito
  • A partir dos anos 2010, começou a disseminação de nomes sem significado
    • Alguns, como MongoDB, ainda tinham alguma relação funcional ou etimológica, mas depois houve uma explosão de nomes sem sentido com o GitHub e a cultura de startups
    • O texto aponta como causa a tendência de imitar casos de sucesso centrados em marca, como o Google

Custo cognitivo e queda na eficiência do desenvolvimento

  • Nomes como libsodium dificultam deduzir a função, obrigando o desenvolvedor a repetir trocas de contexto
    • Perde-se tempo desnecessário tentando interpretar “por que sodium?”
  • Quanto mais dependências um projeto tem, mais esse imposto cognitivo(cognitive tax) se acumula
    • Isso leva à queda de produtividade dos desenvolvedores
  • O autor aponta que, ao processar frases como “Viper, Cobra, Melody...”, recursos mentais são desperdiçados na interpretação de tokens sem significado

Contra-argumentos comuns e suas refutações

  • “Nomes fáceis de lembrar são melhores para marketing” → ferramentas para desenvolvedores não são produtos de consumo, e a clareza funcional é mais importante
  • “Nomes descritivos são entediantes” → o tédio é um preço aceitável pela clareza; instrumentos cirúrgicos também são entediantes, mas precisos
  • “É só por diversão” → todos os usuários pagam o preço dessa ‘diversão’, o que acaba desperdiçando tempo em toda a indústria
  • “Os bons nomes já foram todos usados” → namespaces, prefixos e palavras compostas podem resolver isso, e no mínimo o nome deve manter relação com a função

O caminho daqui para frente

  • O problema é explicado menos como malícia e mais como resultado de uma mudança cultural
    • À medida que a programação passou de um ambiente centrado em empresas para um centrado em comunidades, as normas sociais enfraqueceram
  • A solução proposta é uma restauração cultural das convenções de nomenclatura
    • Em vez de regulação, é preciso melhorar por meio da recuperação do profissionalismo, da educação e da pressão social
  • Os nomes de bibliotecas devem refletir sua função, e, se necessário, palavras compostas e expressões longas devem ser aceitas
    • Ex.: “http-request-validator” é muito mais claro do que “zephyr”
  • Mascote e nome devem ser separados
    • Ex.: o PostgreSQL usa o mascote elefante Slonik, mas o nome em si mantém um significado funcional
  • Se não for um produto de consumo em que branding seja essencial, deve-se priorizar clareza e profissionalismo
    • Antes de dar o nome do “personagem de anime favorito”, vale se perguntar: “um engenheiro civil daria esse nome a um sistema de pontes?”
  • Em conclusão, é preciso parar com a proliferação de nomes sem sentido e voltar a uma linguagem técnica clara
    • Clareza não é tédio, mas respeito pelo tempo e pelos recursos cognitivos do usuário

7 comentários

 
epdlemflaj 2025-12-13

Até awk mal dá para considerar um nome baseado em função....

 
roxie 2025-12-15

Se não tivesse colocado exemplos, a capacidade de convencer teria aumentado uns 10%..

 
kandk 2025-12-15

Concordo até certo ponto, mas parece que eles não querem passar pelo estresse de dar nomes.

 
qpolsa95 2025-12-13

Todos os nomes úteis já estão sendo usados por alguém.

 
khris 2025-12-13

Alguém sabe o que emacs significa? Até pode ter um significado, mas nomes em forma de acrônimo não dão para entender só de bater o olho, sendo um nome... E, para dar nomes só pela função, hoje em dia já existem projetos demais.

 
cgl00 2025-12-13

Culpar o GitHub por isso parece só uma perseguição no estilo do RMS mesmo kkk

 
GN⁺ 2025-12-12
Comentários do Hacker News
  • A versão GNU do Yacc se chama Bison. Pine era sigla para “Pine Is Not Elm”, e UNIX veio de UNICS, um trocadilho com MULTICS. Não sei o que significa dd, nano é um clone do pico, e Postfix junta “post” com “bug fix”. C++ é a versão incrementada de C, C veio depois de B, e B veio depois de BCPL. Na verdade, os desenvolvedores não perderam a “filosofia de dar nomes”; eles nunca tiveram uma. Por outro lado, acho que projetos modernos como Clang, LLDB, jq, fzf e loc são exemplos de bons nomes. mise-en-place é uma metáfora perfeita para a função do mise

    • dd vem da instrução DD do JCL. Originalmente, foi tirado da forma como arquivos eram descritos em mainframes IBM, e o comando dd do UNIX foi criado para trocar arquivos com mainframes. Por isso ele acabou com uma sintaxe em formato key=value, pouco típica do UNIX
    • Tradicionalmente, dd era chamado em tom de piada de “delete disk” ou “destroy data”, porque era muito usado para sobrescrever blocos de disco
    • C++ significa o operador de incremento pós-fixado de C. Ou seja, uma metáfora perfeita: tem o mesmo valor de C, mas é incrementado depois de ser lido
    • GNU e Emacs também são siglas recursivas. Perl, Python, Java, Go, Pascal, Git, Mercurial, CVS etc. também têm origens de nome variadas. No fim, acho que essa discussão sobre nomes é uma agitação sem muito sentido
    • Back Orifice 2000 tinha um nome que deixava claro o que fazia, mas BitchX não
  • Comandos UNIX como grep, awk, sed, cat e diff tinham nomes funcionais ou sistemáticos, mas na prática só diff dá para adivinhar intuitivamente. Chamar awk de bom nome é exagero

    • O fato de esses nomes parecerem naturais é só a ilusão da familiaridade. Hoje existem utilitários e bibliotecas demais, então diferenciar o nome virou algo essencial
    • Libiberty era um dos nomes mais engraçados. Foi batizado assim para poder ser linkado com a opção -liberty
    • cat não é abreviação de concatenate, mas vem de catenate. O prefixo “con” foi omitido por ser redundante. É um exemplo interessante até do ponto de vista linguístico
    • awk, sed e cat não são exatamente bons nomes; são só nomes familiares. grep, por outro lado, até soa como uma onomatopeia, passando a sensação de “capturar” padrões
    • Essas siglas e abreviações são como jargão especializado por setor: depois que você aprende, tudo parece natural. Antigamente a eficiência na digitação importava muito, então a diferença entre cat e concat afetava a produtividade
  • Rebati a ideia de que “esse tipo de nome na área técnica é suicídio de carreira”. Se você olhar a lista de codinomes do Departamento de Defesa dos EUA, vai ver que há muitos nomes deliberadamente opacos. Hoover Dam inicialmente era chamada de Boulder Canyon Project, e o nome não explicava a função. Requests seria mesmo um nome melhor que Reitzlib? No fim, depende do contexto

    • Na química também há nomes divertidos. Por exemplo, algoritmos e pacotes como SHAKE, RATTLE, CHARMm e Amber. Nomes fofos são ainda mais comuns na biologia
    • Na meteorologia não é diferente. Um exemplo famoso é o nome do fenômeno auroral STEVE
    • Codinomes militares são intencionalmente aleatórios para ocultar o significado, e projetos internos de empresas às vezes seguem a mesma lógica
    • Na biologia também existem nomes como Sonic hedgehog protein
    • A astronomia é especialmente famosa por seus piores nomes em forma de sigla. Há exemplos neste link
  • Um nome como awk na verdade não é bom. É só as iniciais dos autores e não transmite absolutamente nada sobre a função. Hoje em dia existe autocompletar com Tab, então nem faz mais tanto sentido encurtar tudo

  • Eu concordo com este texto de resposta. Identificadores externos mudam de significado com o tempo, então nomes perfeitamente descritivos envelhecem mal. Além disso, há nomes demais do tipo “X Manager” e “X Service”, o que dificulta distinguir um do outro

    • Eu gosto de nomes criativos. Se está difícil dar nome, isso é sinal de que o conceito ainda não está claro. O nome ideal é aquele que parece estranho no começo, mas fica memorável depois que você entende o sentido. O caso da equipe de testes A/B do Spotify se chamar “ABBA” é um exemplo perfeito
    • Claro, depende do objetivo. Mas focar em uma única tarefa e colocar isso no nome também é um bom princípio
  • Trabalhei como engenheiro de calibração de motores numa OEM automotiva, e todas as variáveis e funções eram escritas em abreviações. No primeiro mês, minha cabeça quase explodiu de cansaço. No fim, um colega disse: “é como aprender um novo idioma”, e era exatamente isso. Ou seja, ter muitos nomes técnicos não reduz necessariamente a carga cognitiva

    • Na área de comunicação móvel é a mesma coisa. Se você tentar decorar todas as siglas, nunca acaba. Por exemplo, AP pode ser tanto Application Processor quanto Access Point, dependendo do contexto. Mesmo assim, acaba sendo usado porque ainda é mais curto que MSISDN
    • Se você assistir a este vídeo sobre o exame de licença dos táxis de Londres, vai ver que o esforço de aprendizado é tão grande que chega a alterar a estrutura do cérebro. Sistemas complexos de nomenclatura geram carga cognitiva por natureza
  • Tenho dificuldade em concordar com a ideia de que “nomes funcionais são melhores que marketing”. Nomes baseados em função acabam virando um oceano infinito de siglas. Você termina confundindo ABDC com ADBC

    • Eu também trabalhei numa organização assim, e no fim surgem nomes como CoreMainHttp e MainHttpCore, e até APIs diferentes com o mesmo nome convivendo lado a lado. Restos de nomes de equipes antigas continuam vivos em coisas como “DataOrgUtils”. No fim, até nomes fofos convergem por repetição. Memes culturais como Phoenix, Keymaster, Simpsons e Star Wars acabam se repetindo
    • O autor ignora que as ferramentas sobreviveram à concorrência. Nomes memoráveis ajudaram na sobrevivência
  • Acho curioso ver um texto desses no HN. Usar nomes como awk como exemplo para dizer que “perdemos a essência de dar nomes” é contraditório. No fim, isso parece mais uma aversão pessoal a nomes fofos. Aliás, este comentário foi escrito no Firefox — e pelo nome não dá para saber que é um navegador web

    • Nomes como awk também tinham seu próprio sentido naquela época. Softwares modernos atendem um público mais amplo, então é preciso equilibrar tecnicidade e diversão. Não tenho nada contra nomes fofos, mas acho que em contexto profissional é bom ter mais cuidado. (Este comentário foi enviado com msmtp — um cliente SMTP cujo nome descreve bem a função)
  • Sobre a ideia de que “nomes descritivos são entediantes”, ferramentas de sala de cirurgia também costumam receber nomes de pessoas. Adson, Allis, Babcock e Kocher não explicam a função em nada. No fim, o significado vem com a familiaridade. awk é ruim, mas diff é um exemplo razoável

    • Quem já teve um pino de Kirchner enfiado no corpo provavelmente vai concordar
  • Sobre a ideia de que “nossa área parece um zoológico de substantivos aleatórios”, eu gosto de nomes divertidos. Meu projeto Wimsey é uma biblioteca de testes de dados, mas o nome por si só não deixa isso claro. Mesmo assim, gosto de nomes como Python, Cron e Zellij, que carregam afeto e humor. Tecnologia no fim é feita por pessoas, e precisa ter prazer no processo. “brown-dog-2” é menos humano que “cookie”

    • Mas um nome como “data-testing-library” perde o sentido no momento em que surge uma segunda biblioteca
    • Nomes estruturais como Project.Parser.Pcapng do .NET funcionam bem dentro do projeto, mas em contexto independente não servem para muita coisa
    • Por outro lado, algumas pessoas encontram prazer na própria seriedade profissional e veem nomes fofos como algo dispersivo. Há também a visão de que a satisfação vinda do capricho artesanal é a verdadeira diversão