Uma epifania de software

Uma postagem pessoal de blog sobre “programação como construção de teoria” argumenta que o verdadeiro trabalho do desenvolvimento de software é construir e manter modelos mentais ricos de um sistema, o que explica por que código legado é difícil de alterar, por que desenvolvedores solo às vezes podem superar equipes e por que reescritas frequentemente parecem mais fáceis do que o onboarding em uma base de código existente. Os leitores, em grande parte, concordam com a ideia central, relacionando-a a conceitos como modelos mentais, integridade conceitual, qualidade da documentação, conhecimento de domínio e até como o código gerado por IA pode virar uma “caixa-preta” sem uma teoria correspondente. No entanto, muitos se incomodam com um widget animado de notificação no site que rastreia visitantes ao vivo, o que provoca fortes críticas à experiência do usuário, soluções alternativas como modo leitor e filtros de bloqueio de anúncios, e acaba levando o autor a remover o recurso e explicar a intenção original por trás dele.

UX do site e pop-up de notificação

  • A maioria dos comentários se fixa em um fluxo de notificações de “visitantes ao vivo” na parte inferior da página.
  • Muitos o descrevem como distrativo, indutor de “enjoo”, até um risco de epilepsia; alguns se recusam a ler o artigo por princípio.
  • Soluções sugeridas: modo leitor do navegador, regras do uBlock/NoScript, cobrir fisicamente a parte inferior da tela.
  • Alguns argumentam que os usuários não deveriam ter de “consertar” a UX de um blog; outros dizem que o artigo é bom o suficiente para justificar pequenos contornos.
  • O autor mais tarde aparece no fio, explica a intenção (fazer o site parecer “vivo” e destacar implicações de privacidade) e relata que o recurso foi removido após a reação negativa.

Debate sobre terminologia: “teoria” vs “modelo”

  • Vários comentaristas acham “teoria” confuso e sugerem “modelo”, “modelo mental”, “abstração” ou “compreensão” como termos mais claros.
  • Outros defendem “teoria” no sentido de Ryle/acadêmico: uma estrutura interna, parcialmente inexprimível, que permite ação habilidosa.
  • Há alguma troca semântica sobre se uma teoria precisa ser comunicável e como ela difere de intenção ou conhecimento de domínio.

Software como teoria / meio de conhecimento

  • Muitos se identificam com a ideia de que o ativo crucial é a teoria mental compartilhada por trás do código, não o código sozinho.
  • Isso é usado para explicar:
    • Por que sistemas legados são difíceis de mudar.
    • Por que desenvolvedores solo, com compreensão de todo o sistema, podem superar equipes maiores.
    • Por que reescritas parecem mais fáceis do que o onboarding em código desconhecido.
  • Alguns discordam, argumentando que o “produto” real é o resultado/saída de negócio, com a teoria como um ativo importante, mas secundário.

Código legado, documentação e compreensão coletiva

  • Vários descrevem experiências reais de reconstruir a teoria a partir de sistemas legados mal documentados.
  • Alguns insistem que boa documentação e histórico de versões podem capturar grande parte da teoria ausente; outros dizem que a teoria nunca pode ser totalmente externalizada.
  • Ênfase de que a compreensão costuma ser coletiva, distribuída entre equipes, e não concentrada em uma única mente.

Codificação assistida por IA

  • Um fio relaciona o conceito de teoria ao desconforto com geração de código por IA: a saída da IA parece uma “caixa-preta” sem uma teoria interna.
  • Outros sugerem um padrão de interação em que a IA ajuda a construir código e explicações iterativamente, de modo que o humano ainda forme uma teoria funcional.