Todo lo que no te han contado en la carrera

Publicado el 8 de mayo de 2023, por Borja Pérez

Si todavía no te has lanzado al mercado laboral tech y estás terminando tu carrera o formación, esto que te vamos a explicar te va a venir de perlas porque podrás entender muchas cosas antes de tropezar con ellas.

Si ya estás empezando a trabajar, todo esto también te puede ayudar mucho a entender cómo evolucionar en los próximos años. 

Por tiempos o por programa, hay muchas cosas que se quedan fuera de las clases. La realidad es que son asuntos tan importantes, que, si no te los explican antes, pueden condicionarte y mucho tu futuro. Así que… ¡Dentro post sobre algunas cosas que no te contaron en la carrera!

El mercado del software: lo que no te contaron en la carrera

¿Qué está pasando a nivel nacional e internacional?

El sector del software ha evolucionado mucho durante las últimas décadas. Tanto, que a día de hoy es una de las industrias con más crecimiento y con mayores salarios en todo el mundo. ¿Esto te lo habían dicho en la carrera?

El avance tecnológico en cuando a infraestructuras y redes ha hecho que cada vez se creen más y más empresas basadas 100% en software. Además, los fondos de inversión y de capital riesgo (Venture Capital o VC) han puesto sus ojos en el sector y han impulsado del crecimiento de muchas compañías, ayudándolas a contratar más y evolucionar más rápido. 

Ahora mismo, la demanda de desarrolladores y desarrolladoras es mayor que la oferta. Se forman menos desarrolladores de los que son necesarios, y, por lo tanto, el mercado de la contratación vive momentos de mucha actividad. Por darte un poco de contexto, la curva de técnicas y técnicos que se necesitan es más vertical que nunca. 

Te voy a dar dos recursos muy buenos para conocer el estado del sector: 

  • El primero es nuestro Developer Career Report: un informe que empezamos en 2022 sobre el estado del sector tech en España basado en nuestra base de datos (30K de usuarios).
    En él, verás algunas tendencias sobre lenguajes, roles, salarios o modalidades de trabajo. Tenlo siempre a mano, es muy útil. 
  • El Hired’s 2023 State of Software Engineers: un report magnífico sobre el estado del sector a nivel más general con tendencias y muchos muchos datos. 

En este segundo podrás ver este gráfico, que, aunque parezca extraño, explica la realidad del sector: hay más ofertas de trabajo que candidatos en el mercado.

Fuente: Hired.com

¿Qué puedes esperar del mercado al salir de la carrera?

La primera oportunidad es quizás la que más cuesta. Pero también es cierto que, tras las prácticas de la carrera o del CFGS, son muchas las personas que se quedan con su primer contrato de trabajo como juniors. 

Linkedin, esa red social que jamás pensaste que ibas a utilizar. 

A través de Linkedin se mueven una gran cantidad de ofertas de trabajo para compañías de software. Una simple búsqueda de “junior software developer” te arrojará una multitud de resultados de empresas que están buscando talento. 

Los recruiters la utilizan mucho para contactar perfiles técnicos, por lo que nunca está de más que lo mantengas actualizado con tu rol, tecnologías con las que has trabajado o responsabilidades que has asumido. 

Eso sí, disclaimer importante, conforme vayas ganando experiencia, tu bandeja de entrada de mensajes de Linkedin se va a ir llenando cada vez más de ofertas laborales. Esto no es malo de por sí, tener oportunidades siempre está bien, pero la comunidad ya tiene cierta reticencia a este tipo de contactos a puerta fría. Por regla general, las ofertas que encontrarás en Linkedin publicadas, o las que te puedan llegar a la bandeja de mensajes, suelen ser muy esquemáticas, con poco contexto y sin salario. Y aquí abrimos EL GRAN MELÓN de las ofertas de trabajo. Y, no, para esto no hay ninguna carrera (risas).

Ofertas de empleo: el periodo post carrera

Ofertas de empleo en tecnología hay a patadas. En todas las plataformas de empleo encontrarás miles y miles. En la nuestra también las hay. Pero como hay tantas, también las hay muy diferentes entre sí. 

Desde las ofertas más sencillas y vagas, en las que se habla de “empresa líder del sector” y “salario según experiencia”, a aquellas más trabajadas, donde encuentras contexto de la compañía, en qué momento están, qué reto tecnológico afrontan, cuál es el equipo, qué esperan de ti durante los primeros meses y sobre todo, y lo más raro, el salario ofertado

Para nosotros, una buena oferta debe aportar la máxima información posible para hacerte perder el menor tiempo posible. Si tú conoces estos detalles que enumeraba arriba, tomarás una mejor decisión sobre si entrar en el proceso o no. No hay cosas más frustrantes que iniciar un proceso de selección que tiene varias entrevistas para que la franja salarial final no se adecúe a tus expectativas. 

En nuestra web encontrarás ofertas muy detalladas que poco a poco empiezan a extender ese estándar en el sector. Aún nos queda mucho camino por recorrer, pero haremos todo lo que podamos para cambiar estas prácticas opacas. 

En qué cosas te debes fijar en una oferta de empleo

  • El tipo de compañía: consultora, producto o cliente final. En función de esto, sabrás si trabajarás por proyectos, en un producto de software o en una empresa donde la tecnología es el apoyo principal del negocio.
  • La financiación: están naciendo nuevas compañías cada momento. Algunas de ellos han levantado sus primeras rondas de financiación como startups. Entender el momento financiero de una compañía te ayudará a entender el posible riesgo de cambiar de trabajo. 

Una compañía con más experiencia o que ya está comercializando su producto tendrá mejor salud financiera que una que acaba de nacer. Los retos tecnológicos también son distintos, pero conocer su estado te puede ayudar a tomar una decisión. 

  • Las responsabilidades: qué esperan de ti. Qué tipo de tareas vas a realizar en tu día a día. Que se ajusten a tu rol y al salario es lo más importante. Al salir de la carrera, las responsabilidades deberían ajustarse a tu corta experiencia.
  • El salario: muchas compañías no publican sus salarios de manera inicial, otras están en el camino a poder hacerlo. Pero, si puedes, aunque no esté en la oferta, pide la franja salarial para la posición desde el inicio. Toda posición abierta tiene una franja salarial asignada, así que no debería ser un secreto saber en cuánto te podrían ofertar si te acaban escogiendo. 

Ten en cuenta que las ofertas con salarios más altos también requieren mayor formación y experiencia, especialización y más responsabilidades. 

Tendencias en el sector tech

Cada vez, las compañías crecen y crecen más, por lo que las posiciones se van especializando o nacen roles nuevos a raíz de los avances tecnológicos. Hasta hace pocos años, casi nadie había oído hablar de DevOps o Cloud Architect y la tendencia es a la aparición de posiciones nuevas. 

Como en todos los sectores, hay periodos de crecimiento y de estabilización. En este caso, el mercado tecnológico están en pleno crecimiento y seguirá así durante bastantes años. 

Eso no implica que en periodos de inestabilidad, las grandes tecnológicas ajusten sus plantillas (seguro que has escuchado algo sobre los layoffs de este o del año pasado en Silicon Valley) y que, por tanto, afecte también al mercado nacional. 

Estas compañías no conforman la realidad del tejido tecnológico. Hay muchísimas más empresas de tamaño pequeño y mediano que crecen a ritmos más normales y que no sufren tanto esta inestabilidad. 

Las empresas de producto y startups siguen y seguirán creándose 🙂 . 

Procesos y metodologías post carrera

Trabajar en una compañía de software es bastante diferente a hacerlo en otro tipo de sectores. Las empresas suelen estar bastante actualizadas en cuando a metodologías y procesos, ya que así les permite optimizar tiempo y costes. 

En las ofertas de empleo verás términos que desconocerás, y es totalmente normal. Incluso a día de hoy, se sigue aprendiendo terminología del sector (independientemente de los años que lleves en él). Pero seguro que verás en muchas de las ofertas palabras como metodologías ágiles, agile, scrum, integración continua (o CI/CD), o términos como cloud o DevOps. 

Glosario rápido de términos

Cloud y cómo se despliega: infraestructura

El software tiene que alojarse en algún lugar. Un sistema operativo funciona en tu ordenador, una app funciona en tu teléfono móvil, pero, ¿dónde está realmente alojado el software al que te conectas constantemente? Hablo, por ejemplo, de Spotify, Netflix o casi cualquier web. 

Pues desde hace décadas este software se ha desplegado (así se suele llamar a poner el código en producción a disposición de los usuarios) en servidores. Grandes CPD’s físicos que alojan tu código. Pero esto tenía un problema: si necesitabas más capacidad porque tu programa o tu web tiene muchas sesiones simultáneas o muchos usuarios, debías comprar y configurar nuevos servidores. Es decir, tenías que ampliar tu infraestructura. Pero los usuarios y las sesiones varían, hoy tienes muchos, pero mañana tienes la mitad o menos, y la infraestructura cuesta mucho dinero de adquirir y mantener

Desde hace años, este problema se ha solucionado con los que se llaman nubes o cloud. Existen diferentes proveedores de alojamiento en la nube que permiten desplegar tu código sin necesidad de tener una infraestructura física en tu empresa. 

Hay nubes públicas y privadas. Las públicas más conocidas son AWS (Amazon Web Services, sí, Amazon también tiene business aquí), Azure de Microsoft o Google Cloud. 

De esta forma, tú puedes configurar el despliegue de tu código en estas plataformas, de manera que puedas ampliar infraestructura de manera automática solo cuando tengas picos de usuarios. Y se te cobra en función de lo que utilizas.

¿Significa que ya no existen esas grandes salas con miles de servidores físicos? No, siguen existiendo, pero ahora son de Amazon, Microsoft, Google y otras, y te los alquilan a partir de tus necesidades. 

Explicado de manera sencilla, eso es más o menos todo.

CI/CD: ¿qué es?

Continuous Integration y Continuous Delivery/Deployment. Significa integración y despliegue continuo. 

Normalmente, los programas se despliegan a producción incompletos. Las necesidades de la empresa suelen hacer que el software salga cuando todavía tiene flecos por pulir o funcionalidades que no están listas. Mientras tanto, se sigue desarrollando más código que complete estas aplicaciones. 

¿Hay que parar entonces la aplicación para poder volver a desplegar ese código nuevo y que se integre con el código que ya hay en producción?

No. Existen metodologías y herramientas que facilitan que cada pequeña funcionalidad que esté lista pase a producción de manera inmediata, se “mergee” (se integre) con el código existente y se despliegue a producción sin que se rompa ninguna parte del programa. 

Para ello, se configuran una serie de pipelines o circuitos de pruebas y automatizaciones que hacen las verificaciones necesarias sin las que tu código no puede salir. Herramientas como Jenkins, Bitbucket o Gitlab son de las más utilizadas. 

Esto forma parte de la filosofía DevOps, donde se aúnan buenas prácticas de despliegues y operaciones para que los desarrolladores puedan ser más autónomos y evitar fricciones entre equipos. 

DevOps: ¿qué es?

Verás DevOps por todas partes. Todas las empresas buscan “DevOps” o incluyen prácticas de DevOps en sus equipos. Pero, ¿qué carallo es eso de DevOps?

Para empezar, el término proviene de mezclar dos disciplinas cercanas, pero que en muchas empresas se separan: Dev (Development) y Ops (Operaciones). En muchas compañías, se separan los equipos que desarrollan de los que ponen ese software en producción. Tú desarrollas y yo veo que tu código no rompe nada del programa que ya hay en funcionamiento y lo despliego. 

Pero esta forma de hacer las cosas ha causado mucha fricción siempre entre estos dos equipos. Imagínatelos tirándose de los pelos porque los devs pasan código lleno de errores y sin testear y los de operaciones te echan el código para atrás porque no lo pueden “mergear” con lo que ya hay porque lo rompe todo. Saltan chispas, ¿verdad?

De ahí surge la filosofía DevOps. Y esto es pregunta de examen: DevOps no es un rol o una posición, es una filosofía de desarrollo. 

Verás ofertas de trabajo que piden un DevOps, es normal, incluso nosotros lo utilizamos a veces como rol, pero es incorrecto. Aunque el sector lo ha asumido casi como un rol… 

La filosofía DevOps pretende reducir la fricción entre los equipos de desarrollo y los de operaciones. Se trata de diferentes prácticas y metodologías que ayudan a los desarrolladores a ser más autónomos y mejores, empoderándolos con herramientas que les permitan necesitar tanto a la gente de operaciones. Y como filosofía, evoluciona conforme evoluciona el sector. 

Una cultura DevOps en una empresa ayuda a tener un código más escalable, tolerante a fallos y robusto, evitando caídas de las aplicaciones. 

Y algunas de las prácticas más utilizadas en DevOps son: la clusterización en contenedores (docker y Kubernetes), la automatización de los despliegues y la entrega continua de valor (CI/CD) o la ampliación de infraestructura automatizada con la aparición de cloud (AWS, Azure, etc.). 

Que no te explote la cabeza, es un mundo muy nuevo y muy cambiante. Y es complicado. Poco a poco te irás haciendo con la jerga y las herramientas. No desesperes 🙂 

Agile y scrum: ¿qué es?

¿Cómo hacen los equipos de desarrollo de software para organizarse? ¿Cómo evitan hacer el mismo código, desplegar el código en el tiempo establecido o resolver grandes problemas técnicos? 

La respuesta es sencilla: dividiéndolos y troceándolos. 

Normalmente, un gran desarrollo se divide en tareas y subtareas que se van asignando a las diferentes personas que componen el equipo, de esta forma, el reto es mucho menor y se puede avanzar más rápido. 

Existen muchas metodologías que ayudan a los equipos a poder mantener un flujo de desarrollo estable: habrás escuchado alguna vez Kanban, o habrás visto en alguna oferta Scrum

Son formas de trabajar y de organizarse. Por tareas, por roles, por proyectos, por tiempos, por entregas, etc. Hay muchas formas y cada compañía o equipo tiene la suya. 

Muchos equipos se organizan en función de “sprints”, que son periodos de tiempo normalmente de 2-3 semanas. También se les puede llamar iteraciones. Si hablamos de metodología Scrum, al final de estas iteraciones suele haber una retrospectiva donde se comparten aprendizajes o se reajustan los tiempos. 

Y la forma más habitual de mantener el contacto y el control sobre los problemas del día a día son las dailys, pequeñas reuniones de no más de 30 minutos, divididas por equipos donde cada persona comenta sus bloqueos, sus hitos o sus tareas principales del día. 

Hay mucha más terminología en el mundo del software, pero la irás descubriendo poco a poco. Esto son solo algunos términos que te ayudarán a entender mejor las ofertas de trabajo y a poder formarte mejor para ir cogiendo experiencia. 

Y sobre todo, cuanta más información tengas, mejor podrás escoger tu propio camino en este mundo tan enrevesado 🙂 

Publicado el 8 de mayo de 2023, por Borja Pérez
¡Súbeme!