96 puntos por xguru 2024-03-04 | 7 comentarios | Compartir por WhatsApp

Desarrollo

  • Empezar en pequeño y luego escalar: al crear un sistema nuevo o agregar funciones a uno existente, comienza con una versión muy simple con casi ninguna funcionalidad necesaria y luego amplíala de forma gradual
  • Cambiar una cosa a la vez: cuando una prueba falla o una función no funciona durante el desarrollo, si solo hiciste un cambio a la vez, es mucho más fácil encontrar el problema
  • Agregar logging y manejo de errores desde temprano: al desarrollar un sistema nuevo, es útil incorporar logging y manejo de errores desde el inicio
  • Cada línea de código nueva debe ejecutarse al menos una vez: hay que probar antes de que la funcionalidad esté terminada
  • Probar las partes antes de probar el todo: las partes bien probadas te ahorran tiempo
  • Todo toma más tiempo de lo esperado: especialmente en programación, siempre toma más de lo que uno anticipa
  • Entender primero el código existente: antes de agregar una nueva función, hay que entender la solución actual. Leer código es una habilidad tan necesaria como escribirlo
  • Leer y ejecutar: hay dos maneras complementarias de entender código: leerlo y ejecutarlo

Resolución de problemas

  • Los bugs siempre existen: el enfoque de “hacerlo bien desde el principio” no es una buena estrategia
  • Resolver reportes de problemas: los desarrolladores deben dedicar tiempo a atender reportes de problemas de clientes y corregir bugs. Eso permite entender mucho mejor qué intenta hacer el cliente, cómo se usa el sistema, qué tan fácil o difícil es resolver problemas y qué tan bien está diseñado el sistema
  • Reproducir el problema: el primer paso para corregir un bug es reproducirlo. Luego, una vez aplicada la corrección, verificar que el problema haya desaparecido
  • Ver qué queda después de corregir los errores conocidos: cuando hay varios problemas, corrige primero todos los conocidos y luego revisa qué síntomas permanecen
  • Asumir que no hay coincidencias: al probar y resolver problemas, no confíes en las casualidades; investiga. “¿Cambiaste el valor de un temporizador y ahora el sistema se reinicia más seguido? No es coincidencia. ¿Se agregó una nueva función y ahora una función no relacionada está más lenta? No es coincidencia. Investígalo más”
  • Correlacionar con marcas de tiempo: al resolver problemas, aprovecha las marcas de tiempo de los eventos

Colaboración

  • La comunicación cara a cara tiene el mayor ancho de banda: al hablar de cómo resolver un problema, estar cara a cara es mejor que cualquier otro método (video, teléfono, chat, correo)
  • Rubber duck debugging: cuando te atoras con un problema, explicárselo a un colega puede hacerte ver la solución. Aunque la otra persona no diga nada, muchas veces en medio de la conversación te das cuenta de cuál es el problema. Suena a magia, pero funciona sorprendentemente seguido
  • Preguntar: al tratar de entender código, muchas veces leerlo y ejecutarlo es lo mejor. Pero si puedes preguntarle a alguien que lo conoce bien (probablemente el autor original), conviene usar también esa opción
  • Compartir el crédito: reconoce el mérito donde corresponde. En vez de decir “Intentamos...”, di “Marcus tuvo la idea de probar...”, si realmente fue así. Menciona activamente quién ayudó o contribuyó

Varios

  • Pruébalo: si no estás seguro de cómo funciona una característica del lenguaje, escribe un programa pequeño y haz una prueba
  • Dormir: cuando enfrentas un problema difícil, conviene dormir una noche antes de tomar una decisión
  • Cambio: no tengas miedo de cambiar de rol o de trabajo de vez en cuando. Trabajar con otras personas, en otros productos o en otras empresas es estimulante
  • Seguir aprendiendo: una de las mayores ventajas del desarrollo de software es que siempre hay espacio para aprender y saber más. Prueba distintos lenguajes de programación y herramientas, lee libros sobre desarrollo de software y toma cursos MOOC. Las pequeñas mejoras se acumulan y terminan generando una diferencia real en tu conocimiento y capacidades

7 comentarios

 
ohyecloudy 2024-03-07

Lo presencial tiene el ancho de banda más alto: es una gran forma de expresarlo.

 
askurios8 2024-03-06

+1.

 
bluekai17 2024-03-05

Depuración con pato de goma. Incluso al explicárselo a alguien que no sabe programar de verdad, terminas dándote cuenta de cuál es el problema.

 
bohblue23 2024-03-04

+1.

 
ep6tri 2024-03-04

Es oro puro.

 
tested 2024-03-04

+1 

 
bichi 2024-03-04

Wow, sí, todo suena muy bien. Es una lástima eso de que la interacción cara a cara tenga el mayor ancho de banda; ojalá la tecnología avanzara más.