Três virtudes de um grande programador

As famosas “três virtudes” de Larry Wall — preguiça, impaciência e hubris — são revisitadas enquanto desenvolvedores debatem se ainda faz sentido reinterpretrar vícios como virtudes hoje em dia. Os comentaristas discutem o significado de “hubris”, propõem alternativas como curiosidade, medo e orgulho, e exploram como esses traços podem impulsionar automação, desempenho e qualidade de código quando equilibrados corretamente. Outros refletem sobre como essas ideias se relacionam com burnout, habilidades de comunicação, mudanças nas ferramentas (Perl, Python, Ruby) e a diferença entre programar por diversão e construir sistemas mantíveis em ambientes profissionais.

Reenquadrando as Três Virtudes

  • Muitos veem a “preguiça” como um impulso para automatizar trabalho tedioso, entregar soluções mínimas viáveis e evitar complicações desnecessárias; para alguns, isso se tornou sua melhor característica profissional.
  • A “impaciência” é associada ao desejo por ciclos de compilação/teste mais rápidos e sistemas mais performáticos, mas outros a veem como algo que se sobrepõe à preguiça, em vez de ser distinta.
  • A “hubris” é a mais contestada: as interpretações vão desde orgulho no próprio trabalho, querer código que os outros não critiquem, ou acreditar que se pode ir além das regras padrão de “não reinvente a roda”, até vê-la como arrogância destrutiva que rejeita críticas válidas.

Virtudes Alternativas ou Complementares

  • As sugestões incluem: curiosidade (como motor de aprendizado e melhoria), medo da complexidade (para conter a hubris), hesitação (projeto cuidadoso desde o início), estupidez/esquecimento (motivando testes, tipos e documentação), discernimento, sabedoria, humildade e habilidades de comunicação.
  • Alguns argumentam que o enquadramento original como “vícios transformados em virtudes” é importante do ponto de vista retórico; outros preferem termos positivos mais convencionais.

Design, Reescritas e YAGNI

  • Uma visão: mais tempo gasto em planejamento e discussão evitaria reescritas caras causadas por projetos iniciais incompletos.
  • Contraponto: retrospectiva e viés de sobrevivência; não é possível acertar perfeitamente desde o início, então prefira designs simples, decisões reversíveis e refatoração em vez de arquitetura “abrangente” antecipada.
  • YAGNI é enfatizado: evite construir para requisitos futuros especulativos, mas tenha cuidado com designs “ingenuamente simples” que bloqueiam o crescimento.

Hábitos de Trabalho, Burnout e Motivação

  • O excesso de trabalho é apresentado como uma fraqueza genuína, contribuindo para burnout e problemas de saúde; alguns distinguem “trabalhar duro” de “passar muito tempo trabalhando” e apontam o significado do trabalho e traços pessoais como fatores.
  • Vários comentários observam que amar programar leva algumas pessoas a continuar programando fora do horário; outros reagem contra horas extras corporativas não remuneradas.

Perl, História e Outras Linguagens

  • A discussão relembra como essas virtudes se encaixavam na cultura do Perl: poderoso, conciso, bom para automação, frequentemente usado por programadores não “oficiais”.
  • O Perl é criticado como “write-only” e indisciplinado; alguns descrevem sua substituição, na prática, por ferramentas como awk/sed, Tcl, Ruby e Python.
  • O Python é elogiado por sua ubiquidade e conveniência para scripts, mas também criticado por permitir um grande volume de código de baixa qualidade.

Comunicação e Meta-Discussão

  • Programar é enquadrado como algo fundamentalmente ligado à comunicação escrita clara; o domínio da linguagem (qualquer língua) é visto como fortemente correlacionado a uma boa programação.
  • As clássicas perguntas de entrevista sobre pontos fortes e fracos são ridicularizadas; respostas espertas do tipo “virtudes como defeitos” são vistas por alguns como sinais de alerta.
  • Dar conselhos online é visto como arriscado porque atrai críticas, embora isso também possa revelar abordagens melhores.