Introducción fuera del tema
Me gustaría empezar dándoles la bienvenida. Esta es la primera entrada de nuestro blog personal. Aunque sea un poco fuera del tema, me gustaría mencionar que nuestro blog será un poco más personal y libre. Justamente por eso Silver y yo tendremos un blog dedicado a cada uno. No somos personas muy a fin a las redes sociales con el uso que tradicionalmente se les da, por lo que no esperen ver entradas constantes.
Lo que sí les puedo decir de mi parte, es que probablemente me incline a tener mayor preferencia por publicar en este blog que en mis redes sociales personales, así que probablemente sea el lugar en donde más puedan saber sobre mí. Principalmente mi forma de pensar y a qué dedico mi tiempo. Mi idea es no utilizar modelos de lenguaje (más conocidos como Inteligencias Artificiales de texto generativo) para escribir las entradas del blog y de hacerse, se dará aviso explícito. La razón de evitar la inteligencia artificial para la escritura de las entradas del blog es simplemente para mantener el objetivo principal, el cuál es tener un entorno más genuino y personal.
¿De qué trata esta sección del blog?
Primeramente me gustaría mencionarles a los que no lo saben, que yo formalmente soy informático y es lo que estudié en la Universidad. Como cualquier persona, yo no lo sé todo y de hecho me considero un aprendiz (y probablemente me seguiré considerando como tal por mucho tiempo), así que esta sección la creé para documentar mi aprendizaje en el ámbito de la programación.
Me gustaría mencionar desde ya el enfoque que tendrá el aprendizaje que documentaré. Mis conocimientos principales son enfocados en Java, programación orientada a objetos y C#. Con este conocimiento, se podría decir que mis habilidades actuales son enfocadas a aplicaciones y herramientas de escritorio y backend web. A pesar de esto, no es el enfoque que me gustaría tener en mis conocimientos como programador. A lo que me gustaría orientarme principalmente sería al bajo nivel y a aplicaciones no orientadas a los negocios.
Tengo tres razones personales principales:
1. Dado a que a día de hoy mi enfoque principal como informático es la ciberseguridad de sistemas operativos, entender cómo funcionan
las herramientas, procesos, estándares y estructuras sobre las cuáles estan construidos los sistemas operativos,
es imperativo de mi parte que entienda cómo funcionan las vulnerabilidades a nivel de código.
2. La mayoría de herramientas de las cuáles me gustaría estudiar su código, estan escritas en lenguajes de bajo y medio nivel como
C, C++ o Rust.
3. Los estándares que me gustaría implementar a nivel de código se encuentran principalmente en lenguajes
de bajo nivel.
Los estándares que me gustaría implementar a la hora de enfocarme al bajo nivel son los siguientes:
1. Código abierto y auditable.
2. Código legible y bien documentado.
3. Código seguro y que encapsule fallos de manera correcta.
4. Código minimalista, no inflado y que tenga una superficie reducida.
5. Código eficiente y portable, que pueda ser utilizado en el sistema que el usuario prefiera.
Si lo pudiera resumir vulgarmente, diría que me interesa crear software no solo poniendo atención, de manera industrial, solo en el resultado final visible, si no, que el código esté lo mejor hecho posible. La idea es mostrar cómo llevo este aprendizaje sin utilizar inteligencia artificial y aprendiendo a la vieja escuela.
Problemas al aprender a programar en la era post-IA
Con el pasar de los años, el internet se ha estado llenando cada vez más de información generada con LLMs. Esto no quiere decir que la única información, de la cuál, podemos asumir que es 100% veráz, es la que fué escrita antes de que se publicara ChatGPT, esta afirmación sería muy reduccionista. Lo más razonable es entender que antes de que los LLMs se empezaran a utilizar masivamente, ya existía información falsa y a día de hoy sigue habiendo información verdadera creada con métodos y bases confiables.
Muchas personas que buscan eficientar su tiempo lo más posible, utilizan LLMs como un atajo para poder hacer más en menos tiempo. Esto a corto plazo da resultados sorprendentes, y como todos lo recordarán, al inicio parecía magia o hechicería. El problema viene cuando el fin último es crecimiento personal. Es muy obvio que si el objetivo es aprender algo en serio, aún así los LLMs pueden llegar a ser bastante útiles al inicio, con lo que parece al principio que los LLMs son capaces de educarnos en ámbitos completos y no solo trabajar directamente en ellos. Dije al principio porque el problema de usar estas herramientas, sale a la luz entre más empezamos a profundizar en un oficio.
La forma más sencilla de representar lo anterior de la manera más entendible posible es con un ejemplo en el mismo tema que aborda este blog. Si tenemos un objetivo o tarea concreta en donde necesitamos programar, si el objetivo último es terminar la herramienta lo más rápido posible, entonces podemos utilizar LLMs para "deshacernos" del problema de inmediato. De igual manera, también podríamos aprender el ámbito objetivo utilizando LLMs como apoyo. El problema viene cuando vemos que los LLMs llegan a cometer a lo que famosamente se conoce como "alucinaciones", en donde la herramienta inventa información sin bases que la respalden y hasta son capaces de cometer sofismo y manipulación para defender lo que afirman.
En estos casos, "lamentablemente", la forma más realista de aprender, es hacerlo de las formas conservadoras. Estudiar informática de la forma conservadora sería, en resumidas cuentas, sentarse a leer un libro, los man pages o directamente leer nuestro propio código o el código ajeno y ser nosotros mismos, la "herramienta" capaz de programar.
A lo largo de este blog, mostraré y documentaré mi proceso aprendiendo a programar en los estándares establecidos como meta anteriormente sin poner una fecha ni tiempo límite.
¿Por qué hago esto?
Sería mentira de mi parte si digo que lo estoy haciendo para beneficio ajeno, principalmente lo hago como una metodología interesante para hacer el aprendizaje más dinámico. Aún así, pienso que dependiendo de como se desarrolle este proyecto en el futuro, puede que sea útil para cualquier persona intentando aprender programación en un mundo en donde la respuesta correcta casi siempre parece ser recaer en utilizar LLMs para acortar el proceso lo más posible.
Estamos en una época en donde todos podemos tomar la elección de aprender. Todo aquel que decida dar provecho a las herramientas de las que disponemos para aprender, es bienvenido. También me gustaría dar bienvenida y felicitaciones a todas las personas que son capaces de leer más de 5 oraciones en el 2026.
Nota: Puede que haya errores de escritura, como pueden ser ortográficos o estructurales. Eso está completamente bien, no me las estoy intentando dar de sabio, ni de referente intelectual, esto será un proceso hecho para ser más personal.