Exploraremos el camino para convertirse en Ingeniero de Software Senior. Si bien las habilidades técnicas siguen siendo la base, una transición exitosa requiere un cambio de perspectiva, un enfoque en las habilidades blandas y un compromiso con el crecimiento continuo, esto es lo que va a marcar la diferencia en tu seniority.
Una de las diferencias notables cuando avances de seniority es que dejaras de empezar en partes aisladas que conectas de alguna forma y empezarás a ver las cosas mucho más como un sistema, entender el panorama general y cómo tu trabajo tiene un impacto en tu negocio.
Los skill son la base no el techo.
Entendiendo el Seniority
Las empresas generalmente clasifican a los desarrolladores en tres categorías: Junior, Mid y Senior. Cada una de estas clasificaciones conlleva diferentes expectativas y responsabilidades. Para avanzar, es esencial que identifiques en qué área necesitas trabajar para pasar al siguiente nivel.
- Tiempo vs Experiencia
- Skills vs Resolución de problemas
- Soft skills
Tiempo vs. Experiencia
El tiempo no es la mejor medida de seniority. No se trata simplemente de cuánto tiempo has trabajado, sino de los problemas complejos que has enfrentado y resuelto en ese tiempo. Si eres Junior, es probable que enfrentes problemas más simples y un error que comenten muchas personas al inicio de sus carreras es que piensan que la destreza técnica por sí sola es suficiente.
Debemos romper un poco con esa mentalidad y entender que no necesitas tener todos los conocimientos, necesitas tener la confianza de tu equipo para recibir tareas más desafiantes, debes demostrar tu capacidad para resolver problemas difíciles.
La pregunta es, ¿Cómo gano la confianza de mi equipo? Toda empresa tiene problemas por resolver y muchos de hechos no se abordan por falta de tiempo, conocimiento o simplemente se convierte en deuda técnica, es ahí donde puedes encontrar una oportunidad, gana la confianza del equipo empezando a identificar donde están los puntos de dolor de un sub-sistema de tu proyecto.
Otra forma es empieza a participar activamente en las reuniones, haz propuestas y busca ayuda de personas senior para validar tus soluciones, desde ya crea una mentalidad de impacto.
La clave es ganar experiencia resolviendo problemas más complejos que los que normalmente se asignan a tu nivel. Esto definitivamente va a elevar tu nivel.
TIP: La experiencia que obtienes al observar a otros no es la misma que la que adquieres al enfrentarte a un problema tú mismo.
TIP2: No evites los problemas complejos; abrázalos y busca soluciones, incluso si eso significa pedir ayuda a tus compañeros.
TIP3: Identifica un subsistema que necesite atención y te conviertas en el owner, mejora y crear nuevas soluciones.
Skills y Problem solving
A medida que avances en tu carrera, las habilidades técnicas son importantes, pero la problem solving se vuelve aún más crucial. Las empresas buscan personas que puedan identificar problemas y proponer soluciones efectivas.
Tener una solución no basta, los desarrolladores senior a menudo, comprenden el impacto general de sus decisiones en el sistema, anticipan los side-effect y los trade-offs de tomar una vía u otra. No toda solución requiere patrones de diseño o una arquitectura compleja, pero si no tienes el conocimiento estás en un punto complejo, como sabes si tu solución es alta calidad, si aplicaste sobre ingeniería, si es escalable.
A medida que te vuelvas más competente, también debes desarrollar tu intuición para evaluar y mejorar el código, así como para entender, pensar críticamente las soluciones tuyas y de otros.
Hoy con todas las herramientas de AI cada vez se produce más código de esta forma, pero tú tienes que tener la capacidad de orientar la solución, la arquitectura correcta, modificar el código y hacer que cumpla con los estándares de tu proyecto. Los skills serán siempre importante porque puedes tener la mejor solución en tu cabeza y si no tienes los skills para escribir la solución o para determinar si una AI hizo bien tu solución se te va a quedar corto el problem solving.
TIP4: Leer sobre arquitectura de software, no seas un “pollo sin cabeza” que repite lo que un libro o un post dice, tienes que empezar a desarrollar criterio para aplicar soluciones mejores.
TIP5: Lee código fuente de personas que admires o que tengan habilidades más avanzadas.
Soft Skills
A medida que te mueves hacia la derecha en la escala de seniority, las soft skills se vuelven cada vez más importantes. Estas van a hacer la diferencia cuando en una empresa toque decidirse por dos personas con un perfil similar, que tengas un salario más alto del esperado, definamos los soft skills como eso que mantiene todo unido a medida que te conviertes en senior.
Los desarrolladores junior suelen necesitar supervisión, mientras que los mid y senior deben ser capaces de trabajar de manera más autónoma y colaborar con otros. Ese “ownership” para tomar responsabilidades y desempeñar trabajo sin constante supervisión, es una de las cosas más importante cuando se trabaja remoto.
Algunas habilidades blandas clave son:
- Comunicación: No se trata solo de hablar, sino poder expresar bien tus soluciones, como manejas y modulas tu tono en situaciones complejas, como recibes y das feedback, y cómo colaboras con tu equipo.
- Mentoría: Un equipo progresa a medida que se multiplica la calidad de los integrantes, deberás ayudar a otros a crecer, digamos que la mentoría es el legado de un senior, buscar que otros crezcan no solo ayuda a otros, sino que también consolidan su propia comprensión y demuestran cualidades de liderazgo.
- Trabajo en equipo: Seniors son capaces de ver el “big picture”, delegan y piden ayuda en momentos cruciales, priorizan el general valor para la empresa que ser el “todero”
- Toma de decisiones: Senior toman decisiones informadas y entienden los impactos de sus soluciones.
- Gestión del tiempo: Ser capaz de estimar tareas y cumplir plazos es esencial, desarrollar la habilidad de gestionar y priorizar el tiempo, entender que no todo lo puedes hacer y debes delegar.
- Liderazgo: Cultivar un liderazgo, hay muchos tipos de liderazgo y en algunos momentos algunos son mejores que otros, pero si queremos avanzar poco a poco debemos ser personas que guíen e inspiren.
TIP6: Pide feedback regularmente a tu líder sobre qué soft skills necesitas mejorar.
TIP7: Identifica que soft skill tienes y poténcialo, haz del tu caballo de batalla. A medida que lo perfecciones, empieza a trabajar en otros.
TIP8: Comunicación no es un soft skill estacionario, es algo que es continuo y varía entre equipos y proyectos.
¿Por qué no avanzas?
Ya vimos una estructura de que diferencia a un senior de otros desarrolladores, ahora la pregunta es ¿por qué no estás ahí?, ¿Qué te detiene?.
Lo más común es que tengamos un enfoque erróneo o estemos en un lugar poco adecuado para ejecutar un plan de crecimiento, pero sin importar esos factores externos debo preocuparme por las cosas que puedo realmente controlar, eso que está en mi control es más importante.
Te voy a dar mis 8 razones personales por las que creo que se te hace difícil avanzar en tu seniority basado en lo que hemos desarrollado como idea hasta acá:
1- Pobres habilidades de comunicación:
Ser senior desde mi punto de vista es sinónimo de buena comunicación, es importante aumentar nuestras capacidades en comunicación efectiva técnica y no técnica, esto puede variar entre empresas, pero algunas de estas cosas suelen incluir traducir conceptos técnicos complejos en un lenguaje claro, recopilar requisitos, proporcionar retroalimentación y facilitar la colaboración. Lo he vivido, donde personas con habilidades de comunicación poco desarrolladas y muy buenos técnicamente se estancan en un seniority.
2- Falta de profundidad técnica:
Si bien los senior necesitan ser técnicamente habilidosos, un senior entiende el “por qué” detrás del código, puede alinear sus skills, entender el impacto de una solución y poner esto en equilibrio entre velocidad y calidad para generar el valor necesario para el proyecto o la empresa. Algunas personas pueden centrarse demasiado en las habilidades de codificación y descuidar otros aspectos esenciales del rol, recuerda que el código es una excusa para poder resolver un problema.
3- Alcance limitado del impacto:
Muchos nos hemos enfocado alguna vez en solo completar tareas, pero llega el punto donde debemos medir el impacto de lo que hacemos, hacernos responsables del éxito o el fracaso, no solo es completar código, sino apropiarnos y volvernos responsables de una o varias áreas específica del producto, comprender sus complejidades y empezar a ser la persona de referencia para ese dominio.
4- Problemas de percepción y visibilidad:
La visibilidad es el ingrediente fundamental para avanzar en tu carrera, parte de ser humanos es ser apreciados y tener reconocimiento por el trabajo duro, cuando cambias la percepción del equipo sobre tu trabajo, cuando trabajes de forma inteligente y no solo duro, veras como ese valor que agregas al proyecto es reflejado en una percepción más positiva. Empieza a medir el impacto de lo que haces en el código y en el equipo.
5- Independencia:
A medida que avanzamos, desde mi punto de vista y luego de consultar con otros colegas, llegamos que la independencia es una habilidad crucial para un senior, para mi independencia es igual a confianza. Cuando tu manager y el equipo confía en tu trabajo, te desarrollas mucho mejor, te empuja a tener independencia y buscar crecer más rápido para afrontar retos más grandes.
6- Incapacidad para Priorizar Metas a Largo Plazo:
La presión para entregar resultados inmediatos puede llevar a priorizar ganancias a corto plazo sobre beneficios a largo plazo. Esto al corto plazo es una victoria, pero al largo plazo te vas a enfrentar a problemas técnicos que se te van a hacer casi imposibles de solucionar, en algunos casos perdiendo tu trabajo inicial. Ser senior es empezar a pensar en mi solución de hoy y como esta solución envejece y es fácil de mantener. Alzar la mano pedir más tiempo y entregar una mejor solución es más importante que solo entregar.
7- Falta de habilidades de liderazgo
Los senior no solo contribuyentes al proyecto; son líderes que guían e inspiran a sus equipos. Entienden que su experiencia y conocimientos son activos valiosos que pueden ayudar a juniors a crecer y sobresalir. Aceptan la mentoría, compartiendo activamente su conocimiento y proporcionando retroalimentación. Un líder tiene visión del mañana guiando soluciones que duren en el tiempo.
8- Falta de mentoría y oportunidades de crecimiento:
A veces no eres tú, es tu entorno, si estás atrapado en un ciclo de completar tareas de baja prioridad y pierdes la oportunidad de aprender de otros developers más avanzados, si la cultura es una donde el feedback no es constructivo, esto puede obstaculizar el crecimiento y evitar que adquieran la experiencia necesaria para un rol senior. Este es de los casos más difíciles y probablemente te tocará buscar por fuera de la empresa soluciones.
📖 TL;DR
- Crecer como ingeniero de software senior implica un cambio de mentalidad para entender que las habilidades son la base.
- Las habilidades técnicas son fundamentales, pero las soft skills son cruciales para el éxito profesional.
- La experiencia se mide por la resolución de problemas complejos, no solo por el tiempo trabajado. Gana experiencia con problemas complejos.
- Las decisiones de los seniors deben considerar los efectos secundarios y trade-offs en el sistema general.
- Los seniors deben trabajar de forma autónoma y ser responsables sin supervisión constante. Adicional la comunicación es vital.
- La visibilidad en el equipo es crucial, sin esto el equipo no sabe nada sobre ti, más visibilidad más oportunidades de impulsar tu carrera.
- El aprendizaje continuo y la adaptación son necesarios para el éxito, aunque ten en mente que es una maratón.
Conclusión
Convertirse en un Senior developer es un camino que va más allá de la adquisición de habilidades técnicas. Requiere un cambio en la mentalidad, un enfoque en el desarrollo de soft skills y un compromiso constante con el crecimiento personal y profesional.
A medida que avanzas en tu carrera, es esencial que comiences a ver tu trabajo como parte de un sistema más amplio. Entender cómo tus contribuciones impactan en el negocio y cómo se interconectan con otros aspectos del proyecto es fundamental. Esto no solo te ayudará a resolver problemas de manera más efectiva, sino que también te permitirá tomar decisiones acertadas que beneficien al equipo y a la empresa en general.