1 puntos por GN⁺ 2024-09-28 | 1 comentarios | Compartir por WhatsApp

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

 
GN⁺ 2024-09-28
Opiniones en Hacker News
  • Las personas aprenden de distintas maneras

    • Prefieren entender primero los conceptos clave y luego ver ejemplos
    • Muchos tutoriales te llevan de la mano como si armaras un Lego
    • Quieren saber cómo y por qué tomar decisiones
    • Al acercarse a una nueva librería o framework, primero leen el texto introductorio y se saltan el ejemplo de código de "Getting started"
    • En las secciones avanzadas hay más discusión sobre conceptos, así que las exploran primero
  • La escritura y la empatía son importantes

    • Escribir código y crear aplicaciones no son lo mismo
    • Los desarrolladores orientados hacia afuera se preocupan más por la arquitectura y la documentación
    • La simplicidad es importante
    • Crear aplicaciones se parece a escribir un ensayo
    • Los frameworks perjudican la capacidad de organización de los desarrolladores
  • No todo el mundo aprende a partir de ejemplos

    • Algunas personas aprenden de lo general a lo específico
    • Estas personas quedan excluidas en la educación K-12
  • El código se escribe para los humanos

    • Es importante entender el problema de forma integral, colaborar con las partes interesadas y diseñar algoritmos eficientes
    • Escribir código no es lo difícil
  • Cita de Code Complete

    • "Una pequeña parte de la programación consiste en escribir programas para que la computadora pueda leerlos, y una gran parte consiste en escribirlos para que otros humanos puedan leerlos"
  • Escribir código es para los humanos

    • A las computadoras les bastan las instrucciones de máquina
    • El código es una forma de formalizar el pensamiento humano
  • Opiniones sobre la evolución de los IDE

    • El intellisense básico ha mejorado, pero el concepto de programar no ha cambiado mucho
    • Se volvió más fácil acceder a nuevas herramientas y librerías
    • Quieren dejar el trabajo de codificación a la computadora y concentrarse en crear
    • Se necesitan herramientas que manejen automáticamente los pequeños detalles del lenguaje
    • Quieren mostrar varios métodos a la vez en la pantalla
    • Quieren que la transformación de datos se maneje automáticamente
  • Promoción de una publicación de blog

    • Escribió una publicación de blog llamada "Move Fast & Document Things"
    • Comparte su cultura de escritura de código
  • Opiniones sobre cómo aprender programación

    • Aprenden escribiendo programas pequeños
    • No pudieron postularse a mejores trabajos de desarrollo de software por falta de conocimientos básicos
    • Siempre es importante aprender los fundamentos
  • Importancia de los ejemplos y los conceptos clave

    • Tanto los ejemplos como los conceptos clave son importantes
    • Se necesitan conceptos clave bien definidos y documentados
    • La guía de "Getting Started" debería incluir ejemplos