Mañana cumpliré 22 años. Gran parte de mi vida ha estado enfocada en la informática de algún modo u otro. Pensé que quizás podría contar un poco de lo que ha sido mi vida hasta entonces.
Descubriendo la Tecnología
Recuerdo que cuando era niño, mi padre un día me prestó una computadora de gran tamaño. Era una de esas antiguas con Windows XP instalado en ella. Me mostró lo que era el internet a muy corta edad. En cierto modo, siento que fue mala idea haber conocido tal cosa cuando no estaba ni en la pubertad, pero en parte me alegra porque desde entonces he tenido una gran curiosidad por “cómo funcionan las cosas”.
Fascinación por el Hardware
En un inicio, me llamaba la atención el hardware. ¿Cómo lograban meter un pequeño universo de píxeles dentro de una caja? Pero rápidamente empecé a sentirme más atraído por las formas que esos píxeles terminaban representando, esas ventanas o íconos que representaban algo en la pantalla.
Primeros Pasos en Programación
No tenía ni la menor idea del gran esfuerzo que había para hacer que tal cosa fuera posible. Un esfuerzo que tomó décadas de avances tecnológicos y varias mentes brillantes trabajando en ello. Lentamente, fui descubriendo más y más, hasta el punto de que casi nunca dejaba que nadie más usara el PC. Me pasaba horas y horas jugando, viendo videos o simplemente navegando por la web.
Luego de descubrir varias cosas que el internet podía entregarme, además de un montón de traumas, y a medida que iba creciendo y mis pasatiempos fueron cambiando, comencé a sentir interés por implementar esas mismas tecnologías con mis propias manos. Por ejemplo, empezar con algo pequeño, como un sitio web. Recuerdo que empecé con un tutorial de YouTube sobre HTML, CSS y JavaScript y creé un horrible sitio estático que solo tenía texto y algunos botones brillantes. También seguí algunos cursos de Platzi que me enseñaron algunas bases, pero para ese entonces había decidido que quizás esta área era lo que quería estudiar en la universidad y puse mi enfoque en ello.
También estudié en un colegio que tenía la especialidad de Telecomunicaciones, por lo que tuve la oportunidad de aprender un poco de electrónica y redes, aunque no me interesaba tanto como la programación o el software en sí. Fue divertido, pero también me ayudó a darme cuenta de que no era lo mío. No quería dedicarme a arreglar computadoras o instalar redes, quería crear cosas nuevas.
Decidiendo mi Futuro
Como la mayoría de jóvenes, se me encaminó que tenía que buscar alguna carrera para estudiarla y luego ejercerla por 40 años hasta que me jubile o muera. Por ende, estuve entre dos opciones:
- Ciberseguridad
- Ingeniería en Informática
¿Por qué esas dos opciones? Bueno, la primera opción me llamaba la atención porque me gustaba la idea de proteger a las personas de los malos de la película. O también la idea de ser un hacker ético y ayudar a las empresas a protegerse de los ciberataques. La segunda opción me llamaba la atención porque me gustaba la idea de crear cosas nuevas, de ser capaz de hacer que las cosas funcionen de la manera que yo quiera. También me gustaba la idea de ser capaz de crear mi propio software y venderlo a las personas.
Mi Elección
La primera opción tenía la desventaja de que en el país donde vivo, Chile, no tiene una carrera como tal de esa área. Existen más que nada cursos o diplomados que entregan ciertas bases para ello, pero, al menos en ese entonces, no habría mucho futuro si quería estudiarla profesionalmente. Con respecto a la segunda opción, la carrera en sí era muy solicitada. De vez en cuando, salen en los diarios esas comparaciones truchas que muestran los distintos roles que hay en el área para los que estudian esa carrera y cuánto ganan al cuarto año (poniendo sueldos que, según he visto, son irreales). Por ende, todos querían estudiarla para ganar una gran cantidad de dinero y así asegurarse la vida a futuro.
Decidí estudiarla en un instituto público y desde entonces fui aprendiendo varias tecnologías. Aunque lo que más me sirvió en sí fueron las bases o fundamentos que me permitieron ser capaz de aprender lo que sea. También me trajo un montón de malas experiencias, aunque también varias buenas, pero no me enfocaré tanto en ello.
El Aprendizaje Continuo
Algo que destacaría de mi vida en informática es que siempre estoy aprendiendo algo nuevo. Siempre hay algo que no sé y que me gustaría aprender. En cierto modo, es bastante agotador que siempre haya cosas nuevas, pero también es emocionante. Siempre tuve un hambre de conocimiento que me llevó a aprender cosas que quizás no necesitaba saber, pero que me ayudaron a ser quien soy hoy.
El primer lenguaje como tal que aprendí, al igual que muchos, fue Python, uno de los lenguajes más amigables que he visto. Empecé con las típicas aplicaciones de consola que hacen cálculos matemáticos o te preguntan tu nombre y te saludan.
Algo que me gusta de donde estudie, es que un profesor siempre usaba juegos para enseñar programación. Creo que es una de las mejores formas de enseñar algo, porque te entretienes mientras aprendes. Solía hacer listas con Pokémon y te enseñaba a recorrerlas, a buscar un Pokémon en específico, a ordenarlos, etc. Recuerde que tuve excelentes notas en esa asignatura.
Además, nos enseñaron las bases del modelado de datos, algo que me ayudó a entender cómo funcionan las bases de datos y cómo se relacionan entre sí. Pero apenas tocamos SQL en esa asignatura, dado que en los siguientes semestres tuve varias asignaturas que me enseñaron más sobre ello (Pero con Oracle, eww).
También tuve mis primeras experiencias con las áreas que odiaba, como la documentación. Oh sí, qué divertido es hacer un documento de 50 páginas sobre como haremos un programa que en realidad no haremos. O también hacer un diagrama de flujo en un programa más viejo que yo.
Luego continue el segundo semestre aprendiendo Java en una asignatura llamada “Desarrollo de Software de Escritorio”, muchos odiaron esa asignatura, pero a mí me encantó. Aprendí a hacer aplicaciones de escritorio con Swing y también a hacer aplicaciones con bases de datos. Fue una de las asignaturas que más me gustó en la carrera. Recuerdo que me emocione mucho cuando hice mi primer programa que se conectaba a una base de datos y podía hacer consultas a ella, de una manera muy fea, pero funcionaba.
Avance con mi conocimiento en SQL aprendiendo a hacer consultas más complejas, y en los siguientes semestres a hacer procedimientos almacenados y triggers con PL/SQL. También aprendí a hacer aplicaciones web con Django, un framework de Python que a primera vista me encantó. Usamos Bootstrap para el frontend y aprendí un poco de UX/UI, aunque no me interesaba tanto como el backend.
Gracias a Django Rest Framework, aprendí a hacer API REST y a consumirlas con JavaScript. Y ahí es donde brille, porque me encantaba hacer aplicaciones web interactivas.
Por mi cuenta, aprendí React, Node.js, Express, MongoDB, Docker y un montón de tecnologías más. También aprendí a usar Git y GitHub, algo que me ha salvado la vida más de una vez de los cagazos que me mandaba.
Mis primeros Errores
No todo es color de rosa, no se si han notado algo que he mencionado varias veces en este texto, ¿pero no creen que me enfocaba mucho en las tecnologías en si?
En ese tiempo (y aún sigue siendo así), en internet se veía mucho la idea de que si no sabías una tecnología, no eras un buen programador. Por ende, me enfoqué mucho en aprender tecnologías y no en aprender a solucionar problemas o especializar en algo.
Por ejemplo, ¿notaron que no mencione nada de arquitecturas de software, patrones de diseño, testing, etc.? Eso es porque no me interesaba en ese entonces. Solo quería aprender a hacer cosas y no me importaba cómo las hacía. En la universidad, me enseñaron esas cosas, pero no les di mucha importancia porque pense que eran irrelevantes.
Una vez vi una frase que me marcó mucho:
Creo que deberían dejar de aprender lenguajes y empezar a aprender a programar de una vez.
No soy muy fan de Тsфdiиg (en realidad no veo mucho sus vídeos), pero esa frase me hizo darme cuenta de que estaba enfocando mal mi aprendizaje. No necesitaba aprender más tecnologías, necesitaba aprender a programar de una vez. Aprender a solucionar problemas, a pensar de manera lógica, a especializarme en algo y no en todo.
Es gracioso porque esa frase vino de Twitter, ahora conocido como el sitio porno X, donde existe
una gran parte de toxicidad en informática (o en cualquier cosa en general).
Tuve que aprender desde cero un chingo de cosas para poder hacerlas bien de una vez. Por suerte, los recursos para ello sobran.
Obsesión
Un pequeño problema que tuve fue que genere como una obsesión por mejorar mis habilidades, hasta un punto algo enfermizo. Recuerdo que podía estar estudiando por horas, incluso más de 8, solo para terminar con un gran dolor de cabeza y una noche de insomnio. Y fue así por al menos tres semestres, donde genere una gran dependencia a la cafeína y a mantenerme siempre trabajando en algo productivo.
Si no trabajaba en algo, me sentía horrible, como si desperdiciara mi vida, como si todos mis sueños fueran a convertirse en polvo solo por no tener un solo día productivo.
¿Pero sirvió de algo? Bueno, tengo un montón de cursos comprados en Udemy y DevTalles, varios proyectos en mi pc, pero algo que nunca obtuve fue satisfacción. Siempre quería más. Nunca era suficiente. Siempre había algo que no sabía y que quería aprender. Y eso me llevó a un punto de no retorno. Algo de lo que me arrepiento mucho.
Impacto en mi Vida
A lo largo de mi vida, he tenido varios proyectos. Algunos los he terminado, otros los he dejado, otros los he perdido y otros los he olvidado. Pero todos me han enseñado algo. Al menos una cosa.
¿Qué he aprendido de todo esto? Bueno, he aprendido que la informática es un mundo muy grande y que no se puede aprender todo. Que siempre hay algo nuevo que aprender y que siempre habrá algo que no sabes. No necesitas saber todo, pero sí necesitas saber cómo aprender.
Y es curioso, porque a pesar de que he aprendido mucho, siento que no sé nada.
Últimamente, he estado aprendiendo sobre como crear interpretadores y compiladores. Algo que siempre he querido desarrollar, pero que nunca me había atrevido a hacer por miedo a no ser capaz de hacerlo. Me ha ayudado bastante seguir el libro de Crafting Interpreters, dado que enseña de una manera muy amigable para alguien que no tiene idea de cómo hacerlo.
También me he comprado varios libros sobre arquitecturas de software, patrones de diseño, entre otros.
En el fondo, creo que me gusta mucho la programación de sistemas, aunque también me gusta el backend cuando se trata de hacer aplicaciones web. Desarrollar aplicaciones de escritorio también me gusta, lo que no me gusta es el frontend, aunque me gustaría aprender más sobre ello.
¿Qué sigue?
No tengo idea de qué será de mi vida en el futuro. No sé si moriré mañana o si viviré hasta los 100 años. Pero lo que sí sé es que seguiré aprendiendo. Eso me mantiene vivo. Eso me mantiene feliz.
Al final del día, lo que importa es que uno sea feliz con lo que hace. Y yo soy feliz programando :)
Recomendaciones
Si estás empezando en la informática, te recomendaría que no te enfoques tanto en aprender una tecnología en específico, sino en aprender los fundamentos en sí. Siento que mucha gente se vuelve fanática de una tecnología en específico y la defiende a muerte incluso cuando no es la mejor opción para el problema que están tratando de resolver (te miro a ti, fanáticos de JavaScript).
También te recomendaría que no te obsesiones tanto con mejorar tus habilidades como yo lo hice. No trae nada bueno. Siempre habrá algo que no sepas y que quieras aprender, pero no necesitas saberlo todo.
Igual depende del enfoque que le quieras dar a tu vida. Si quieres ser un experto en algo, entonces solo trabaja en ello en vez de pensar «¿y si aprendo esto otro?», o si tienes miedo de no ser capaz de lograrlo. En esta área, la práctica hace al maestro. Y es verdad que el Síndrome del Impostor es fuerte, pero no dejes que te detenga. El tiempo pasa volando y no te darás cuenta de que desperdiciaste tu vida en cosas que no te gustaban solo porque tenías miedo de no ser capaz de hacerlo.