Cómo pasar de Junior a SENIOR Software Engineer en React JS

Authors

Si eres un Software Engineer en React JS, tal vez te preguntes qué habilidades necesitas tener para pasar a ser un Senior Software Engineer.

Como casi todo lo que vale la pena en esta vida, pasar de Junior Software Engineer a Senior requiere de esfuerzo, tiempo y una curva de aprendizaje, por eso he creado esta mega guía paso a paso para que lo logres más rápido y fácil que como lo tuve yo en mis inicios.

Disclamer: Cada empresa maneja lo que es un "Senior" de diferente manera. Lo que leerás aquí es toda mi conocimineto comprimido en los 7 años de experiencia que tengo al escribir esto.

Table of Contents

Qué es ser un Senior en programación (React JS)

Antes que nada, primero vamos a comprender a qué me refiero con "Senior" en este post.

A pesar de que cada empresa maneja internamente lo que consideran un "Junior", "Mid" y "Senior", hay aspectos que son comunes para este nivel.

Un Senior Software Developer es un profesional que tiene un gran dominio en las habilidades técnicas (tech skills o hard skills) y habilidades blandas (soft skills o power skills) como puedes ver a continuación.

Habilidades técnicas

  • Diseño de software. Es capaz de crear código en base a principios de diseño de software y patrones de diseño. Pero sobre todo, es capaz de Abstraer un problema para identificar qué solución aplica mejor.
  • Buenas prácticas de desarrollo. Relacionado con lo anterior, aplica Clean Code y Clean Architecture para que el código sea más fácil de mantener por el tiempo.
  • Testing automatizado: Un Senior debe aplicar sí o sí pruebas automatizadas y que estén bien hechas. Es capaz de diseñar una prueba que realmente aporte valor y que sea resistente a los cambios, o sea, que una prueba siga funcionando sin necesidad de actualizarla cuando haces refactors en el código.
  • Diseñar la arquitectura FrontEnd: Hoy en día existen diferentes maneras de crear una aplicación del lado del cliente: Una que quizá estés familiarizado es con SPA (Single Page Application), pero también existen otros tipos como Micro Frontend, un Monolito (junto al BE), separar por módulos instalables por medio de NPM, e incluso otros aspectos como crear una biblioteca propia de UI. Pues bien, un Senior es capaz de considerar los pro y contras de cada estilo y aplicar el que haga más sentido para las necesidades del proyecto.

Habilidades blandas (soft skills)

  • Liderazgo. En pocas palabras, poder influir en el equipo de manera positiva. Algunos ejemplos: Influir al equipo para que manejen buenas prácticas de desarrollo, a los devs para que sigan creciendo en sus carreras profesionales, motivar a que sigan aprendiendo, a poder alcanzar con los objetivos, etc.
  • Comunicación. Es capaz de poder comunicarse tanto con el equipo de desarrollo como con otros equiposo no técnicos dentro y fuera de un proyecto.
  • Empatía. El poder ser empático con un stakeholder o Product Owner cuando considere features que no son viables técnicamente (y cómo Asesorar para ir por otro camino y conseguir el mismo resultado, sin ser rudo en el proceso), tener escucha activa cuando hable con otros devs sobre propuestas de desarrollo o si se están quejando de algo, el poder dar y recibir feedback de manera profesional y educada, entre otros aspectos.
  • Resolver conflictos. Seamos claros, un desarrollador es alguien que resuelve problemas. Un senior es un resolvedor de problemas más allá del código. Puede aportar al negocio en seguir una estrategia para lograr los objetivos empresariales (o de la start up) por ejemplo. Es fácil ver un problema y quejarse, pero es más difícil hablar de un problema y PROPONER una solución.
  • Autodidacta. Un Senior puede aprender por su cuenta durante el proceso de desarrollo. Nuevas tecnologías, procesos, herramientas, etc. Incluso el ser capaz de resolver errores de código que nunca antes haya visto.

Tiempo de experiencia

Si bien hay un debate de si el tiempo de experiencia realmente es un indicador para saber el nivel de un ingeniero, por lo común algunas empresas consdieran que debe tener 5 años y otras 10.

Personalmente, no creo que el tiempo sea una buena referencia porque puedes estar repitiendo tus hábitos y no aprender nuevos conceptos durante años.

Sin embargo, es muy común ver este requisito en la descripción de vacantes de desarrollo. Más adelante voy a retomar este punto sobre las descripciones de las vacantes.

Diferencias entre un Junior y un Senior en React JS

A continuación te explico un resumen de las diferencias entre senior y junior.

Roadmap React JS
Sé el Senior que necesitabas cuando eras Junior
SkillJuniorSenior
Diseño de softwareDesconoce que existen principios de diseño o necesita ayuda para aplicarlosEs capaz de diseñar software consdierando principios y puede guiar a otros devs
Buenas prácticas de desarrolloNo está familiariado e incluso suele creer que escribir código complejo es demostrar que es buen developer y que sabe del temaIdentifica code smells y saber cómo refactorizar código con buenas prácticas así como enseñar a otros devs a hacerlo
Testing automatizadoNo aplica testing automatizado e incluso puede pensar que es una pérdida de tiempo o tener una imagen negativaComprende la gran importancia de las pruebas automatizadas, promueve su uso y enseña a otros devs a crearlas y hacerlo con buenas prácticas
Diseñar la arquitectura FrontEndDesconoce del tema, no se involucra en el diseño arquitectónico, más bien sólo se involucra a detalles de implementación de la mismaParticipa activamente en la arquitectura, es capaz de tomar decisiones o hacer propuestas en base a las necesidades del proyecto
LiderazgoEstando en un buen ambiente y equipo, va a estar facinado de seguir el liderazgo de otros devs que le guíen para que pueda seguir creciendo en su carreraInfluye en el equipo positivamente, pero también puede ser influenciado por otros devs sin tener conflicto en ello
ComunicaciónHabla en términos técnicos a personas no técnicas o se le dificulta expresarse sin tecnicismosEs claro y directo cuando se comunica con personas técnicas y no técnicas. Puede explicarle a su abuelita lo que es crear una app de manera que sea fácil de entender (esa es la prueba de fuego)
EmpatíaSuele reaccionar negativamente cuando hay requisitos irracionalesPuede asesorar a personas técnicas y no técnicas considerando sus necesidades
Resolver conflictosSuele proponer nuevas tecnologías de moda o sin considerar su viabilidad o querer tener más responsabilidades de las que realmente puede manejar, es muy optimista en cuanto estimaciones, puede identificar problemas pero no solucionesEs más realista gracias a su experiencia, no solo identifica problemas sino que propone soluciones que son viables o aplicables
AutodidactaSuele necesiar mucho apoyo para poder resolver errores de código del día a día, o para resolver un ticketEs un "Googleador" lomo plateado pelo en el pecho 100% real no fake, aprende más y más conforme afronta retos nuevos

Otros aspectos a considerar.

Ante un problema

  • Junior. Es reactivo, culpa, puede tener ansiedad fácilmente.
  • Senior. Es proactivo (piensa en cómo evitar problemas antes de que sucedan) y cuando se afronta a uno, su enfoque es pensar en soluciones en vez de buscar culpables y después piensa si hay una manera de evitar que se repita en el futuro. También puede tener ansiedad según la gravedad, pero gracias a su experiencia comprende que ciertos problemas son comunes en todo tipo de procesos de desarrollo.

Ante la planeación del proyecto

  • Junior. Es muy optimista en cuanto a las estimaciones por la falta de experiencia (y es normal), si existe un requisto que parezca ser inviable técnicamente, puede levantar la mano y señalarlo pero no ofrecer alternativas.
  • Senior. Evalúa un requerimiento en base a si realmente va a aportar valor al producto, detecta escenarios alternos y actúa como un asesor amistoso.

Al revisar código

  • Junior. Puede llegar a tomarse personal el feedback que reciba de alguien del equipo (aunque haya sido al código y no a su persona). Puede dar feedback sin ser grosero.
  • Senior. Sabe que todo feedback es para mejorar, y si recibe un feedback destructivo (a su persona o que es grosero), aplica inteligencia emocional y habla con la persona en cuestión para que no afecte negativamente al equipo
  • Nota. Hay devs que pueden tener un alto nivel técnico o ser llamados "ninja", "dev 10x" que hace lo de 10 devs, etc; pero ser un hijo de puta. Hay personas así y es indistinto del nivel. Para estos casos, lo mejor es evitarlas en un equipo. Con equipo todo, sin un equipo nada.

Rango de Salarios para un Senior

Esto va a depender del país ya que hay distintos factores como el costo de vida y la oferta y demanda.

En el mercado estadounidense, el sueldo anual para un Senior en React JS es de 144,000a144,000 a 194,000 USD. En el mejor de los casos, es un salario de 16,000 USD mensuales.

El sueldo promedio de un Senior en React JS en México es de $54,000.00 MXN netos (libres, descontando impuestos) al momento de escribir este post de acuerdo a Glassdor (puedes revisar el sueldo promedio en tu país en la misma página).

Al ser un promedio, tenemos la desviación estándar (los valores superiores e inferiores del promedio), por lo que seguramente hay gente que gane aún más que eso (el doble lo veo viable si eres un buen Senior en una buena empresa).

Mi recomendación personal es: Si vivies en latinoamérica, te conviene ganar en dólares porque a pesar de la inflación y corrupción monetaria que pueda tener esta divisa, sigue siendo preferible que las divisas de países en vías de desarrollo.

En otras palabras, ganar en dólares y gastar en (por ejemplo) pesos, va a convenirte más, sobretodo si observas la tendencia a través del tiempo sobre el dólar estadounidense y la moneda de tu país.

Para ganar en dólares necesitas saber inglés a un nivel en el que puedas comunicarte efectivamente, tanto oral como escrito, y aplicar a vacantes de empresas de Estados Unidos. Asegúrate de que paguen en dólares.

También puedes trabajar como freelance con clientes norteamericanos.

¿Hay algo más importante que el sueldo?

Esto es muy subjetivo. Hay quienes prefieren cambiar a otro trabajo ganando menos de lo que ganan actualmente porque hay una cultura de la puta mierda.

La cultura de la empresa es en extremo importante. Es algo que influye en tu carrera profesional y tu calidad de vida.

Mi consejo es que investigues muy bien a la empresa donde quieres entrar antes de aplicar.

¿Tú qué opinas? ¿Salario > Cultura?

También está el tema de otras prestaciones y Home Office.

Sin duda alguna, muchos como yo, ya no aceptaremos un trabajo presencial ni aunque paguen 5 veces más sueldo del mercado.

Como puedes ver, es muy subjetivo y va a depender de qué es lo que valoras más.

¿Debes aplicar a una vacante para Senior si no cumples el 100% de lo requerido?

Respuesta corta: Sí.

Explicación detallada: Puedes aplicar a una entrevista por una de estas razones:

  • Obtener un empleo.
  • Obtener información y feedback de lo que necesitas para obtener ese empleo o similar.

Cualquiera de las dos razones, es válido aplicar :D

Ahora bien, hay que aplicar el sentido común (el menos común de los sentidos). No vas a aplicar para un puesto de Senior en React JS si tus skills actuales son solamente Php y Vue JS. Tiene que haber congruencia. Esto para que puedas pasar el primer filtro: ver tu CV.

Algo a tomar en cuenta es que la mayoría de las vacantes son como cartas a Santa Claus. Son una lista de deseos fantasiosos donde piden hasta 4 puestos de trabajo en una sola vacante.

Esto no es culpa del reclutador la mayoría de las veces. Un reclutador sólo cumple su trabajo colocando los requerimientos que dice su cliente (la empresa).

Para que puedas ser Senior más rápidamente, te propongo que busques una vacante en LinkedIn y apliques hoy mismo, incluso sabiendo si te van a rechazar.

Si logras tener una llamada, presta mucha atención a lo que te preguntan. Haz preguntas tú también, como cuáles son las responsabilidades esperadas para tu puesto, cómo es un día de trabajo normal, etc.

Si logras hablar con otro desarrollador que te entreviste, tiene más sentido hacer preguntas más técnicas: ¿Qué tipo de soluciones técnicas esperan de un Senior? ¿Qué tipo de problemas complejos suelen afrontarse en el día a día?

Haz tantas preguntas como consideres. Los procesos de reclutamiento decentes, siempre dan un espacio para preguntas y respuestas.

Por otra parte, ¿Sabías que los hombres tendemos más a aplicar a vacantes incluso si no cumplimos el 100% de los requerimientos a diferencia de las mujeres?

Esto puede ser debido a diferencias socio culturales de género.

Sea por la razón que sea, es importante que te animes a aplicar a vacantes si cumples por lo menos el 70% de los requerimientos, especialmente si eres mujer.

La razón de hacerlo es que puedes obtener un valioso feedback de qué necesitas para ser Senior para una empresa en particular.

No estás haciendo algo inmoral ni indebido.

Cómo pasar de Junior a Senior paso a paso

Ya que tenemos una mejor idea de lo que es un Senior Software Developer y las diferencias con un Junior, veamos la estrategia para dar el siguiente paso.

Si lo que hace a alguien un Senior son sus habilidades y experiencia, entonces necesitamos tener una manera de categorizar dichas habilidades y lo que se esperaría de un Junior, Mid y Senior.

Pensando en las habilidades técnicas para React JS, podemos considerar como pre requisito saber HTML, CSS y JavaScript vanilla para posteriormente entrar al ecosistema de React, desde su core hasta temas avanzados.

Roadmap React JS
Diagrama de Roadmap de React JS desde cero a avanzado

Con esto ya puedes tener una mejor visión, pero ¿Cómo puedes dar el siguiente paso?

He preparado una plantilla donde tengo categorizado a mayor detalle los diferentes skills técnicos y tecnologías de acuerdo al nivel y una propuesta para que puedas hacer un seguimiento y plan de acción

Puedes descargarla dando click aquí.

La plantilla tiene instrucciones para hacerla auto explicativa, pero te voy a dar algunos tips.

Consiste en un Roadmap para React JS desde cero hasta avanzado. Está dividido por categorías según una tecnología o campo.

Por ejemplo, tenemos la categoría "Software Engineer" que cubre en general lo que deberíamos conocer como desarrolladores de software.

Dentro de esta categoría, tenemos Git y Github. Para el nivel Junior, tenemos la siguiente descripción.

Tiene los conocimientos mínimos para poder diferenciar Git y Github, puede crear ramas y hacer commits con poca ayuda.

Y así una descripción para cada nivel.

En la pestaña de "React JS Skills Roadmap", lee en orden y marca las celdas que consideras que te falta por aprender con lo explicado. Puedes cambiar el fondo del color de la celda para que lo tengas más visible.

Cuando termines, va a ser tan sencillo como ir a la pestaña de "Tú planeación de mejora" dode podrás ir colocando las habilidades que necesitas tener y un plan a realizar para adquirir dicho skill.

El plan de acción va a depender de la habilidad y de lo que consideres apropiado: Ver un curso, hacer una app, escribir un post en Medium, o cualquier otra cosa que te parezca conveniente.

Para ayudarte más, al final de este post te comparto un listado de recursos propios y de terceros que puedes consultar como fuentes de aprendizaje ;D

Recursos para subir de nivel en React JS

Esto es un complemento para tu plan de acción. Te comparto diferentes recursos para que puedas aprender el skill o skills que te hagan falta.

Roadmap React JS
Te ayudo a aprender temas básicos a avanzados en React JS

Nivel Junior

Si vas iniciando en React y no tienes claro el tema de los hooks, puedes revisar:

Nivel Mid a Senior

Si el tema del testing automatizado es un dolor de cabeza, entonces te recomiendo:

Si lo que necesitas es aprender a abstraer, aplicar los principios SOLID en React y aplicar una variedad de patrones avanzados, entonces te recomiendo: