1 pontos por GN⁺ 2024-09-28 | 1 comentários | Compartilhar no WhatsApp

Escrever código para computadores é difícil, mas escrever código para pessoas é ainda mais difícil

  • Escrever código para computadores já é difícil, porque é preciso decompor grandes objetivos de negócio em pequenas instruções lógicas.
  • Mas escrever código para pessoas é ainda mais difícil. Trata-se de um trabalho que combina ciência da computação e psicologia.
  • Como disse Richard Feynman, imagine quão difícil seria a física se os elétrons tivessem emoções. Isso é uma boa forma de explicar a programação para pessoas.

O começo já é o produto

  • Ouvir o feedback dos usuários é importante, mas a maior parte do feedback vem de power users que usam o produto com frequência.
  • Existe viés de sobrevivência. Quase não se ouve o feedback dos usuários que nem chegaram a começar.
  • Produtos de consumo vêm otimizando o processo de onboarding há muito tempo. Ferramentas de desenvolvimento deveriam fazer o mesmo.
  • O processo de onboarding deve ser tratado como parte do produto, com configuração mínima para que o usuário consiga usá-lo em poucos minutos.

As pessoas aprendem por exemplos, não por “conceitos centrais”

  • Pessoas são ótimas em reconhecimento de padrões. Já os computadores seguem uma lógica rígida.
  • Muitas documentações de ferramentas de desenvolvimento são escritas como se fossem programas de computador. Isso não funciona bem para pessoas.
  • Aprender por meio de exemplos é mais eficaz. Exemplos ajudam o usuário a entender a ferramenta.

Cair na armadilha do sucesso

  • O modo padrão da programação é corrigir erros. Os usuários passam a maior parte do tempo corrigindo erros.
  • É importante conduzir o erro ao sucesso.
  • É preciso transformar o erro em uma oportunidade para guiar o usuário pelo caminho certo. Inclua snippets de código no tratamento de exceções e ofereça ajuda por meio de mensagens de aviso.

Evitar sobrecarga conceitual

  • Ter que entender novos conceitos gera atrito.
  • 2 ou 3 conceitos novos são aceitáveis, mas aprender 8 conceitos novos já é pesado.
  • O ideal é um framework que ofereça recursos poderosos com poucos conceitos. Por exemplo, o React oferece bastante poder com alguns conceitos simples.

O princípio do pato conceitual

  • Ao introduzir um novo conceito, é importante usar termos familiares ao usuário.
  • Por exemplo, é melhor chamar de “função” o ato de avaliar um novo valor. Isso permite que o usuário aproveite modelos mentais que já possui.

Programabilidade

  • Os usuários vão fazer trabalhos criativos no codebase.
  • Quase tudo no framework deveria ser “programável”.
  • Em vez de depender de CLI, deve ser possível chamar diretamente pelo código, convertendo configurações em SDKs ou APIs.

Tenha cuidado com mágica, padrões e açúcar sintático

  • Padrões e funcionalidades “mágicas” devem ser introduzidos com cuidado.
  • Se um padrão não se aplicar a pelo menos 97% dos casos, e a mágica a pelo menos 99%, é melhor não introduzi-los.
  • Programar não é golfe. O objetivo não deve ser escrever o mínimo de código possível, e sim priorizar a legibilidade.

Escrever código para pessoas é difícil

  • A maioria das coisas deveria ser imutável.
  • Deve-se evitar “scaffolding” (geração de código).
  • O loop de feedback precisa ser extremamente rápido.
  • É preciso ter um processo de descarte para que o usuário consiga lidar facilmente com isso.
  • Deve-se usar testes automáticos para snippets de código na documentação e nos exemplos.

Resumo do GN⁺

  • Este texto trata da dificuldade de escrever código para pessoas e de como lidar com isso.
  • Criar ferramentas de desenvolvimento amigáveis ao usuário é importante, e isso começa no processo de onboarding.
  • Aprender por exemplos é eficaz, e conduzir erros ao sucesso é fundamental.
  • Ao introduzir novos conceitos, é importante usar termos familiares ao usuário e considerar a programabilidade.
  • Funcionalidades como padrões e “mágica” devem ser introduzidas com cuidado, e a legibilidade deve vir em primeiro lugar.

1 comentários

 
GN⁺ 2024-09-28
Comentários no Hacker News
  • As pessoas aprendem de maneiras diferentes

    • Preferem entender primeiro os conceitos centrais e depois ver exemplos
    • Muitos tutoriais conduzem o usuário pela mão como se fosse montar LEGO
    • Querem saber como e por que as decisões são tomadas
    • Ao abordar uma nova biblioteca ou framework, leem primeiro o texto introdutório e pulam os exemplos de código de "Getting started"
    • Há mais discussão conceitual nas seções avançadas, então exploram essas partes primeiro
  • Escrita e empatia são importantes

    • Escrever código e criar aplicações são coisas diferentes
    • Desenvolvedores mais voltados para fora se preocupam mais com arquitetura e documentação
    • Simplicidade é importante
    • Criar aplicações é parecido com escrever um ensaio
    • Frameworks atrapalham a capacidade de organização dos desenvolvedores
  • Nem todo mundo aprende por exemplos

    • Algumas pessoas aprendem do geral para o específico
    • Essas pessoas acabam sendo deixadas de lado na educação básica
  • O código é escrito para humanos

    • É importante entender o problema de forma abrangente, colaborar com as partes interessadas e conceber algoritmos eficientes
    • Escrever código não é a parte difícil
  • Citação de Code Complete

    • "Uma pequena parte da programação é escrever programas para que o computador consiga lê-los; a maior parte é escrevê-los para que outros humanos consigam lê-los"
  • Escrever código é para humanos

    • Para computadores, instruções de máquina já bastam
    • Código é uma forma de formalizar o pensamento humano
  • Opiniões sobre a evolução das IDEs

    • O intellisense básico melhorou, mas o conceito de programar não mudou muito
    • Ficou mais fácil acessar novas ferramentas e bibliotecas
    • Querem deixar o trabalho de codificação para o computador e focar na criação
    • São necessárias ferramentas que tratem automaticamente pequenos detalhes da linguagem
    • Gostariam de ver vários métodos na tela ao mesmo tempo
    • Gostariam que transformações de dados fossem tratadas automaticamente
  • Divulgação de post de blog

    • Escreveram um post chamado "Move Fast & Document Things"
    • Compartilham uma cultura de escrita de código
  • Opiniões sobre como aprender programação

    • Aprenderam escrevendo pequenos programas
    • Não puderam se candidatar a empregos melhores em desenvolvimento de software por falta de conhecimentos básicos
    • É importante sempre aprender os fundamentos
  • Importância dos exemplos e dos conceitos centrais

    • Tanto exemplos quanto conceitos centrais são importantes
    • São necessários conceitos centrais bem definidos e bem documentados
    • Guias de "Getting Started" devem incluir exemplos