Por Mario Lobo
Llega un momento en la evolución profesional de los desarrolladores de software en el que se encuentran en la encrucijada de tener que elegir la forma en la que seguir creciendo. Mayoritariamente hay 2 roles que surgen como opciones de evolución, Technical Lead y Staff Engineer. Ambos representan un incremento de seniority y liderazgo pero con un enfoque y actividades diarias que pueden ser muy diferentes.
Antes de entrar a evaluar similitudes y diferencias entre ambos roles, creo que ayudará a entenderlos mejor si empezamos por definirlos:
- Technical Lead: Profesional que inspira, guía y motiva a un equipo de desarrolladores en proyectos de software, enfocándose en la parte técnica del desarrollo y la implementación de soluciones que mejoran la vida de quienes la reciben.
- Staff Engineer: “Experto técnico” que asegura que las soluciones sean sostenibles y efectivas. Influyen en los equipos de desarrollo a través de su experiencia y conocimientos técnicos, centrándose en resolver problemas técnicos complejos y en garantizar la calidad técnica de los sistemas.
Similitudes
A pesar de ser 2 roles con el foco de actuación bien diferenciado, ambos tienen aspectos en común:
- Profundo conocimiento técnico: Son los referentes a los que acudir cuando surgen dificultades a la hora de plantear soluciones técnicas.
- Mentoría: Ambos roles tienen entre sus funciones ayudar a otros ingenieros a crecer y mejorar.
- Resolución de problemas complejos: Los 2 roles representan a aquellas personas a las que recurrir cuando tenemos retos técnicos más complicados.
- Comunicación Efectiva: Tanto TLs como Staff Engineers, deben ser capaces de transmitir ideas técnicas complejas de forma clara y concisa.
- Ownership y Responsabilidad: Independientemente del rol, ambos se hacen cargo de sus decisiones y del impacto que éstas pueden tener en el equipo, el producto o la empresa.
Diferencias
En este punto es donde realmente empezamos a ver que, según el rol que desempeñen, ponen el foco de su liderazgo en un lugar u otro y que el alcance de su impacto en la organización no es el mismo.
- Foco principal: Mientras el Technical Lead se centra en un liderazgo de equipo y la entrega de los proyectos, el Staff Engineer se centra en un liderazgo técnico más transversal en la organización.
- Ámbito de impacto: El Technical Lead tiene, principalmente, impacto dentro de su equipo. El Staff Engineer abarca varios equipos, un área tecnológica o, incluso, toda la organización.
- Gestión de personas: Una de las mayores diferencias entre ambos roles. El Technical Lead realiza una gestión directa de las personas del equipo (1:1s, desarrollo profesional, feedback). Si en la organización existe el rol de Engineer Manager, gran parte de esta gestión la abordará ese EM. El rol de Staff Engineer no implica gestión de personas sino que ejerce su influencia a través de su conocimiento técnico.
- Tipo de liderazgo: El liderazgo que ejerce un Technical Lead es de ejecución de proyecto, cohesión de equipo y facilitación, mientras que un Staff Engineer ejerce su liderazgo desde una perspectiva técnica, estratégica, definición de estándares y resolución de problemas de alta complejidad.
- Actividades del día a día:
- Technical Lead: Reuniones de equipo, planificación de sprints, desbloqueo de impedimentos, revisiones de código, asegurar la calidad de las entregas del equipo…
- Staff Engineer: Definición y diseño de arquitecturas transversales, investigación de nuevas tecnologías, mentoría técnica, redacción de documentos técnicos.
Pongamos un ejemplo:
El alcance del objetivo del sprint de nuestro equipo está en peligro porque un evento es emitido con éxito en Kafka, pero el proceso destinado a consumirlo parece no recibirlo y, por lo tanto, no ejecuta la acción correspondiente.
El equipo de desarrollo acudirá en un primer lugar al Technical Lead, este realizará un diagnóstico de la situación actual, incluso podría participar en una sesión de pair-programing con uno de los desarrolladores para intentar resolver el bug, es decir, el Technical Lead «se arremanga» y entra al barro con el equipo para solucionar el problema específico que está frenando la entrega.
En el caso que el Technical Lead no consiga resolverlo y sospeche que puede tratarse de un tema relacionado con la arquitectura o con el patrón de publicación/suscripción empleado, escalará la problemática al Staff Engineer que, por ejemplo y entre otras acciones, revisará la arquitectura, el patrón de publicación/suscripción que el equipo está utilizando o analizará el impacto que un posible cambio puede tener en otros equipos.
En resumen:
- El Technical Lead debe actuar cuando su equipo está atascado en una tarea del sprint
- El Staff Engineer actuará cuando se necesite una solución a un problema que afecte al trabajo o forma de hacer las cosas de varios equipos.
Skills a Potenciar: Afilando tus Herramientas
Dependiendo del camino que te resulte más atractivo, debes enfocarte en desarrollar ciertas habilidades:
Para el Futuro Technical Lead (TL)
Si aquello que te motiva es liderar un equipo en su entrega de valor, deber centrarte en adquirir o mejorar tus habilidades en:
- Liderazgo de Equipo: La habilidad de inspirar, motivar, y guiar a tu equipo. Fomentar un ambiente de confianza, colaboración y crecimiento.
- Gestión de Proyectos: Como TL necesitarás habilidades para planificar, seguir el progreso, gestionar riesgos a nivel de equipo y asegurar las entregas.(Ojo, eso no implica que seas Project Manager)
- Comunicación y Empatía: Habilidades fundamentales para entender a tu equipo, dar y recibir feedback constructivo, y resolver conflictos de manera efectiva.
- Delegación Efectiva: Saber cuándo y cómo delegar tareas, confiando en las capacidades de tu equipo.
- Toma de Decisiones: Debes ser ágil a la hora de tomar decisiones que desbloqueen al equipo y mantengan el flujo de trabajo.
- Mentoría y Coaching: Como buen líder, uno de tus objetivos debe ser que los miembros del equipo desarrollen sus habilidades y avancen en sus carreras.
Para el Futuro Staff Engineer
Si lo que te gusta realmente es la tecnología y resolver los problemas técnicos desafiantes, enfócate en:
- Visión Técnica Estratégica: La capacidad de ver los retos técnicos a nivel general, anticipar desafíos tecnológicos futuros y definir la dirección técnica a largo plazo.
- Diseño de Sistemas Transversales: Pensar en arquitecturas robustas, escalables, mantenibles y eficientes que pueden abarcar múltiples servicios o incluso toda la organización.
- Influencia sin Autoridad Directa: Un Staff Engineer debe tener la habilidad de persuadir y alinear a otros equipos e ingenieros senior sobre decisiones técnicas complejas, basándose en su experiencia y datos.
- Resolución de Problemas Complejos: Enfrentarte a desafíos donde no hay una solución clara, que requieren investigación profunda, experimentación y pensamiento innovador.
- Comunicación Técnica Avanzada: Habilidad para escribir documentos de diseño técnico detallados y presentar arquitecturas complejas consiguiendo ser comprendido por audiencias con diferentes niveles de conocimiento técnico.
- Mentoría Técnica: Como Staff Engineer, serás el referente a nivel técnico al que otros ingenieros acudirán para resolver dudas, o plantear mejoras técnicas dentro de los sistemas de la organización.
Conclusión: Cada uno debe crecer en aquello que más le motive
Sinceramente, creo que no hay un rol «mejor» que otro. Tanto el Technical Lead como el Staff Engineer son roles valiosos en las organizaciones con posibilidades de crecimiento. La clave está en tener claro qué es aquello que te motiva y desarrollar tus habilidades para conseguir desarrollar tu labor con éxito.
Antes de acabar, os dejo un pequeño cuestionario que, tal vez, te ayude a descubrir cuál es tu verdadera vocación.
¿Qué tipo de impacto disfrutas más generando?
1. ¿Te llena ver crecer y cohesionar a un equipo para entregar un proyecto con éxito?
2. ¿Te motiva resolver un problema técnico increíblemente complejo que afecta a múltiples partes de la organización o definir la arquitectura de un nuevo sistema crítico?
¿Cómo prefieres ejercer tu liderazgo?
1. ¿Te ves gestionando directamente a personas, ayudándoles en su día a día, en sus objetivos de carrera y facilitando su trabajo?
2. ¿Prefieres influir a través de tus ideas técnicas, tus diseños, tus propuestas y tu capacidad para resolver los problemas más difíciles, sin la responsabilidad directa de la gestión de personas?
¿Dónde quieres enfocar tu energía y tu tiempo primordialmente?
1. ¿En la dinámica del equipo, en la planificación de entregas, en desbloquear impedimentos y en asegurar la calidad del trabajo del equipo?
2. ¿En la investigación profunda, en el diseño de arquitecturas complejas, en la definición de estándares técnicos y en la mentoría técnica especializada a través de la organización?
¿Qué tipo de problemas te resultan más estimulantes?
1. ¿Aquellos relacionados con la eficiencia del equipo, la colaboración, la mejora de procesos y la entrega de valor a corto y medio plazo?
2. ¿Los desafíos técnicos abstractos, a nivel general, a más largo plazo y que requieren soluciones innovadoras y/o estratégicas?
¿Qué aspecto de la «seniority» te atrae más profundamente?
1. ¿La responsabilidad de guiar, desarrollar y empoderar a un grupo de personas hacia un objetivo común, construyendo un equipo de alto rendimiento?
2. ¿La oportunidad de ser un faro técnico con un impacto amplio, resolviendo los retos más complicados, definiendo la hoja de ruta tecnológica y elevando la excelencia técnica general?
Si mayoritariamente has respondido la opción a, entonces Technical Lead es tu rol, si, por el contrario, has elegido la opción b, eres un Staff Engineer en potencia. ¿Cuál ha sido tu resultado? ¡Comparte tu opinión en los comentarios!