• El paso después de Senior no es convertirte en Manager

    El otro día, un amigo que hoy en día trabaja como Senior Software Engineer se sinceró conmigo.

    A pesar de que en su trabajo le pagan bastante bien, y bajo todos los estándares, es un buen empleo, está extremadamente frustrado. “Ya estoy harto de hacer diario lo mismo.” Me platicó que su día a día se ha vuelto tan monótono, que hasta las ganas de programar se le están quitando.

    “No hay nada interesante para hacer. Puros forms, maquetado, y resolver bugs de renderizado.”

    Cuando le pregunté si había algo que pudiera hacer para cambiar su situación, su respuesta no me sorprendió en absoluto.

    “Sí, convertirme en manager. Pero me caga la gente.”

    Si ya no hay nada interesante por hacer como senior, ¿realmente tu única opción es convertirte en manager?

    Es común pensar que la única opción de crecimiento, después de haber sido Senior por un buen rato, es convertirte en Manager. Pero esto no es cierto. El menú está abierto, y en las circunstancias correctas, aun con tu seniority, puedes seguir creciendo tu carrera de desarrollador sin tener que convertirte en gerente de nadie.

    Lo único que tienes que hacer es estar consciente de lo que esto significa.

    Convertirte en manager no es tu única opción de crecimiento después de ser senior

    Algunas personas, cuando llegan a cierto nivel de seniority como desarrolladores, dejan de preocuparse por su carrera. Le dejan de prestar atención a su crecimiento profesional porque creen que el único paso que está delante es el convertirse en management. Algo que no quieren hacer.

    Opino que esto viene de la idea de que únicamente existe un camino de crecimiento profesional. Como mencioné en la última Sesión Grupal de Soft Skills para Devs, esto es completamente erróneo.

    Llegar a ser Senior no significa que no puedes seguir avanzando en tu carrera. Después de convertirte en experto en tu tecnología, tendrás más oportunidades de aportar valor de una manera mucho más amplia. Si no te quieres convertir en manager, después de ser Senior, te podrás convertir en Staff Engineer. Y si quieres continuar por la ruta de contribuidor individual, es decir, sin tener que manejar personas, puedes incluso llegar a convertirte en Principal Engineer.

    Mientras más seniority tienes, menos se mide tu impacto en líneas de código

    En la empresa correcta, una vez que eres Senior, convertirte en manager no es “lo que sigue”.

    Pero aquí hay algo que tienes que considerar: mientras más creces en tu carrera como contribuidor individual, menos se mide tu impacto en líneas de código. Habilitar a otros desarrolladores, aportar valor a otros equipos y áreas de negocio, dar visibilidad a problemas. Todas estas son competencias clave que vas a tener que desarrollar, sí o sí. Todas ellas, van a requerir que le pongas atención, de alguna u otra manera, a tus Soft Skills y a tus habilidades de colaboración con otras personas.

    Está bien que no te guste (o te cague) la gente. No todas las personas somos sociales por naturaleza.

    Pero la oportunidad de mejorar tu carrera ahí está. Si no quieres convertirte en manager, no tienes que hacerlo.

    Lo que sí tienes que hacer, es asegurarte de estar en la empresa correcta para seguir creciendo sin tener que tomar tareas administrativas. Y trabajar en tus Soft Skills.

  • Convertirte en manager no es un ascenso. Es un cambio de carrera.

    Si en tu empresa te quieren ascender a manager porque eres la persona con mejores capacidades técnicas de tu equipo: felicidades. Acabas de ser víctima del Peter Principle, que dice:

    “En una jerarquía, todo empleado tiende a ascender hasta su nivel de incompetencia.”

    ¿Hiciste un buen trabajo como Jr.? Felicidades, ahora eres Mid. ¿Seguiste haciendo un buen trabajo? Genial, ahora eres Sr. ¿Sigues siendo excelente en tu trabajo como desarrollador? Felicidades, ahora eres manager, y tienes responsabilidades para las que no estás preparado, y probablemente ni siquiera quieras tomar.

    Las habilidades fundamentales que te hicieron tener éxito como contribuidor individual, no son las mismas que te harán tener éxito como manager.

    Escribir “buen” código no se traduce en capacidad para analizar y resolver problemas organizacionales. Saber escoger el lenguaje de programación o framework adecuado para resolver un problema de arquitectura, no se traduce en saber entender las necesidades personales y aspiraciones profesionales de tu equipo, y alinearlas con las de la empresa.

    Probablemente, dentro de tu organización, el convertirte en manager venga con aumentos salariales o mayores prestaciones. Pero ten en cuenta que es un trabajo completamente diferente. Convertirte en manager no es un ascenso. Es un cambio de carrera completo. Puede que estés trabajando en tu misma industria; incluso hasta con el mismo equipo. Pero tus responsabilidades ahora son completamente diferentes.

    Antes de aceptar el “ascenso”, pregúntate: ¿sabes a qué te estás metiendo? ¿Estás consciente de las implicaciones del nuevo rol? Y más importante aún, ¿quieres hacerlo?

    No tener claras las respuestas a estas preguntas te pone en riesgo de sufrir burnout.

    Estarás jugando otro juego. Uno que no conoces. ¿Cómo vas a ganar?

  • Qué hacer si presencias acoso en tu trabajo o comunidad

    Acabo de participar en un entrenamiento para prevenir acoso y discriminación en equipos de trabajo.

    Me pareció que esta información debería compartirse, así que tomé nota. Estas son 6 cosas que puedes hacer si presencias acoso en tu espacio de trabajo, incluso si no eres gerente o tienes una posición de liderazgo.

    1. Interrumpe la conversación. Haz algún comentario que desvíe la conversación e interrumpa el acto de acoso. Puede ser una broma, un cambio drástico de tema, o simplemente hacer un ruido que cambie el foco del grupo.
    2. Pregúntale a la persona cómo se encuentre. Acércate a tocar base, y pregunta si hay algo que puedas hacer para ayudarle.
    3. Aborda a la persona cometiendo el acoso. Especialmente en ambientes donde no estamos sensibilizados en cuestiones de acoso, es importante dar visibilidad y resaltar acciones imprudentes y dañinas. Asume que la persona es ignorante de efecto de su comportamiento, y ofrece una perspectiva diferente: “Sé que tal vez no quisiste decir esto, pero este fue el efecto de tu comentario.”
    4. Apela a la amistad y empatía con la víctima. Hazle saber que tiene aliados, y que no está solo o sola. Reconoce que presenciaste lo que sucedió, y que estás ahí para apoyarle en lo que necesite, aunque sea simplemente moralmente.
    5. Da retroalimentación directa y clara en el momento. “Aquí no hacemos o decimos eso, bajo ninguna circunstancia.”
    6. Niégate a ser parte de la situación, y llévate a otros contigo. El mensaje más valioso que puedes mandar es que no te vas a para ser audiencia de este tipo de actos. En cuanto te percates de que alguien está siendo acosado, retírate de la situación y busca que otros te sigan. A veces lo único que falta para que el cambio suceda es tener alguien a quien seguir.

    Ponerle un alto al acoso es responsabilidad compartida

    “Acoso” puede significar cosas diferentes dependiendo el contexto. Apela a tus valores, o las reglas de convivencia del grupo, para aprender a identificarlos. Pero hay un tipo de acoso que es incuestionable: calumnias, bromas sexuales, transgresión del espacio personal, comentarios hirientes o fuera de lugar.

    Si observas cualquier tipo de acoso y no haces nada para resaltarlo y detenerlo, también eres parte del problema.

  • Soy Engineering Manager: esto aprendí en mis primeros años

    A finales de 2019 decidí cambiar la dirección de mi carrera profesional y probar suerte como Engineering Manager.

    Para este entonces, tenía un poco más de 10 años de experiencia desarrollando software como contribuidor individual.

    Hoy me encuentro iniciando mi tercer año como Engineering Manager, y creo que es una buena oportunidad para reflexionar sobre estos primeros dos años. Te quiero compartir algunos aprendizajes que he adquirido, con la intención de que te sean de utilidad si es que decides seguir un camino similar al mío.

    Pero antes…

    ¿Cómo me convertí en Engineering Manager?

    Llegué al puesto de Engineering Manager con un set de ideas bastante claras sobre el tipo de líder que quería ser, así como de las estrategias particulares que emplearía para lograrlo. El tema de liderazgo y la psicología organizacional siempre me han llamado la atención, y continuamente estoy aprendiendo y educándome en estas áreas.

    Durante mi tiempo como desarrollador, tuve la oportunidad de experimentar de primera mano los beneficios de tener líderes que genuinamente procuraban mi bienestar y mi crecimiento. También me tocó tener jefes, de los clásicos que nadie debería tener. Pude ver, gozar, y sufrir, gran parte del espectro de los tipos de líderes que existen.

    También es importante compartir que adquirí mi experiencia profesional, principalmente en un ambiente de startups de Estados Unidos y Europa. Esto jugó un papel considerable en mi transición, pues mis primeros dos años como Engineering Manager fueron trabajando para empresas Mexicanas. A pesar de que soy mexicano, habiendo trabajado principalmente con personas extranjeras, sentí el cambio cultural.

    Lo que aquí te voy a compartir no son verdades universales ni reglas. Tómalas como lo que son: interpretaciones de situaciones que viví a través de mis valores, experiencias propias y deseos personales.

    Tus decisiones, por más pequeñas que sean, tienen grandes implicaciones

    Como gerente de ingeniería, tus decisiones tienen la capacidad de influenciar desde la composición técnica de tu proyecto, hasta aspectos fundamentales del negocio. Pero, mayormente, tus decisiones afectan la carrera profesional de las personas a tu cargo.

    Cualquier decisión que tomes, debes de factorizar el impacto a mediano y largo plazo que esta va a tener en la carrera de las personas con las que trabajas.

    Sí, el producto es importante. Pero sin un equipo sano, todo pasa a segundo plano.

    Tu trabajo como Engineering Manager es habilitar a tu equipo

    Es demasiado sencillo llegar a un puesto de Engineering Manager pensando que lo que se espera de ti es que asignes tareas, y te asegures de que se cumplan a tiempo. Y hay personas que podrían argumentar que sí, ese es el trabajo. Yo creo que es un poco más complicado que eso.

    El Engineering Manager, a diferencia de un Project Manager, se encarga de entender las necesidades y visión del negocio. Además, asimila las fortalezas, debilidades, y deseos de su equipo. El reto es alinear estos dos mundos de una manera coherente, sostenible y humana.

    Parte de tus responsabilidades es procurar que los proyectos salgan a tiempo y en forma. Pero no asegurarte. ¿Qué vas a hacer, obligar a tu equipo a que trabaje horas extras? ¿Preguntarles “cómo vamos” cada 3 horas? ¿Intentar comprar su felicidad con pizzas y refresco? Todos hemos tenido (o por lo menos escuchado de) gerentes que usan esas tácticas. Personas para las cuales lo más importante es la fecha, el cliente y su reputación, no su equipo.

    Reflexiona: ¿te gustaría (volver a) trabajar con una persona así?

    Por eso digo que el Engineering Manager procura que las cosas salgan bien. Entiende las necesidades de su equipo (las personas), tiene conciencia de un balance adecuado entre vida y trabajo, y además reconoce y asimila las capacidades de cada uno de los miembros de su equipo. Después toma toda esta información, y crea estrategias, procesos y formas de trabajo que produzcan resultados fiables, en tiempo y forma. En este video exploro un poco más este tema.

    Tienes que buscar un balance sostenible

    La analogía que me gusta utilizar para este punto es la de las mascarillas de oxígeno en los aviones. Antes de despegar, el personal del avión hace las demostraciones de seguridad pertinentes, y comentan al respecto: “en caso de despresurización, antes de intentar ayudar a otras personas, asegúrese de tener la mascarilla bien puesta usted”.

    El mismo consejo aplica para alguien en el rol de Engineering Manager.

    Como alguien que desarrolla software (y más si vienes de la cultura Latinoamericana), probablemente te acostumbraste a glorificar el trabajo duro y pensar que estar ocupado es un símbolo de que estás haciendo algo importante. Cuando tienes ese bagaje cultural y de repente te encuentras en un rol de gerencia, naturalmente vas a buscar formas de mantenerte ocupado.

    Pero como Engineering Manager, tienes que estar consciente de que tu rol es servir a tu equipo. Ayudarles a desbloquearse y a tomar mejores decisiones. Estar ahí cuando te necesiten. Y si no buscas un ritmo sostenible en tu rol, tu equipo lo va a resentir.

    Tener un Engineering Manager quemado es como estar conectado a wifi que no tiene internet: sería menos frustrante no tenerlo en absoluto.

    Lo que para ti pudiera parecer ayuda, para tu equipo se convierte en un perjuicio

    No solamente importan las decisiones que tomas, sino cómo las tomas. El equipo que manejas aprende de tu estilo de resolución de problemas. Si no eres cuidadoso, precavido, diligente, transparente y disciplinado, le estás enseñando a tu equipo que está bien tomar decisiones “al ahí se va”.

    Al inicio de mi carrera como Engineering Manager tenía lo anterior bien claro. A pesar de esto, no pude evitar caer (algunas veces) en la comodidad de tomar decisiones por mi cuenta y simplemente asignar tickets a mis equipos. No fue sino hasta después de un par de iteraciones, que me di cuenta de que la forma de trabajo que estaba impulsando no era sostenible. No solamente me estaba creando más trabajo, sino que además estaba afectando directamente el crecimiento de mis equipos.

    Fue ahí cuando “hizo clic” la idea de que para ser un buen Engineering Manager, tenía que preocuparme más por habilitar a otras personas, que por hacer el trabajo yo mismo.

    El feedback loop es muy largo

    Tus decisiones deberían de estar basadas en el bienestar, sostenibilidad y productividad de tu equipo. Y los resultados de los cambios que implementes para fomentar una cultura de trabajo positiva tardan bastante ser aparentes.

    Si tomas una decisión en función de prevenir el burnout de tu equipo, por ejemplo, el rango de tiempo para darte cuenta de si la estrategia está funcionando o no, podría ser de meses. No solo porque los cambios organizacionales son complejos y tardados, sino porque es muy difícil tomar una medición discreta del bienestar de una persona. Aunque tengas 1on1s recurrentes con cada miembro de tu equipo, las variaciones de estado de ánimo de una semana a otra pueden ser bastante grandes — y no siempre gracias a factores que tú puedas controlar.

    Es por eso que como Engineering Manager tienes que enfocarte en las tendencias que ves en el equipo, no en datos discretos. Todos tenemos días malos, y si ves que alguien no la está pasando tan bien en tu equipo, no necesariamente tienes que hacer algo de manera inmediata (a menos que la situación lo amerite). Pero cuando ves que alguien ya lleva varias semanas pasándola mal, es momento de cambiar algo.

    Cambiando el paradigma

    Creo que hoy, más que nunca, es importante que humanicemos nuestro trabajo, y dejemos de glorificar las horas extras y el sacrificio del bienestar mental y emocional de las personas. Y considero que el Engineering Manager tiene un papel fundamental en esta transición.

    Convertirme en Engineering Manager ha sido un proceso interesante. He aprendido mucho sobre mí y mis sesgos. Me he enfrentado a mi propio ego, y me ha ayudado a entender que el mundo en el que vivimos tiene muchos más matices de los que pensaba.

    ¿He tenido mis momentos difíciles? Sí. ¿He cometido errores? También.

    Pero también he aprendido, y he crecido. Y si reflexiono un poco sobre estos primeros dos años en esta carrera, siendo honesto, considero que lo estoy disfrutando más de lo que disfruté mis primeros dos años como desarrollador.

    Algunas reflexiones extras:

    • No todas las empresas necesitan Engineering Managers. Hay algunas empresas que simplemente necesitan un Project Manager con nociones de ingeniería de software, pero no un Engineering Manager. Asegúrate de que sabes qué es lo que realmente necesitan.
    • Ser Manager significa algo diferente para cada empresa. No te quedes simplemente con el título, indaga un poco más en cuáles son realmente las tareas y expectativas del puesto.
    • Ser Manager no es para todos. Muchas personas creen que la progresión natural de una carrera en esta industria apunta hacia puestos de gerencia, pero no es así. Ser bueno escribiendo software desafortunadamente no te hace buen manager.
    • Para ser Manager, necesitas renunciar a tu identidad como desarrollador. Ve este video para saber más.
  • ¿Cómo le hacen los que no pueden usar Git en su trabajo?

    Un usuario de Reddit escribe sobre su experiencia trabajando en un lugar donde ni siquiera han escuchado hablar de Git:

    Esta mañana, gasté 3 horas reescribiendo lo que hice ayer, porque mi compañero lo eliminó accidentalmente en la carpeta de Windows Server que usamos para desarrollar. No nos permiten utilizar control de versiones, y de hecho, muchos de mis compañeros de trabajo nunca han escuchado de Git. ¿Alguno de ustedes ha trabajado en algún lugar así y encontrado una manera de sobrellevarlo?

    Obviamente, las respuestas recomendándole que huyera de ahí lo más rápido posible no se hicieron esperar.

    Hace casi 22 años, Joel Spolsky publicó en su blog su popular checklist para determinar si un equipo de desarrollo de software es bueno o no: 12 Pasos Hacia Mejor Código. La primera pregunta es: ¿Tu equipo usa manejador de versiones?

    Aunque es fácil caer en la tentación de burlarse del creador del hilo en Reddit, me gustaría reflexionar sobre su situación.

    Recordando que muchas personas crecimos con la idealización del trabajo duro, no es difícil ver cómo esa forma de pensar podría llevarnos a la progresión lógica de que cualquier cosa que le haga al programador la vida más fácil significaría que entonces la empresa no lo está aprovechando al máximo. Estoy seguro de que podrás identificar alguna persona en tu vida (probablemente alguien mayor, o “de la vieja guardia”) que defendería esta retórica. “Los programadores de verdad compilan su propio IDE.” Esto es lo que pasa cuando personas con esta mentalidad dirigen empresas.

    (Dándoles el beneficio de la duda: es probable que esta persona esté trabajando en una industria donde únicamente se pueden utilizar tecnologías aprobadas y validadas por algún tipo de organismo o estándar. En este caso, entendería que, por regulación, no estuviera permitido que usaran tecnologías de código abierto.)

    Por otro lado, es probable que el autor original del hilo simplemente se encuentre rodeado de gente que ignora la existencia de los controladores de versiones, así como sus beneficios. Un par de veces en mi vida me he encontrado con personas que encuentran abrumadora la idea de tener que aprender otra tecnología (Git) además del lenguaje de programación en el que están especializándose. Así que simplemente hacen lo que pueden con lo que saben: ponen su código en Dropbox, Google Drive, y listo. No es hasta que salen problemas que el valor de usar controladores de versiones se vuelve aparente.

    La parte clave de su mensaje es esta:

    No nos permiten utilizar control de versiones, y de hecho, muchos de mis compañeros de trabajo nunca han escuchado de Git.

    Apostaría que la persona que escribió esto encaja en el siguiente perfil: alguien joven, al inicio de su carrera en software, con grandes aspiraciones, en su primer trabajo formal. Probablemente, la empresa sea de una industria vieja (finanzas, construcción, legales, donde las cosas se hacen por regulación) que se está intentando renovar, y lo están haciendo contratando programadores, pero sin crear una cultura de desarrollo de software.

    No conozco al autor del hilo, pero no me sorprendería si tuviera una carrera próspera en su futuro. Después de todo, está demostrando una capacidad que (desafortunadamente) no todos tienen: la de cuestionar el statu quo. No se está quejando, está haciendo una pregunta para educarse y crecer. Está buscando datos, consejos y soluciones.

    Algunas lecciones que me gustaría que todos nos lleváramos de esta experiencia:

    1. No en todas las empresas se puede desarrollar software. Ve esta porción de una de mis charlas para entender más sobre esto.
    2. Algunas empresas solamente quieren programadores, no desarrolladores.
    3. Desarrollar software es mucho más que escribir código.
    4. Se vale preguntar, cuestionar y decidir si la situación en la que estás es en la que quieres estar.

Ayudo a personas que trabajan con software a mejorar sus carreras profesionales.

Los miembros tienen acceso a Pathways, pueden comentar en las publicaciones, interactuar con la comunidad, y muchos otros beneficios. Conoce más.

Agrégame a tu lector RSS, o suscríbete a mi newsletter para recibir los nuevos artículos que publique.