Nunca más serás Júnior: vista general para subir de nivel
Cómo pasar de Júnior a Médior (Mid-level).
Road to Médior Developer.
Los commits de esta edición:
feat: crecer, crecer y crecer (con cabeza)
fix: robotaxis & Angular
chore: libro al 95%
refactor: posponer alarma
¡Dale! (Zelda, dale)
Tema principal
De Júnior a Médior.
Antes de empezar: No me gusta la palabra SemiSenior.
Me suena a casi sénior. Casi experto, casi válido, o peor: casi guapo.
Me gusta más Mid-level, pero todavía más Médior, por eso de usar una musicalidad similar a Júnior y Sénior.
Pero bueno, al lío.
Dejar de ser júnior es algo que depende de ti exclusivamente
Te llevará tiempo, obviamente. Yo estimo que 2-3 años mínimo para llegar a médior.
No tengas prisa, ten ambición.
¿Cómo subo de nivel?
En otra ocasión, hablando de objetivos para juniors, mediors y seniors, puse que lo más importante para un júnior es Dominar los fundamentos y Colaborar like a lord. Ahora te muestro el camino centrándome en esos dos pilares.
Dominar los fundamentos
Necesitas aprender en profundidad el lenguaje de programación que estás usando. ¿Por qué filtrar u ordenar de una manera u otra?, ¿cuándo hacer operaciones en el Frontend y cuándo en el Backend?, ¿cómo hacer que las cosas parezcan sencillas?
Además, todas las herramientas de tu día a día como developer: Git, metodologías ágiles, ceremonias y reuniones, flujo de desarrollo de aplicaciones y proyectos.
La fuerza de la programación
Profundiza en tu lenguaje de programación principal.
Asegúrate de tener un sólido entendimiento de los fundamentos de la programación y las tecnologías que utilizas.
Aprende nuevas tecnologías
Familiarízate con frameworks y bibliotecas populares en tu campo, y profundiza en las que ya estás usando.
Toca muchos palos para descubrir lo que más te gusta. Puede que empezaras tu carrera como QA o Backend y de repente quieras hacer Frontend. Es habitual cambiar de rama al principio, a mí me pasó. Cuanto más conozcas, más posibilidad de encontrar tu lugar.
Ponte vídeos de programación y así, aunque no estés programando, estarás en contacto con el mundillo. Esto es fácil para convertir nuestro cerebro en una esponja de aprendizaje.
Elige proyectos grandes
Sé que no depende de ti, pero pide formar parte de proyectos complejos, con más usuarios, con más pantallas, con mayor equipo.
Los proyectos grandes suelen tener procesos más estrictos y así conocerás la realidad de la burocracia developer.
También tendrás la posibilidad de trabajar en diferentes partes del proyecto para obtener una mejor foto general.
Céntrate en resolver problemas
Resuelve ejercicios sencillos y medianos en plataformas como LeetCode, HackerRank o Codingame.
Practica algoritmos famosos.
Apúntate a hackathons o competiciones de programación.
Colabora like a lord
Necesitas saber cómo trabaja el equipo, qué hace cada parte, relacionarte con tus compañeros y asumir cierta resposabilidad.
Todo esto no se aprende de la noche a la mañana y al ser habilidades más sociales, habrá gente que lo consiga con mayor y menor esfuerzo. Pero todo se aprende.
Pide feedback, analízalo y aplícalo
Pregunta de manera constante a tus compañeros y superiores.
Revisa qué te dicen y si tienen razón. No seas cabezota, puede que no te guste lo que te digan, por eso tienes que razonar si es verdad o no. Ten la mente abierta para mejorar.
Aplica el feedback para ser tu mejor versión. En la época júnior es normal que nos corrijan y nos enseñen a menudo. Paciencia.
Desarrolla habilidades blandas
Especialmente la comunicación, pues será habitual que te toque explicar cosas, hacer preguntas y pedir favores. Habla para que te entiendan.
Aprende a priorizar tus tareas. Será habitual tener que hacer varias cosas a la vez, así que aprende a organizarte. El tiempo es oro.
Ten iniciativa
Propón mejoras en los proyectos y procesos.
Habla en reuniones de arquitectura, diseño o negocio.
Asume toda la responsabilidad que puedas.
Conoce al equipo
Aprende cómo funciona el Frontend, cómo funciona el Backend, cómo se despliega la aplicación y cómo es el ciclo de pruebas QA.
Nada de ser experto en todo, solo conoce el flujo de trabajo y el flujo del usuario.
Empieza a conocer gente
Asiste a conferencias de programación para descubrir cosas nuevas, pero, sobre todo, para conocer gente.
Únete a comunidades o escribe de manera activa en LinkedIn.
Tener contactos abre puertas. Otro día hablaré de cómo hacer networking de manera efectiva.
Te dejo una imagen, que siempre queda todo más claro con apoyo visual.
No es necesariamente el orden de aprendizaje, pero de manera visual queda mejor un caminito. Como unos pasos a seguir.
Venga, a crecer.
📰 Noticias (por si no te has enterado)
🚕 El robotaxi de Tesla llega a Austin, Texas - Espera que su sistema de conducción autónoma sin supervisión se libere en California también este año. ¿Nos acercamos a los dilemas morales de la conducción robótica? ¿En caso de accidente, mejor salvar más personas? Yo, sinceramente, confiaría más en un coche que salve mi vida como conductor o pasajero frente a las de los individuos fuera del coche, pero ¿qué dice tu ética? (+info)
💻 Un documental de una hora sobre los orígenes de Angular - No he sido capaz de verlo, me da algo de pereza. Después de la película sobre Facebook y el documental de NodeJS, parece que el Software el nuevo true crime (frase que ha ido directa a mi titular de LinkedIn) → tienes el documental aquí.
📊 Cómo tener una carrera exitosa a pesar de la IA - Blog optimista para acercarnos la idea de potenciar nuestras habilidades que no requieren IA y las que requieren mayor experiencia incluso usando IA (+info)
🌴 No animes la altura por CSS - Curioso y para leer por encima. Parece que el uso de CPU del navegador se vuelve loco animando alturas. Como si no tuviera ya demasiado uso de CPU. (+info)
🗳️ Cosas del software sobre las que cambió mi opinión tras 10 años programando - 1 minuto de lectura para comprobar si tú también has cambiado de opinión o si sigues pensando lo mismo sobre tecnología que cuando empezaste en el mundillo. Mi favorita: You have to actively invest in improving your soft skills. (+info)
🪳 Otra semana sobreviviendo al Software
En cuanto a mí, el martes pedí un libro de prueba a Amazon de “Cómo sobrevivir en el mundo del Software”, el primer libro que voy a publicar. No se pueden pedir varios formatos de papel y portada a la vez, y tarda una semana en llegar, así que me tocará hacer varios pedidos para comparar.
La verdad que estoy muy emocionado con el lanzamiento. Espero que sea a finales de febrero o principios de marzo, depende de cómo vea estos libros de muestra. Y luego quiero hacer varias presentaciones por España, así que buscaré comunidades locales para hacer alguna charla y presentar el libro.
Igual me estoy flipando, pero yo qué sé, los autores publicados hacemos estas cosas.
En la ofi hemos tenido a Izan triste y distante esta semana. Casi no ha hablado con Petunia y comiendo en la cantina él forzaba sentarse muy alejado de ella. Parece que Izan se sintió rechazado en las cañas del viernes y quiere poner tierra de por medio.
Dura decisión, pero a largo plazo tal vez la mejor. #ánimoBro
Aun así, he visto a Petu intentando hablar con él un par de veces, como preguntando cosas del código solo para romper el hielo y compartiendo un Kit-Kat (símbolo universal para hacer las paces). Izan ha sido bastante seco, pero quién sabe. Tal vez las aguas vuelvan a su cauce.
👨🏻🏫 Practica un poco, bro / sis / sib(ling)
Por último, te dejo un ejercicio rápido para que practiques un poco. Si lo resuelves a mano, con papel y boli, mejor. (Tienes los beneficios aquí)
// Crea una clase para controlar un despertador:
// Podemos fijar una única alarma, se sobrescribe la anterior si volvemos
// a fijar alarma.
// La alarma sonará automáticamente a la hora determinada.
// Podemos parar la alarma cuando suene o posponerla X minutos.
// Podemos cancelar la alarma en cualquier momento para borrarla.
class AlarmClock {
constructor() { /* ... */}
}
// Ejemplo de uso:
const alarmClock = new AlarmClock();
alarmClock.setAlarm(7, 30);
alarmClock.ring(); // Se ejecuta automáticamente y activa el sonido
alarmClock.cancel();
alarmClock.stop(); // Solo si la alarma está sonando
alarmClock.snooze(10); // Solo si la alarma está sonando
// Un punto extra:
// ¿Qué habría que cambiar si quisiéramos almacenar 5 alarmas en
// vez de solo una?
Por cierto, no he programado la solución, asume los datos que consideres.
Y eso es todo.
Una semana más sobreviviendo al Software 💻 💻 💻 💻 💻 💻
Chao, pescao 🐠