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
Comentários no Hacker News
As pessoas aprendem de maneiras diferentes
Escrita e empatia são importantes
Nem todo mundo aprende por exemplos
O código é escrito para humanos
Citação de Code Complete
Escrever código é para humanos
Opiniões sobre a evolução das IDEs
Divulgação de post de blog
Opiniões sobre como aprender programação
Importância dos exemplos e dos conceitos centrais