Escribir código para computadoras es difícil, pero escribir código para personas es aún más difícil
- Escribir código para computadoras ya es difícil, porque hay que descomponer grandes objetivos de negocio en instrucciones lógicas pequeñas.
- Pero escribir código para personas es más difícil. Es una tarea que combina ciencias de la computación y psicología.
- Como dijo Richard Feynman, imagina lo difícil que sería la física si los electrones tuvieran emociones. Eso describe bien la programación para personas.
Empezar ya es parte del producto
- Escuchar la retroalimentación de los usuarios es importante, pero la mayor parte de esa retroalimentación viene de power users que usan el producto con frecuencia.
- Existe sesgo de supervivencia. Casi nunca se escucha la retroalimentación de los usuarios que ni siquiera empezaron.
- Los productos de consumo han optimizado el proceso de onboarding durante mucho tiempo. Las herramientas para desarrolladores deberían hacer lo mismo.
- Hay que considerar el onboarding como parte del producto y minimizar la configuración para que los usuarios puedan usarlo en cuestión de minutos.
Las personas aprenden con ejemplos, no con "conceptos centrales"
- Las personas son muy buenas para el reconocimiento de patrones. En cambio, las computadoras siguen una lógica estricta.
- Mucha documentación de herramientas para desarrolladores está escrita como si fuera un programa de computadora. Eso no funciona bien para las personas.
- Aprender mediante ejemplos es más efectivo. Los ejemplos ayudan a los usuarios a entender la herramienta.
Caer en la trampa del éxito
- El modo básico de la programación es corregir errores. Los usuarios pasan la mayor parte del tiempo corrigiéndolos.
- Es importante guiar el error hacia el éxito.
- Hay que convertir los errores en oportunidades para guiar al usuario por el camino correcto. Se deben incluir fragmentos de código en el manejo de excepciones y ofrecer ayuda mediante mensajes de advertencia.
Evitar la sobrecarga conceptual
- Tener que entender conceptos nuevos genera fricción.
- Dos o tres conceptos están bien, pero aprender ocho conceptos nuevos resulta pesado.
- Lo ideal es un framework que ofrezca funciones poderosas con pocos conceptos. Por ejemplo, React ofrece mucha potencia con unos cuantos conceptos simples.
El principio del pato conceptual
- Al introducir un concepto nuevo, es importante usar términos familiares para el usuario.
- Por ejemplo, es mejor llamar "función" a la evaluación de un valor nuevo. Eso permite que los usuarios aprovechen sus modelos mentales existentes.
Programabilidad
- Los usuarios harán cosas creativas dentro del codebase.
- Casi todo en un framework debería ser "programable".
- En lugar de depender de un CLI, debe poder invocarse directamente desde código, y la configuración debería convertirse en un SDK o una API.
Hay que ser cuidadosos con la magia, los valores predeterminados y el azúcar sintáctico
- Los valores predeterminados y las funciones mágicas deben introducirse con cuidado.
- Si un valor predeterminado no aplica en más del 97% de los casos, o la magia no aplica en más del 99%, es mejor evitarlo.
- Programar no es golf. No hay que buscar escribir la menor cantidad posible de código, sino priorizar la legibilidad.
Escribir código para personas es difícil
- La mayoría de las cosas deberían ser inmutables.
- Hay que evitar el "scaffolding" (generación de código).
- El ciclo de retroalimentación debe ser extremadamente rápido.
- Debe existir un proceso de descarte para que los usuarios puedan resolver problemas con facilidad.
- En la documentación y los ejemplos, se deben usar pruebas automáticas para los fragmentos de código.
Resumen de GN⁺
- Este artículo trata la dificultad de escribir código para personas y cómo resolverla.
- Es importante crear herramientas para desarrolladores amigables para el usuario, y eso empieza en el proceso de onboarding.
- Aprender mediante ejemplos es efectivo, y guiar los errores hacia el éxito es clave.
- Al introducir conceptos nuevos, hay que usar términos familiares para el usuario y considerar la programabilidad.
- Los valores predeterminados y la magia deben introducirse con cuidado, y la legibilidad debe ser prioritaria.
1 comentarios
Opiniones en Hacker News
Las personas aprenden de distintas maneras
La escritura y la empatía son importantes
No todo el mundo aprende a partir de ejemplos
El código se escribe para los humanos
Cita de Code Complete
Escribir código es para los humanos
Opiniones sobre la evolución de los IDE
Promoción de una publicación de blog
Opiniones sobre cómo aprender programación
Importancia de los ejemplos y los conceptos clave