Mi experiencia como ingeniero de software

Mi experiencia como ingeniero de software

La nostalgia…

Hace unos días atrás, reflexionaba de cómo han pasado los años desde que me gradué como técnico superior en informática. Cuando empecé la universidad por allá en 2009, el primer lenguaje de programación que vi fue Pascal, un lenguaje muy didáctico pero bastante anticuado inclusive para ese año que corría. En mi casa tuve la suerte de que en la biblioteca había un ejemplar del libro de programación Pascal del autor Joyanes Luis Aguilar.

Gracias a dicho libro, algunos consejos de mi padrastro que sabía de programación y mucho de matemáticas y el tiempo libre que me podía permitir para invertir solamente en estudiar, pude picar bastante código con ese lenguaje. Contar con ese libro me hizo entender conceptos base de la programación, que hasta hoy día sigo aplicando sin darme cuenta, como por ejemplo, el inicio y fin de un bucle y en última instancia recuerdo lo asombroso que fue para mi conocer el algoritmo de ordenamiento llamado burbuja, entre otros tópicos que se ensamblaban en mi cabeza que veía en clases.

En el segundo año del técnico vimos un lenguaje de programación distinto por cada cuatrimestre, el primero fue de Javascript y Html, el segundo fue PHP y el tercero de Java. Para esa época yo aún era una persona muy adolescente, en consecuencia adolecía de muchas cosas del ser y la personalidad, uno de los grandes dilemas que tenía era la gran pregunta de ¿Por cuál rama irme? Si la informática es tan amplia además de la programación.

El dilema…

Considero que cuando estamos en proceso de formación y estudios, en primer lugar al desconocer lo que no conoces, puedes llegar a tener el sesgo que los contenidos que has visto en libros y que te dictaron en clases de la universidad son suficientes para enfrentarte al mercado laboral, en segundo lugar es un tanto angustiante escoger qué camino tomar, por ejemplo si ser Programador Web (implica saber un poco de todo lo relacionado a tecnologías del lado del cliente y del servidor) en Ruby on Rails o PHP y Javascript vanilla (lo más común en ese entonces que estudiaba), ser un Programador para Android, dedicarte a ser un Administrador de redes u otras opciones y roles que me quedo corto al listar.

Al estar a punto de graduarme conseguí un trabajo a medio tiempo en un instituto de investigaciones, donde pude aplicar lo poco que sabía y manejaba del lenguaje de programación PHP, para entonces el lenguaje estaba en la versión mayor 5 , permitiéndome así afianzar mis conocimientos y tener una primera experiencia en terreno real. Seguido de eso, aprendí a usar un framework llamado Laravel y también conocí lo que era el control de versiones con Git , que en ese tiempo te veían extraño si proponías usar algún framework, ya que el orgullo estaba en la típica frase “yo tengo mi propio framework”. Esto fue logrado a que tuve suficiente autonomía para investigar y aplicar con criterio la tecnología para un nuevo desarrollo que me fue encargado.

El pasar de programar sin una estructura clara en un lenguaje de programación sin tipado fuerte, a programar con un marco de desarrollo ( framework ) fue un cambio disruptivo para mí, ya que siempre me había entusiasmado por las ideas que hoy le llamo buenas prácticas, que corresponden simplemente a usar estándar para nombrar archivos de código fuente, usar convenciones sobre configuraciones, utilizar las características más nuevas y seguras que proporciona el lenguaje, aplicar el DRY (Do not repeat yourself), administrador de dependencias, entre otros.

Un tiempo después, ya trabajando en otra empresa, y habiendo conocido el camino (buenas prácticas, nuevas tecnologías, librerías, frameworks aprendidos por mi cuenta, entre otros), choqué un poco con las creencias que se tenían en la empresa, puesto que estaba el típico refrán “siempre lo hemos hecho así” en pocas palabras era seguir usando PHP versión 4 que estaba desaconsejado su uso por razones de seguridad, no aplicar uso de frameworks que faciliten y disminuyen horas de trabajo, penalizar el uso de librerías de terceros o características nuevas soportadas por el lenguaje, entre otros.

En vista de dicho escenario, me puse de inmediato a buscar nuevos horizontes laborales, haciendo networking, durante ese tiempo me había estado interesando por aprender Java, ya que me llamaba mucho la atención los desarrollos empresariales, y Java como lenguaje de programación es bastante ordenado y definido donde van las cosas (aunque sea el lenguaje que sea, siempre puedes hacer un spaghetti de código). La búsqueda tuvo frutos y logré empezar a trabajar para una institución financiera, un banco.

La definición…

Digamos que conseguí un lugar donde durante 2 años no paré de aprender, donde las personas con las que trabajé te cargaban de energías, y bueno no voy a decir que todo era color de rosas, pero este último punto es tan importante como todo el conjunto de aspectos que uno como persona y como profesional tiene que ver a la hora de tomar un empleo y decidir quedarse o no.

Yo era un total novato en Java, además me encontraba estudiando la Ingeniería por las noches, en el banco me brindaron la oportunidad de tomar el nuevo lenguaje como mi lengua materna, aplicar y aprender un montón de temas no tanto relacionados con la herramienta sino con el diseño y arquitectura de aplicaciones de gran escala y de índole empresarial, y en ese sentido eso me permitió crecer un montón como persona, fue la etapa que estás definiendo nuevas estructuras, creencias como adulto, dejando atrás tus posturas características de adolescente.

Tuve la ocasión de dirigir equipos de trabajo, hacer seguimientos y aunque fue por corto tiempo, tales responsabilidades me brindaron un empujón gigante, que no corresponde solo a saber perfectamente los aspectos técnicos, sino a desarrollar otras áreas que son importantes y muchas veces subestimadas por los informáticos, que es aquello que llamamos “habilidades blandas”.

Existe un libro de crecimiento personal que suelo recomendar, que se llama Los 4 Acuerdos , en él se explican 4 consejos simples que son bastantes rescatables para este último punto que acabo de mencionar, son los siguientes: se impecable con tus palabras, no te tomes nada de manera personal, no supongas y haz siempre lo máximo que puedas.

La madurez…

En perspectiva, tuve el privilegio de la experiencia de emigrar a otro país, por lo que tuve que valerme de mis habilidades para conseguir trabajo en las nuevas latitudes a las que me había mudado, allí puedo decir con bastante propiedad que en el mundo super conectado que vivimos hoy, las redes sociales son valiosas por el concepto de Networking , considero que me ha facilitado el cambiarme de empleo en estos últimos años, aplicando las reflexiones anteriormente dichas.

En el camino, me he topado con muy buenos compañeros de trabajo que posteriormente se han vuelto buenos amigos, no todo es picar código en este mundo, hay varios puntos que pueden potenciarte como profesional, siendo el caso que cuando eres novato y si la estadística lo permite, te consigues con personas que quieran enseñarte como funcionan las cosas en la organización que te encuentras.

Considero que en esta etapa que me encuentro, que algunas empresas llaman Seniority, en verdad creo que uno es un eterno aprendiz, en mi opinión lo que diferencia un Junior de un Senior, además de los años de experiencia, es que sabe ver la película completa y la lógica que implica para los dueños del negocio el software que se está desarrollando, al menos cuando era novato este punto me costaba verlo, porque me iba estrictamente a lo técnico de la herramienta a usar para resolver una pequeña parte del problema.

En la informática 3 años por poner un número, suponen bastantes cambios, que contemplo que en otras profesiones quizá este ritmo no es tan depredador, sin embargo esto no tiene porque verse como algo del todo malo, sino por el contrario, es una invitación constante a estar siendo retado para no quedarse obsoleto. He de trabajar un poco más el aspecto de enseñar, ya que enseñar es una de las mejores formas para fortalecer lo que sabes.

Hace aproximadamente un año de cuando escribo este artículo, en la empresa actual para la que trabajo me invitó a estudiar para aplicar a la prueba de conocimientos de Oracle Certificate Associate Java 8 , y desde que alcancé ese hito, me he dado cuenta que como dice un amigo mío, el asunto de las certificaciones se ha tornado como obtener las medallas de los gimnasios Pokémon de la serie animada de los 90, agradezco enormemente que una empresa me entusiasme a estudiar e invierta capital en mí para hacerlo, tiene un impacto, un antes y un después, en formalizar conocimientos que uno puede dar por sentado pero que no necesariamente tiene sobre una herramienta que viene ocupando hace mucho tiempo.

El futuro…

Considero que en mi camino como desarrollador, todavía tengo muchos años por delante en los cuales definir una hoja de ruta que me resulte satisfactoria, desde la perspectiva de la estabilidad la pregunta a continuación es ¿Me inclino por aprender los skills necesarios que me vayan perfilando para ser arquitecto? o por otra parte ¿Llevo mi rol de desarrollador al ámbito Cloud Native? Es sabido que el mundo de las tecnologías de computación de la nube están actualmente en boga y toda la tendencia se dirige hacia allá.

Es difícil saber qué pasará en 10 años, en este último rato y tiempos de pandemia he buscado cultivar algunos proyectos personales, como este de escribir un blog de tecnología y programación, finalmente el tiempo dirá qué decisión terminaré tomando para responder a las preguntas que me plateo.

Algunos consejos…

  • Escoge una tecnología con la que te sientas cómodo y entusiasmado, practica los conocimientos obtenidos de diferentes formas, videos, libros, clases que tu profesor tuvo el agrado de dictar, etc. Una vez ya manejes un lenguaje y los conceptos básicos de este, apuesta por adentrarte en el framework más famoso hecho en ese lenguaje que escogiste y continúa enriqueciéndote.

  • Mantente siempre alerta para buscar nuevas oportunidades de crecimiento, lo que implica el cambiarte de empleador, esto puede representar un giro personal y profesional valioso para tu persona. El aprender a detectar cuando un ambiente laboral se ha tornado tóxico para ti es vital, mantenerte actualizado en los temas que van suscitándose alrededor de la tecnología que manejas como también otras alternas es positivo para ser flexibles y abiertos al cambio.

  • En el camino profesional no solo es importante conocer los aspectos técnicos a detalle de las herramientas que usas, sino también empoderar esa otra parte de ti como ser humano y tus relaciones interpersonales, que permiten obtener resultados más enriquecedoras para ti y el entorno que te mueves y trabajas, como informáticos podemos llegar a creer que solo es importante saber hablar con la máquina, pero resulta necesario aprender a comunicarte asertivamente, con inteligencia emocional para brindar y obtener lo mejor de las personas.

  • Cultivar relaciones más allá de lo profesional, se pueden conseguir grandes amistades que tuviste el honor de toparte en el trabajo, asimismo ocupar la tecnología para fomentar ser atractivo para los reclutadores, te dará una gama de opciones donde elegir trabajar y por último tener la actitud de un aprendiz eterno, puesto que en este negocio siempre puedes quedarte obsoleto.

Palabras finales…

Si has llegado hasta aquí, pues agradezco mucho el tiempo y espero tu comentario, para mí ha sido genial escribir estas palabras, espero que puedan servir de guía a quien está recién llegando a la informática y pueda sentirse perdido como yo lo estuve.