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
Lo presencial tiene el ancho de banda más alto: es una gran forma de expresarlo.
+1.
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.
+1.
Es oro puro.
+1
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.