Ir al contenido principal

To chatgpt or not to chatgpt

Algunos días me levanto con ganas de escribir más que solamente un par de líneas. Este es uno de esos días. Me gustan mucho esos días en los que te sientas a escribir y solamente comienzan a aparecer una tras otra las palabras. A veces pasa porque tenemos muchas cosas en la cabeza, a veces pasan porque tenemos un tiempo para nosotros, a veces solamente pasan.

Chino avanzado

Hace más de 22 años que doy clases en la universidad. Clases de programación III, también antiguamente conocida como Estructura de Datos. Esta materia es una de las materias filtro para el área de programación. Si, por estas latitudes algunas materias son filtro; es para no decir que son un poco más difíciles que el resto de las materias en el semestre. En mi opinion todas las materias deberían ser materias filtro, o en el peor de los casos, una materia en el semestre podría ser la materia descanso; pero esa es discusión para una próxima entrega.

Esta materia tiene la particularidad que demanda desarrollar una competencia en la cabeza del estudiante. La frase en español, con la gramática y semántica del español debe ser traducida a una serie de pasos en un algoritmo, en una secuencia de pasos escritos en un lenguaje de programación. Básicamente el estudiante aprende a traducir las ideas que tiene en el lenguaje natural al lenguaje de programación que se haya elegido para la materia. El desarrollo de esta competencia implica romper en la cabeza ciertos esquemas propios del lenguaje natural e implica acostumbrarse a ver una idea desde el punto de vista del lenguaje de programación.

Vamor a ir a un ejemplo sencillo. La entrada es nuestra frase en lenguaje natural. Para este ejemplo la entrada será: 

"Quiero obtener la suma de los primeros n números naturales."

Eso vamos a traducir de la siguiente manera, lo que aparece después de la bdoble barra (//) son comentarios para entender lo que se hace en cada línea de código:

  int n;        // n es el número que tendrá el número hasta el cual debemos sumar.
  int suma = 0; // suma tiene el resultado que estamos buscando, lo vamos a construir de a poco  
  
  for(int i=0; i<=n; i++)   // Este bloque se repite n veces, en cada vuelta i toma un valor de 0..n
  {
  	suma = suma + i;    // Se va construyendo la suma, número por número 
  }
  
  // Esto imprime el n y la suma de los números
  System.out.println("La suma de los primeros {} números es {}", n, suma);

 Como se puede observar el hecho de entender la suma como algo que se debe repetir para ir formándolo de a poco no es muy intuitiva para todos los tipos de cerebro que se ve en clases. Por lo tanto es algo que se fuerza en el cerebelo del estudiante con repetidos accidentes de programación. Frustrantes momentos que pasa el estudiante hasta lograr que el código haga lo que el estudiante quería que haga. Mejor dicho, hasta lograr que el código haga lo que el estudiante entiende que le pidieron que haga.

Una forma de acercar el cerebro a esta forma de pensar son aquellas materias de primer año que suelen causar alergias mentales en los jóvenes: Cálculo I, Algebra I. Entender el proceso para resolver las derivadas, integrales, etc; es algo que no es natural ni es intuitivo. Algunos tienen la suerte de que su cerebro; o ya funciona así, o tiene práctica funcionando así. Entonces para ellos estas materias suelen resultar algo intuitivas y naturales. Pero para la gran mayoría esto se asemeja a aprender sánscrito.

Han pasado 30 años desde Cálculo I y puedo decir, sin temor a equivocarme, que he usado los conceptos del cálculo diferencial, para mi vida profesional, en exáctamente CERO ocasiones. Peor aún Cálculo II, Ecuaciones Diferenciales, Variable Compleja, etc. Lo cual nos lleva a un pensamiento, este sí natural, "para qué?". Porqué las universidades se esfuerzan en enseñarnos cálculo diferencial a los que estudiamos ingenierías y ramas técnicas; si se usa en raras ocasiones.

Se le prendió el foquito

No hay manera de que la universidad conozca la totalidad de problemas que el profesional deberá solucionar durante su vida profesional. Y más temprano que tarde, en el trabajo, nos tocará enfrentarnos a lo desconocido. El sentimiento que debemos tener es de cuando a un piloto comercial lo llevan a pilotear un avion de guerra. Ese sentimiento, es muy diferente al de un pasajero de avion comercial que le dicen que tiene que pilotear el avión. Lo que para algunos es una posibilidad; para otros puede ser una imposibilidad que les despierta un pavor exacerbado que se traduce en episodios de estrés extremo que pueden ser peligrosos para su salud.

En otro contexto, una persona preparada para un contexto, es muy probable que pueda resolver problemas nuevos del contexto por el estudio, la preparación, y la experiencia que tiene en ese contexto. En esos momentos esas personas parecen tener una inteligencia fuera de este mundo y la costumbre es decir que se "les prendió el foco". Que tuvieron una idea maravillosa, casi divina. Cuando la realidad es un proceso muy natural. El cerebro está con las conexiones sinápticas muy cercanas a las que se activan al resolver el problema. Las interacciones de neuronas funcionan con electricidad. Entonces, literalmente el cerebro se encuentra a contadas chispas de crear la interacción sináptica que logra resolver el problema.

Es esencial entender que la razón por la cual se estudian este tipo de materias es para cablear a nuestro cerebro de manera que podamos generar las uniones sinápticas que quedan muy cerca de resolver los problemas de un contexto en particular, de una ciencia en particular, de una carrera en particular.

Qué onda con el título?

Luego de muchos años de promesas académicas incumplidas acerca de la inteligencia artificial; es casi milagrosa la velocidad con la cual los actuales servicios de inteligencia artificial pueden resolver problemas. La revolución actual es muy parecida al momento cuando apareció Internet hace 30 años. La razón de estos párrafos es el impacto que veo en la educación universitaria. El uso de ChatGPT y otros similares es ahora bastante universal; incluso mi hija de 12 años lo consulta todo el tiempo para realizar sus tareas. En este 2025 se ha comenzado a ver algunos de los impactos de esta tecnología en la población joven sobretodo (que es la que lo utiliza).

  • Confianza absoluta en las respuestas de la herramienta: los usuarios, en general, están convencidos que las respuestas de la IA son correctas. Peor aún, los estudiantes de informática y sistemas lo usan sin revisión alguna.
  • La IA pendula el conocimiento de las personas: si la persona se apoya en la IA para replicar las respuestas; deja de practicar el cerebro y las conexiones sinápticas. Con tal bello motivo luego de algunos años su coeficienete intelectual habrá disminuido y no podrá apoyarse en su experiencia, ya que no tendrá ninguna.
  • La IA es un exoesqueleto para nuestro cerebro: si por el contrario la persona se apoya en la IA como un asistente entonces la percepción de los demás será de una mayor performance e inteligencia.
El reto está en lograr que las personas utilicen la IA como un exoesqueleto para el cerebro. Cuando estudiaba en la universidad recuerdo que una métrica interesante en los trabajos que realizaba para mis materias de programación era la de 400 a 500 líneas de código por día. Habían chicos que lograban casi el doble. Hoy en día con la IA se puede llegar a unas 3000 líneas de código por día; en un buen día. el problema es cuántas de las líneas de código generadas por la IA son comprendidas a cabalidad por los estudiantes. Pues en mi experiencia este último semestre, el porcentaje de comprensión del código generado por la IA es menos del 10%.

Esto genera varios problemas para el futuro del estudiante. Qué alternativa tenemos? Prohibir la IA para ciertas materias. En verdad parece un poco paleolítica la medida. No tener la práctica habitual de consultar la IA a modo de un asistente que nos apoya y a manera de acomodar nuestro cerebro a este exoesqueleto es una desventaja para cualquier generación actual y futura. Por el momento, en mi humilde experiencia, lo único parecido a una solución es lograr que los estudiantes generen las competencias de:

  1. Saber cómo preguntar
  2. Saber interpretar las respuestas
  3. Saber entender las respuestas
  4. Reconocer una respuesta errónea de una correcta
  5. Realizar las tareas 1 a 4 de manera más fluida y natural para mejorar la eficiencia

Enterradas en esas 5 competencias deberían estar las características y buenas prácticas de programación. En cada iteración el estudiante debe incluir en su razonamiento los conceptos de: escalabilidad, usabilidad, modularidad, testeabilidad; y mejores prácticas como los principios SOLID.

Y la pregunta continúa: 

"Cómo hacer para que el estudiante utilice la IA como un asistente y no como una biblia?"

En estos casos no hay milagros, no existen atajos, no se puede implementar osmosis cerebral. Las únicas recetas son las siguientes:

  • Insistir en el concepto de porqué se estudian algunas materias
  • Reforzar con ejemplos la necesidad de obtener las competencias que indica la materia
  • Sacar el mejor provecho de poder utilizar una herramienta como la IA para poder hacer cosas más rápido y mejor
  • Representar a los estudiantes cuando usan la IA en vez de utilizar sus conexiones neuronales
  • Repetir todo esto como un chakra (no confundir con chacra)

Para poder absorber la mayor cantidad de conocimiento en materias como programación la única manera es programando. No se puede aprender viendo videos, viendo programar al compañero, ni mucho menos copiando el código generado por una IA.

Un último detalle es la cantidad de veces que hay que repetir esto. Cualquier conocimiento nuevo, a estudiantes de 3er semestre de universidad, se puede repetir hasta 5 veces y seguramente ni la mitad del auditorio habrá asimilado. Incluso se puede ser chocante con los ejemplos, el impacto es mayor, pero no mucho más. 

Cuidemos a los estudiantes de ellos mismos con el uso de IA. El estudiante no debe auto remplazarse con el uso de la IA; el estudiante debe descubrir la manera de crecer, más rápido y mejor, con la IA. El objetivo es explorar y encontrar el mejor modelo de asociación con la IA que el estudiante puede tener para poder aplicarlo en su futura vida profesional.

Comentarios

Entradas más populares de este blog

Hangfire, si no lo estás usando, estás haciendo algo mal (.NET world)

Hangfire es una librería espectacular que permite encolar tareas en un servidor de tareas que funciona dentro de tu aplicación web. Existen varios tutoriales que muestran de manera bastante sencilla cómo puedes ir integrando esto a tu aplicación. En esta publicación vamos a repetir, pero en español, y sobretodo vamos a tratar de ir lo más al punto posible. Qué es? Es una librería que la cargas a través de NUGET como cualquier otra librería. En realidad tenemos que cargar 3 librerías pero eso lo veremos más adelante. Una vez que hayas cargado todo lo necesario en tu aplicación web tendrás lo siguiente: Un servidor de colas : es decir, un lugar al cual le puedes mandar hacer cosas y no se olvida de esas cosas y las va ejecutando a medida que puede o tiene tiempo. Esto es muy útil para que tu aplicación no pierda tiempo haciendo algo que no necesita realmente hacer en ese instante y devolver más rápido al usuario final. Un tablero de control de colas : una serie de ...

Nuget muy grande en tu carpeta personal

Problema : Veo que mi disco duro C ha crecido bastante y necesito espacio. Cuando veo que una carpeta .nuget dentro de mi cuenta de usuario tiene 15 GB. Solución : Esa carpeta existe como cache para que VS no busque el paquete cada vez desde la web. Entonces, la solución consiste en los siguientes pasos. Listar cuales son los folders o contenedores de estos paquetes nuget dotnet nuget locals all --list http-cache: <USER>\AppData\Local\NuGet\v3-cache global-packages: <USER>\.nuget\packages\ temp: <USER>\AppData\Local\Temp\NuGetScratch plugins-cache: <USER>\AppData\Local\NuGet\plugins-cache Limpiar las direcciones que tienen estos paquetes nuget con el utilitario de nuget dotnet nuget locals http-cache --clear Clearing NuGet HTTP cache: C:\Users\Vladimir\AppData\Local\NuGet\v3-cache Local resources cleared. y así para cada uno de los locals que se ve en la lista anterior. Luego se debe cambiar las variables de entorno para que esto no nos vuelva a pasar. Como se...

Con la vejez a cuestas, dos

 Indefectiblemente cuando se hace cualquier retrospectiva, uno no puede dejar de arrepentirse de algunas cosas. A veces lo decimos muy bajito y solamente lo escucha nuestro subconsciente; otras veces hasta lo escribimos. Pero en todo caso, siendo un poco sinceros con nosotros mismos, siempre tenemos esas astillas de arrepentimiento en diferentes ámbitos. Este cuento tiene que ver con el ámbito profesional, aunque está bastante influído por otros ámbitos en mi vida. Siempre sentí fascinación por lo lógico que se sentía programar. El poder entender las cosas de manera tan cristalina; de estar tan seguro que una cosa iba a funcionar muchísimo antes de que se pusiera la primera línea de código. Todas las piezas de lego se encuentran ante tus ojos y, con la ayuda de unas cuantas teclas puedes moverlas y ponerlas juntas, separarlas, volverlas dinámicas, cambiarles absolutamente todo. Es tan poco natural el ver el potencial de creación y no hacer nada. Así que lo más normal es ponerse a h...