Ultimamente veo discusiones sobre estos términos en twitter por lo que voy a hacer una entrada corta de como lo veo yo.
- Staff Engineer: Es un ingeniero que dedica al menos una parte de su tiempo a temas transversales, pudiendo ser a full time, o incluso por proyectos. Es un referente técnico
- Principal: Un staff engineer con esteroides. Este si tendrá dedicación completa al role.
- Tech Lead: Por la semántica podríamos considerar que tanto el staff engineer como el principal podrían ser tech leads (referentes técnicos), pero esa no es la semántica más extendida. Yo al menos como lo he visto/vivido, es el líder técnico de un squad. Eso si, dependiendo de la empresa hará unas cosas u otras. IMO si usa este nombre, no debería tener mucha carga de gestión. Debe programar. Debe ser el guardián de la excelencia técnica y de las buenas prácticas del squad.
- Team Lead: Creo que muchas veces que se usa Tech Lead, debiera usarse Team Lead. Digamos que sería como un tech lead, pero con más responsabilidades de gestión. Cuanta más alta sea la gestión más sufrirá el tiempo que puedas dedicar a programar. Puede ser fácilmente el chico para todo.
- Engineering Manager: Para mi, es un role que solo tiene sentido cuando tienes bajo tu paraguas más de un squad. Me sorprende ver a gente defenderlo para un squad. Yo desde luego no lo veo. Si ya lo que hace un EM depende mucho de la organización, no lo liemos mas… IMO lo suyo es ir metiendo este role poco a poco. Según vas creciendo, pues metes un VPE, y cuando el VPE no llegue, pues empiezas a meter EM para descargarlo. He vivido el empezar a contratar EMs a lo loco, y la experiencia IMO fue un desastre.