Ir al contenido principal

¿Qué Es un Dev Senior?

Una reflexión sobre el cambio de mentalidad que distingue a los desarrolladores senior: mantener la calma, ser metódico y responsable durante incidentes en producción.

3 min read

A menudo es difícil medir tu propio progreso, pero hace poco tuve una experiencia que me dio una perspectiva que creo vale la pena anotar y compartir.

Durante los últimos seis meses he estado contratado en un pequeño equipo de desarrollo que gestiona un subconjunto de páginas para una marca minorista masiva. Es un negocio enorme, conocido globalmente, y aunque nuestra parte es pequeña, nuestro equipo tiene responsabilidad de extremo a extremo—tenemos nuestros propios proyectos de Google Cloud, instancias, bases de datos y demás que gestionamos, además del código frontend.

El proyecto lleva funcionando unos dos años, con un desarrollador principal desde el principio. Naturalmente, recurrimos a él para cualquier conocimiento específico del proyecto. Hace aproximadamente un mes, se fue de vacaciones, y tuvimos un fallo de producción sin precedentes en menos de 48 horas.

Los detalles de la caída son irrelevantes, aunque destacaré que no fue causada por nuestro equipo. Lo que importa es cómo nosotros—los dos desarrolladores muy-claramente-no-de-vacaciones—lo manejamos.

Aunque llevo jugueteando con código para sitios personales y por curiosidad durante veinte años, solo llevo trabajando a tiempo completo, oficialmente, como desarrollador unos tres años. Eso es mucho más tiempo que el otro desarrollador que estaba conmigo para enfrentar la crisis.

La explicación no era obvia mirando los errores o los logs, y mi colega esencialmente se derrumbó: (parafraseando, ya que todo esto fue en español)

"ay dios ay dios ¿qué vamos a hacer? ¿está caído en todos lados? ¿qué ha pasado? ¿por qué tenía que pasar esto ahora? ay dios ay dios ay dios"

Yo no entré en pánico. Miré el error. Empecé en el punto de entrada de la aplicación, y fui siguiendo el flujo lógico del montaje de la app, la obtención de datos, etc., hasta que encontré la fuente del problema. El equipo del CMS había cambiado la estructura de los datos que enviaban, y nuestra app era demasiado frágil en su diseño (ahí hay una lección) para fallar graciosamente o siquiera proporcionar retroalimentación útil.

Un año antes, mi reacción habría sido más parecida a la de mi colega. Más allá de la sintaxis o las estructuras de datos, una gran parte de programar es el juego mental—no desesperarse cuando no ves el camino hacia adelante. Muchos aspirantes a programadores luchan con un problema, se sienten estúpidos, y asumen que la programación no es para ellos; sin darse cuenta de que esta es una experiencia diaria para muchos (¿la mayoría?) de los desarrolladores. Si algún día dejo de tenerla, significará que estoy en piloto automático en lugar de asumir trabajo desafiante.

Siempre hay una razón por la que el código está haciendo lo que está haciendo. Las cosas se pueden resolver, si eres metódico y prestas mucha atención a lo que hay (en lugar de a lo que hay en tu modelo mental de lo que hay). Mi fe en esta verdad, y en mi capacidad para eventualmente encontrar la fuente del problema, y por tanto una solución, me impidió entrar en pánico.

Al subir el parche a producción, me di cuenta de que este era probablemente el momento más cercano a un hito de iniciación que iba a conseguir. No me describiría como un desarrollador senior, pero esta capacidad de mantener la calma y pensar un problema de principio a fin es crucial para cualquiera que desee serlo. Me estoy acercando.