Consejos para recién egresados en desarrollo de software

El día de hoy me gustaría compartir la primera parte de los consejos que me hubiese gustado recibir cuando empecé mi camino desarrollando software.

Consejos para recién egresados en desarrollo de software
Photo by Christina @ wocintechchat.com / Unsplash

Algunos de estos consejos me hubiesen venido bien al principio de mi carrera profesional y otros los descubrí antes de empezar y me siguen sirviendo ahora. Mucho de lo aprendido, ha sido gracias a experiencias propias y otros a experiencias de amigos y colegas que las adquirieron en el camino.

Además, antes de empezar, me gustaría aclarar que no tomes esto como una guía definitiva y que es probable que otros tengan conocimientos y situaciones diferentes, pero también válidas.

Te dejo el índice para que vayas a los que más te agraden:

  1. El mundo real y el stack tecnológico con el que deberías empezar.

El mundo real

Comencemos con algunas verdades:

  1. A las empresas les gusta hacer dos cosas: aumentar ganancias y reducir costos.
  2. Por lo que, normalmente, a tu empleador no le interesa que escribas código, le interesa el valor que le puedes ofrecer para maximizar el punto anterior.
  3. Debido a la importancia de maximizar el punto uno, casi todas las ofertas laborales son para mantener o desarrollar software empresarial.

Lo anterior es duro, pero cierto. Si tu idea era desarrollar una nueva distribución de GNU/Linux o ayudar en la creación de un nuevo lenguaje, no es imposible, pero sí muy difícil de lograr.

Stack tecnológico con el que deberías empezar

Me ha tocado estar en conversaciones con personas recién egresadas o con poca experiencia que preguntan o discuten sobre que lenguaje de programación o tecnología nueva tienen que estudiar. Yo te respondo: ¡no importa!

Lo importante es enfocarte en conceptos y aprendizaje que puede ser replicado en múltiples tecnologías. Pueden ser patrones de diseño o conceptos de estructuras de datos y algoritmos. Tal vez ni siquiera eso, tal vez quieres programar sistemas embebidos y probablemente no vale la pena aprender el libro de los GOF de memoria y si lenguaje ensamblador.

Mi recomendación: invierte en conocimiento que de rendimiento a futuro y apto para lo que quieres hacer. No podría decirte que conocimiento es el que buscas, pero si que no desperdicies mucho tiempo en tutoriales y side projects que a la larga, no te darán tanto conocimiento como tu esperas. Créeme, ya estuve ahí.

Logrado este punto, viene algo que es difícil de leer:

vintage telephone on the wall.
Photo by Pavan Trikutam / Unsplash

1. A la empresa no le importa tu stack tecnológico

Si, lo que leíste. A ellos no les importa. Yo sé que si lees los detalles de las oportunidades de empleo de múltiples empresas verás que requieren profesionales con mil conceptos técnicos. Pero tú y yo sabemos que el proceso está roto. Realmente lo que buscan es que los profesionales les den valor, por lo tanto, a tu empleador no le debería importar:

  1. Si sabes programar en go, en python o en java.
  2. El framework, tecnología, arquitectura o herramienta de moda.
  3. Mucho menos que la solución actual está mal implementada y no tiene código limpio. Recuerda, así como está ya les genera valor.

Desgraciadamente, producir software eficiente no es el objetivo por el que tú estás ahí. Tu objetivo es aumentar ganancias y reducir costos. Tú y yo sabemos que ser un artesano del software es lo ético (¡y nuestra responsabilidad si realmente queremos ofrecer esas metas al negocio!), pero a la empresa en la que trabajas, no le interesa.

2. No eres y no estás definido por el stack tecnológico que elegiste para resolver un problema

A mi me pasó, y me costó mucho darme cuenta. Antes la industria solía darle mucho valor a que fueras especialista en una sola tecnología, te encasillaba en la misma y debido a eso, no podías acceder a otras oportunidades de aprendizaje que usaban tecnologías diferentes.

Recuerda:

  1. Tu no (sólo) eres programador
  2. Te haces poco contratable en otros proyectos de desarrollo de software si te encasillas en un solo lenguaje o tecnología.

No quiero que pienses que soy negligente, pero aprender un lenguaje de programación (que no programar) es relativamente sencillo y si te enfocas en ser profesional, ético, y sobre todo de entregar herramientas y servicios de calidad, todo estará bien, aunque nunca hayas programado con anterioridad en ese lenguaje que la empresa te pide.

De lo anterior, poco a poco, las empresas se están haciendo conscientes, sobre todo porque los profesionales con talento (técnico y de negocio), son escasos. Por lo que, aunque en los procesos de reclutamiento siguen agregando la tecnología en la que vas a desarrollar, ya se busca más un rol agnóstico que alguien súper especializado.

Recuerda: un buen profesional tiene un historial de aumento de ingresos o reducción de costos y no es importante (o no debería serlo) el lenguaje de programación o tecnología que ocupó para ello. ¡No te encasilles técnicamente!

Photo by Sigmund / Unsplash

3. No seas (sólo) programador

El precio de cualquier cosa, donde cualquier cosa, te incluye a ti, es en función de la oferta y la demanda. Si en una entrevista de trabajo, te preguntan ¿que puedes ofrecer a la empresa? Y la respuesta es "programo/uso/conozco muy bien el lenguaje sexy de moda" vamos mal y te voy a decir porque: para bien (o para mal), cualquiera puede programar y eso nos incluye a nosotros y a miles más.

Sí, lo sé: tu perfil tiene que ofrecer soluciones usando y desarrollando tecnología. Pero sería bueno que te describieras por lo que has logrado en anteriores experiencias y si no has tenido la oportunidad, mostrar que tienes la capacidad de hacerlo.

De hecho, hay varias profesiones muy bien pagadas que escriben código, pero que no se describen como programadores en sus puestos de trabajo. Por ejemplo, conozco a una economista que desarrolla software basado en lo que conoce para tomar decisiones de alto impacto en su empresa.

Ahora, si la empresa (o la responsabilidad de tu nuevo rol) es 100% técnica, estoy de acuerdo que agregues que tu conocimiento tecnológico es excelente. De hecho, no está mal que te quieras especializar técnicamente (podría ser un lenguaje de programación, alguna librería, herramienta o nube) Conozco profesionales de software que son tan buenos en una tecnología que son contratados para temas de eficiencia en empresas ajenas a temas técnicos (¿te suena reducir costos en la nube?) Pero por segunda vez: ¡No te encasilles técnicamente!

4. Especialízate en uno o varios giros de negocio

El conocimiento de negocio te ayudará a encontrar más y mejor trabajo.  En mi caso, disfruté mucho de los temas de logística aduanera y en el área geográfica donde empecé a trabajar había muchos y muy buenos desarrolladores de software pero ninguno tenía experiencia en esos temas y aquellos que habían trabajado en ello, no sabían cómo explicarlo.

Conocer temas de negocio te ayuda a conseguir el siguiente buen trabajo. Y si tu motivación es el dinero, este punto ayuda demasiado. Mientras más apegado estés al negocio (y sepas como resolver problemas de este) más remunerado estarás.

Te pongo un ejemplo de la vida real:

Al jefe del departamento de sistemas le ofrecieron una cantidad de dinero extraordinaria para ser el líder de desarrollo dotnet en una secretaría gubernamental enfocada en aduanas. Su labor sería coordinar y establecer los parámetros legales y logísticos a nivel de negocio del nuevo proyecto.

Algunas personas que conozco saben mejorar procesos en diferentes giros (comercio electrónico, logística, finanzas, etc) usando tecnología (la de moda que tú quieras) y ahora gozan de puestos bien remunerados debido a lo que han hecho con anterioridad.

Conclusión

El día de hoy abarcamos unos cuantos consejos enfocados en la parte técnica, más adelante ahondaremos en soft-skills y otro tipo de consideraciones. Recuerda: