Los hábitos que separan diez minutos de un día entero
Las doce costumbres que hacen que una misma persona con las mismas herramientas resuelva en minutos lo que a otra le cuesta jornadas, y cómo adquirirlas.
Dos ingenieros con la misma experiencia, las mismas herramientas y el mismo problema pueden tardar diez minutos y ocho horas respectivamente, y la diferencia casi nunca está en el conocimiento. Está en un conjunto pequeño de costumbres que se aplican antes de que el problema aparezca, durante la sesión y después de resolverlo. Ninguna es difícil, todas son adquiribles deliberadamente, y esta es la última lección del track porque es la única cuyo efecto se nota en todos los problemas y no en uno.
- Adoptar las cuatro costumbres de preparación que actúan antes de que haya un problema.
- Aplicar las cinco costumbres de sesión que evitan perder el hilo.
- Cerrar cada incidente con las tres costumbres posteriores.
- Diseñar un plan de adquisición realista para las que te falten.
Las doce costumbres
Antes: las cuatro de preparación
Uno: el entorno preparado. Las DevTools configuradas de una vez y para siempre. La lista de ignorados con tus dependencias, la conservación del registro activada, las columnas útiles añadidas al panel de red, la ralentización de CPU puesta por defecto, la caché desactivada mientras el panel esté abierto. Todo eso está en los ajustes que importan, cuesta veinte minutos una vez, y cambia todas las sesiones futuras.
Dos: el código instrumentado. Clases con nombre en lugar de literales anónimos, funciones con nombre en lugar de flechas anónimas en los sitios que aparecen en pilas, medidas de rendimiento con vocabulario de tu producto, atributos de prueba en los elementos interactivos, señales de estado en el marcado. Cada una de esas cosas cuesta minutos al escribir el código y ahorra horas al depurarlo, y todas benefician además a otras cosas: pruebas, accesibilidad, informes de error.
Tres: la caja de herramientas propia. Los fragmentos que usas a menudo, guardados como snippets, ejecutables desde el menú de comandos. La colección concreta está en diseñar tu caja de herramientas, y el criterio es simple: si has escrito lo mismo en la consola tres veces, guárdalo.
Cuatro: la referencia calibrada. Saber qué aspecto tiene tu aplicación cuando va bien. Un perfil de rendimiento guardado, una sesión de memoria sobre un ciclo sano, el número de peticiones de una carga normal, el tamaño del paquete de la semana pasada. Sin referencia, cada medición hay que interpretarla; con referencia, cada medición es un delta.
Durante: las cinco de sesión
Cinco: escribir el síntoma antes de tocar nada. Sin palabras causales. Es la costumbre que más rendimiento da de las nueve y la que menos gente tiene.
Seis: comprobaciones baratas primero, siempre en el mismo orden. Incógnito, consola, red, incidencias, condiciones. Dos minutos, y una fracción muy grande de los problemas queda acotada a una familia antes de haber leído una línea de código.
Siete: una variable cada vez. Un cambio, una comprobación, una conclusión. Dos cambios simultáneos producen una observación que no significa nada.
Ocho: anotar lo descartado. En un fichero, en un comentario, en el cuaderno de la consola. Da igual el soporte; lo que importa es que a las dos horas no dependas de la memoria.
Nueve: volver al estado limpio periódicamente. Cada vez que la página lleve más de unas cuantas modificaciones encima, recarga en limpio y comprueba que el síntoma sigue siendo el mismo.
Después: las tres de cierre
Diez: explicar el mecanismo antes de dar por cerrado. Escribir una frase que diga por qué ese cambio produce ese síntoma. Si no puedes escribirla, no lo has arreglado: lo has tapado.
Once: convertir el bug en una prueba. El caso mínimo que construiste durante la reducción ya es casi una prueba de regresión; formalizarlo cuesta poco y garantiza que no vuelva.
Doce: preguntar de dónde salió la clase de bug. No este bug concreto, sino su categoría. ¿Es una fuga por un escucha que nadie quitó? Entonces la pregunta es cuántos sitios más tienen el mismo patrón, y si hay una forma estructural de que deje de ser posible. Ese salto de lo particular a lo estructural es lo que hace que un equipo mejore en lugar de arreglar los mismos bugs con nombres distintos durante años.
Si tuvieras que adoptar solo tres de las doce, elige la primera, la quinta y la duodécima: el entorno preparado porque actúa sobre todas las sesiones sin coste marginal, escribir el síntoma porque resuelve una parte del problema por sí sola, y la pregunta estructural porque es la única que reduce el número de bugs futuros en vez de arreglar el presente.
Cómo se adquieren
Leer una lista de hábitos no produce hábitos. Cuatro mecanismos que sí funcionan, en orden de eficacia.
Reducir la fricción hasta que la costumbre sea el camino más fácil. No es cuestión de disciplina: si el fragmento está guardado como snippet y se ejecuta escribiendo tres letras en el menú de comandos, lo usarás; si hay que buscarlo en un fichero y pegarlo, no. La mayor parte del trabajo de adquirir un hábito consiste en montar el atajo, no en acordarse.
Una sola costumbre a la vez, durante dos semanas. Intentar cambiar cinco cosas de golpe no funciona. Elige una, aplícala conscientemente durante dos semanas hasta que sea automática, y pasa a la siguiente. Doce costumbres son seis meses, y es un plazo realista.
Un disparador explícito. Cada costumbre necesita un momento concreto que la active. “Al empezar a investigar cualquier bug, abrir el fichero de notas y escribir el síntoma” es un disparador; “ser más metódico” no lo es.
Depurar con otra persona de vez en cuando. Es el mecanismo de transmisión más eficaz que existe para esto, porque los hábitos de depuración son observables y no explicables. Media hora mirando trabajar a alguien más rápido enseña más que cualquier texto, incluido este, y el efecto es simétrico: quien explica lo que está haciendo descubre sus propios saltos.
Lo que queda cuando las herramientas cambien
Este track ha recorrido paneles que van a cambiar. Las pestañas se moverán, los ajustes cambiarán de sitio, aparecerán funciones nuevas y desaparecerán otras. Por eso todo lo que has leído está descrito por su función y no por su ubicación, y por eso los atajos van siempre en pareja y las rutas se buscan por nombre en el menú de comandos.
Lo que no va a cambiar es más pequeño de lo que parece y cabe en unas pocas frases.
Observar antes de intervenir, porque cada intervención destruye evidencia.
Acotar antes de medir, porque una medición sobre un espacio grande es ilegible.
Medir antes de arreglar, porque la intuición sobre rendimiento se equivoca sistemáticamente.
Bisecar siempre que haya una prueba fiable, porque converge sin necesidad de entender.
Explicar antes de cerrar, porque un síntoma que desaparece no es un problema resuelto.
Y preguntar por la categoría, porque arreglar un bug es trabajo y eliminar una clase de bug es progreso.
Seis frases. Todo lo demás de este track son instrumentos para aplicarlas.
Si se cronometran muchas sesiones de depuración y se compara la rápida con la lenta, aparece un patrón que sorprende: la divergencia no se produce a lo largo de la sesión, se produce al principio. A los noventa segundos, quien va a tardar diez minutos ya ha acotado el problema a una familia y ha abierto el panel correcto; quien va a tardar todo el día ha abierto el panel que le resulta más cómodo y ha empezado a mirar. A partir de ahí, la persona rápida trabaja sobre un espacio pequeño y cada comprobación le da información, y la lenta trabaja sobre un espacio enorme donde casi nada de lo que mira significa nada. El resto de la jornada es una consecuencia de esos noventa segundos. Eso reorienta por completo dónde conviene invertir esfuerzo en mejorar: no en aprender más funciones de los paneles, sino en la calidad de la primera decisión. Y esa decisión depende de tres cosas muy concretas, todas ellas entrenables. La primera es haber convertido el síntoma en una observación, porque una observación se clasifica y una interpretación no. La segunda es tener un mapa que asigne familias de síntoma a paneles, para que la elección sea una consulta y no una preferencia. Y la tercera, la menos evidente, es la disposición a no hacer nada durante esos noventa segundos: la presión por empezar a actuar es enorme, especialmente si hay alguien esperando, y actuar rápido sobre un problema mal encuadrado es la forma más eficiente de perder un día. Hay una frase que resume el track entero y que merece quedarse: las herramientas no encuentran bugs, las personas encuentran bugs; las herramientas solo hacen visible lo que la persona ha decidido mirar. Todo lo que has aprendido aquí sirve para que esa decisión sea buena. Si dentro de dos años no recuerdas ningún atajo ni ningún nombre de panel pero sigues convirtiendo síntomas en observaciones antes de abrir nada, este track habrá servido para lo que tenía que servir.
Coge el último bug difícil que resolviste, uno que te costara más de dos horas. Reconstruye la sesión honestamente: qué hiciste en los primeros noventa segundos, qué panel abriste primero y por qué, cuánto tardaste en descartar la primera familia de causas, y en qué momento tuviste la hipótesis que resultó ser correcta. Después responde a dos preguntas. Con la tabla de síntoma, panel y acción delante, ¿qué fila habrías buscado? Y de las doce costumbres de esta lección, ¿cuál te habría ahorrado más tiempo en ese caso concreto? Empieza por esa.