2 puntos por GN⁺ 2025-01-14 | 1 comentarios | Compartir por WhatsApp
  • Reseña de David A. Wheeler

    • David J. Agans, autor de "Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems", considera este libro una obra indispensable de depuración para desarrolladores de software y hardware.
    • El libro explica principios fundamentales para encontrar y corregir errores, en lugar de centrarse en tecnologías específicas, y es especialmente útil para desarrolladores principiantes e intermedios.
    • Está organizado en torno a las "nueve reglas" e incluye explicaciones de cada regla y cómo aplicarla.
  • Las nueve reglas

    • Entender el sistema: es importante leer el manual, comprender los fundamentos y aprovechar bien las herramientas.
    • Provocar el fallo: es importante reproducir de nuevo el fallo y encontrar la causa de los bugs intermitentes.
    • Dejar de pensar y observar: primero hay que recopilar datos y no depender de suposiciones.
    • Divide y vencerás: resolver el problema acotándolo y usar patrones de prueba fáciles de identificar.
    • Cambiar una sola cosa a la vez: aislar los elementos clave y modificar las pruebas una por una.
    • Mantener un registro de auditoría: registrar lo que se hizo y los resultados, entendiendo que todos los detalles pueden ser importantes.
    • Revisar el enchufe: cuestionar lo que se da por sentado y poner a prueba las herramientas.
    • Obtener una nueva perspectiva: es importante conseguir nuevas ideas y escuchar la voz de la experiencia.
    • Si no se corrigió, no está arreglado: comprobar si el problema realmente se resolvió y corregir la causa raíz.
  • Ventajas y desventajas del libro

    • El libro se enfoca en los principios básicos de la depuración, lo que lo distingue de otros libros técnicos.
    • Incluye consejos prácticos sobre cómo manejar problemas intermitentes.
    • En el apéndice del libro hay enlaces a sitios web relacionados y para descargar un póster.
    • Como punto débil, no hay una lista resumida en una sola página con todas las reglas y subreglas, y faltan consejos concretos sobre tecnologías específicas.
  • Conclusión

    • Este libro es útil para aprender o repasar los principios fundamentales de la depuración, y ayuda tanto a principiantes como a expertos.
    • David A. Wheeler lo recomienda ampliamente y enfatiza la importancia de los principios básicos.

1 comentarios

 
GN⁺ 2025-01-14
Opiniones de Hacker News
  • La tentación de corregir código con bugs es grande, pero es más fácil romper código que funciona que arreglar código roto. Como en el ejemplo de las luces de Navidad, es efectivo empezar con un ejemplo mínimo que funcione para encontrar el problema

  • Al resolver problemas, lo importante es no entrar en pánico. Se necesita pensar con claridad, y un buen gerente brinda apoyo para que uno pueda concentrarse en resolver el problema

  • git bisect es útil para encontrar el commit que causó un problema entre varios commits. Es especialmente útil para localizar problemas rápidamente en bases de código grandes

  • Es importante entender el sistema, pero leer todos los manuales no es realista. Se necesita un enfoque práctico

  • Es importante editar el archivo correcto en la máquina correcta

  • Libros recomendados para desarrollar una mentalidad de resolución de problemas:

    • "The Martian" by Andy Weir
    • "Zen and the Art of Motorcycle Maintenance"
    • "The Three-Body Problem"
    • "To Engineer Is Human" by Henry Petroski
    • "Surely You're Joking, Mr. Feynman!"
  • Reglas adicionales:

    • "Sospecha que es culpa tuya". Primero hay que sospechar de los cambios en el código
    • "Si encuentras un bug, busca también otros problemas relacionados". Problemas del mismo tipo pueden aparecer en otros lugares
    • "Optimiza primero para el usuario y para el programador de mantenimiento"
  • Hay que agregar el bug a CI como una prueba para evitar regresiones. Hay que verificar que CI falle antes de la corrección y pase después

  • El trabajo no termina después de depurar. Para cada bug, hay que hacer tres preguntas:

    1. ¿Este error existe también en otro lugar?
    2. ¿Cuál es el siguiente bug escondido detrás de este bug?
    3. ¿Qué hay que hacer para prevenir este tipo de bug?
  • Es importante reproducir el problema con la configuración mínima posible. En la mayoría de los casos, así se puede encontrar el bug. Dividir el código por la mitad para encontrar exactamente qué parte está mal es efectivo