¿Cuándo debería empezar a buscar mi primer trabajo como desarrollador frontend?
⚠️Esto es un post meramente de opinion, lo escribo con la experiencia que tengo contratando y participando en procesos de contratación.
Estas estudiando programación, mientras mas estudias mas te das cuenta que nunca va a parar de aprender, entonces te preguntas ¿Cuándo debería empezar a buscar mi primer trabajo?.
En este post voy a intentar enseñarte como leer las posiciones abiertas, compararlas con tus habilidades y ver si debes o no aplicar.
¿Qué es un trabajo?
Un trabajo es una actividad regular y oficial que realizas, y recibes dinero (un salario) por tu actividad.
En tecnología es más cómo venderle tus conocimientos a la empresa interesada en ellos.
Para conseguir un trabajo en tecnología lo que tienes es adquirir conocimientos y conseguir una empresa que quiera pagar por ellos ¿fácil? ¿no?, no tanto.
¿Cómo contratan las empresas?
Cada en empresa tiene sus propios procesos, no existe un estándar en la industria y por lo cual cuando comienzas a aplicar te vas a encontrar sorpresa tras sorpresa.
Sin embargo intentare explicar los pasos más comunes.
Consigues una posición abierta en Linked In le das a ese hermoso botón azul de “Aplicar” y mandas tu curriculum. Si les gustó lo que vieron:
- Te contacta el reclutador o recursos humanos para
- Descubrir si eres un buen fit para la empresa y la posición
- Explicarte mejor la posición y tu pretensión salarial
- Explicarte el proceso
- Responder tus preguntas
- La llamada con un desarrollador o líder técnico, pueden ser todas o algunas de estas
- Entrevista tecnica
- Ejercicios en vivo, tipo HackeRank
- Ejercicio para llevar a casa y entregar unos días
- Depende del tamaño de la empresa puede ser una llamada con el CTO o CEO para conocerte y asegurarse que tienes una cultura que puede funcionar dentro de su empresa
- Si pasaste todo el proceso, te van a llamar de recursos humanos para hacerte la oferta de trabajo que incluye el salario. Recuerda que puedes negociar.
Esto es más o menos los pasos comunes en los procesos de reclutamiento en las empresas de tecnología, pero estos pueden cambiar dependiendo de la empresa o la posición.
Aplica según tus conocimientos
Los niveles de Junior, Senior, etc son diferentes para cada empresa, entonces tu te puedes considerar Junior, pero resulta que para alguna empresa tu puedes ser Semi-Senior, por eso, no te asignes un nivel y deja que sea la empresa quien lo haga.
Los niveles de Junior, Senior, etc son diferentes para cada empresa.
Cuando estes buscando empleo, en lugar de buscar “junior web developer”, mejor busca “web developer” y lee con detenimiento los requerimientos de cada posición y así puedes descubrir cuantos de estos requerimientos cumples y no dejes de aplicar solo porque no sabes todos.
No tienes que saber el 100%
Si consigues una posición y leyendo los requerimientos ves que cumples el 60 o 70% de ellos, no te detengas y aplica, las empresas que valen la pena no esperan que el candidato sepa el 100%.
El verdadero crecimiento se produce cuando logras cosas para las que no estabas capacitado.
¿Qué es lo mínimo que debo saber?
Bueno, obviamente eso va a depender del area que escojas, backend, frontend, devops, data science, etc. Como mi area de conocimiento es frontend usemos esto como ejemplo.
Una posición típica para Frontend Developer se ve mas o menos así:
- Computer Science Degree or equivalent experience
- 2+ years experience
- HTML/CSS/ES6/SASS. Knowledge and experience with BEM is a huge asset.
- Experience with GIT is a must
- React and Bootstrap.
- Experience in working in Agile methodology
- Excellent communication (oral and written) in English
Según esta posición lo mínimo sería
Voy a ordenar este listado de lo que yo considero mas a menos importante y explicar qué es lo mínimo que deberías saber de cada item.
2+ years experience
Sí y esta es la parte más dura, lo sé, pero si no tiene experiencia puedes sustituirla por un portafolio excelente.
Esto lo mira principalmente la persona de recursos humanos porque normalmente ellos miden el conocimiento en años y en tecnología esto no necesariamente es así, sin embargo creo que esto va a empezar a cambiar, tengo fe.
Experience with GIT is a must
Porque vas a trabajar en equipo con varios desarrolladores se espera que sepas control de versiones, hay cientos de tutoriales en YouTube donde explican esto, es necesario al menos saber lo básico: crear un branch, hacer commits y hacer push .
Excellent communication (oral and written) in English:
Seguramente tiene un equipo multilenguaje y multicultural y todos se comunican en Ingles, no tienes que tener un acento perfecto, lo que si es importante es poder mantener una conversación y poder entender requerimientos.
HTML/CSS/JavaScript/ES6/SASS. Knowledge and experience with BEM is a huge asset
- HTML: conocer las etiquetas más importantes, entender la semántica y sus etiquetas como header, footer, main, aside, nav. Como poner el lenguaje y la versión. Tambien data attributes y aria labels.
- CSS: grids y flexbox pero sobre todo como hacer responsive design, entender el modelo de caja, padding, margin y por supuesto CSS properties.
- JavaScript: variables y sus tipos, funciones y sus tipos, promesas, métodos de array y de objetos. Entender la diferencia entre pasar variables por valor vs referencia. Scope y hoisting.
- ES6: es JavaScript con let y const, arrow functions, destructuración, promises, template literals y muy pero muy importante modules (import y export).
- SASS: es solo CSS con un esteroides, lo que debes saber es: nesting y el símbolo de referencia (&), variables, mixins y funciones, partials e imports y list y sus iteraciones.
- BEM: es solo una nomenclatura para los nombres de clases de CSS, es algo que puedes aprender en menos de un día leyendo la documentación.
React and Bootstrap
Si sabes todo lo que puse arriba de JavaScript y ES6 ya tienes un buen camino recorrido para React, lo mínimo que debes saber de React es por supuesto crear components y sus diferentes tipos, Class vs Functional components, manejar el estado, hooks, eventos, props y context.
Para Bootstrap debes conocer su grid system, como usarlo con SASS, como inicializar y usar sus diferentes components. Todo eso lo puedes aprender en YouTube, hay miles de videos al respecto.
Experience in working in Agile methodology
La metodología ágil es un proceso para manejar proyectos. Funciona bajo el principio de iteración, cada iteración se llama “sprint” y puede durar 1, 2, 3 o mas semanas. La idea es que con cada sprint se lance una version del software con mejoras y arreglos de bugs.
Lo que tienes que saber es que se trabaja con tareas, todos los días hay una reunion para hablar de lo que hiciste el día anterior y que vas a hacer hoy. Se hacen reuniones de planning para explicar las tareas y al final de cada sprint reunion de retrospectiva para ver qué salió bien y mal.
Computer Science Degree or equivalent experience
El título en la vida real solo sirve para dos cosas: visas y residencias o trabajar para el gobierno, en la empresa privada lo que importa es lo que puedes hacer, tu portafolio y tu experiencia.
Puede ser que te consigas con una que otra empresa en Latinoamérica que se quedo en los años 90 y te pida el titulo pero en USA y EU no importa para nada.
Lo mínimo depende de cada posición y cada empresa
Quizás no sabes React pero sabes mucho JavaScript eso te hace muy atractivo para esa posición porque puedes aprenderlo rápido.
Otro ejemplo es que no sabes SASS pero sabes mucho CSS igualmente.
Quizás nunca haz trabajado con Agile pero tu ingles es buenísimo entonces la empresa no ha encontrado a alguien con buen ingles y ahi es donde entras tú.
Dicho esto, lo que quiero que quede claro es que tienes que darte oportunidades e intentarlo, porque la verdad es que no sabes lo suficiente hasta que aplicas.
“Fallarás el 100% de los tiros que no hagas” – Wayne Gretzky
Pide feedback
Cuando arranques con un proceso trata siempre de pedir feedback, demuestra interés y haz preguntas.
Si no calificas igual trata de obtener feedback de porque el rechazo, de que fue lo que te faltó, toma nota de esas areas y las que consideres importantes trata de mejorarlas.
Tips finales
- No te auto asignes tu nivel
- Lee con detenimiento las posiciones y sus requerimientos
- Ajusta tu curriculum a cada posición
- Aplica incluso si no cumples el 100% de los requerimientos
- Mejora tu ingles siempre
- Aprende de cada rechazo, es duro, pero toca hacerlo
Respondiendo la pregunta del título de este post
Pues, tan pronto como sepas HTML y CSS porque incluso hay posiciones que no piden JavaScript por ejemplo: Email Developer o Content Editor.
Finalmente, si tienes alguna pregunta puedes escribirme a mi Twitter @fmontes y con mucho gusto te responderé tan pronto como me sea posible.