Destacado, Especiales, La Aldea y el Mundo, San Luis

La programación en tiempo de las IA

Alicia Bañuelos

El mundo afronta una profunda transformación impulsada por la cultura digital, en la cual, tanto el pensamiento computacional como la programación tienen un rol fundamental siendo la base para nuevos modos de relaciones sociales, construcción de conocimiento y desarrollo de la ciencia, entre otras tantas transformaciones. Estos campos emergentes fomentan el surgimiento de nuevas tecnologías que intercambian conocimiento entre lo físico y lo digital, avanzando hacia la cuarta revolución industrial.

La irrupción de ChatGPT en 2022 trajo a muchos falsos profetas que aseguran que en el futuro no serán necesarios programadores, porque alguna IA podrá resolver el problema. Primero debemos aclarar que, para implementar una solución a través de la codificación en algún lenguaje, requiere primero entender el problema a resolver con máxima claridad y sin ambigüedad y segundo encontrar una solución utilizando ingenio, creatividad, conocimiento y experiencia.

Traducción del tuit del doctor Milan Milanovic: Para reemplazar a los programadores con IA, los clientes necesitarán describir con precisión lo que quieren. Estamos a salvo.

La definición precisa del requerimiento forma parte del trabajo que se realiza mucho antes de codificar.

La IA no puede crear software, puede crear código. La creación y el mantenimiento de software tienen muchas variables implicadas y las reglas se basan en decisiones de criterio. El software rara vez está finalizado porque se añaden características y se corrigen errores en un ejercicio continuo.

El artículo titulado “Coding on Copilot: 2023 Data Shows Downward Pressure on Code Quality, Plus Projections for 2024” analiza el impacto de GitHub Copilot, un asistente de programación impulsado por inteligencia artificial, en la calidad del código.

Desde su lanzamiento en 2021, Copilot ha crecido rápidamente y ha sido adoptado por millones de desarrolladores. Aunque facilita la escritura de código más rápido (hasta un 55% más rápido, según GitHub), también plantea serias preocupaciones sobre la calidad y mantenibilidad del código generado.

Para investigar, GitClear recopiló 153 millones de líneas de código cambiadas entre enero de 2020 y diciembre de 2023. Este es el mayor conjunto de datos conocido que se ha utilizado para evaluar las diferencias en la calidad del código, estas son las conclusiones:

1. Aumento de la “churn” o rotación del código: El porcentaje de líneas de código que se revierten o actualizan dentro de las dos semanas de haber sido escritas se ha duplicado en 2023 en comparación con los niveles de 2021. Se proyecta que esta tendencia empeorará en 2024.

2. Incremento en el código copiado y pegado: Un mayor número de líneas de código creadas en 2023 están basadas en el copiado y pegado en lugar de la reutilización o refactorización. Esto puede generar problemas futuros en la mantenibilidad del código.

3. Menor refactorización: La cantidad de código movido o reorganizado (una señal de refactorización) ha disminuido significativamente. Esto sugiere que los desarrolladores, en lugar de optimizar el código existente, están generando nuevo código a un ritmo alarmante.

4. Diferencias entre desarrolladores juniors y seniors: Los desarrolladores menos experimentados son más propensos a aceptar sugerencias de Copilot, lo que podría estar contribuyendo al aumento del código de baja calidad.

Problemas con el código generado por IA:

● Las herramientas como Copilot tienden a sugerir la adición de código, pero rara vez recomiendan la actualización, el movimiento o la eliminación de líneas existentes, lo que agrava la acumulación de “deuda técnica”.

● Aunque se escribe más código en menos tiempo, la calidad del mismo se ve comprometida, lo que podría generar más errores en producción y mayores costos de mantenimiento a largo plazo. Conclusión: si bien el uso de IA para escribir código está en auge, hay claros indicios de que este enfoque puede estar erosionando la calidad del código a largo plazo. Las organizaciones deberán centrarse en estrategias para gestionar esta tendencia y garantizar que el código generado sea sostenible y fácil de mantener.

Más que nunca es necesario lograr que niños, adolescentes y adultos aprendan a desarrollar tecnología. La innovación tecnológica tiene un papel clave a la hora de mejorar el desarrollo económico y facilitar la inclusión social. Estos cambios tienen su correlato en el mundo de la educación y el trabajo.

La cultura digital se sustenta sobre sistemas digitales, cuya existencia depende de la programación. La incidencia de los sistemas digitales en distintos ámbitos sociales es cada vez más frecuente, y lo seguirá siendo en el futuro, por eso que la programación resulta una disciplina fundamental en la educación en todos sus niveles.

La integración de este campo de conocimiento permite a los estudiantes desarrollar habilidades fundamentales para solucionar diversas problemáticas sociales, crear oportunidades y prepararse para su integración en el mundo del trabajo.

San Luis implementó desde 2017 el plan Programadores 4.0 que tuvo como objetivo que niños, adolescentes y adultos adquieran las habilidades necesarias para ser “hacedores de tecnología”.

Desde 2019 se incluyó un plan de formación en la enseñanza de la programación para docentes.

La cuarta revolución industrial avanza exponencialmente y se necesitarán cada vez más expertos en programación, comunicaciones, robótica, inteligencia artificial. Para lograrlo, es fundamental contextualizar y dirigir políticas públicas específicas de acuerdo con estos análisis.

Aprender a programar tiene innumerables ventajas porque desarrolla habilidades para resolver problemas lógicos incrementando la creatividad y el pensamiento crítico.

Los jóvenes son usuarios privilegiados de la tecnología con multitud de finalidades, pero, al mismo tiempo, necesitan ser acompañados para ir más allá de los usos meramente recreativos y sociales y desarrollar las competencias sociales y laborales.

Los que aprenden a programar tienen mayores oportunidades de empleo, y una mayor capacidad de adaptación al estilo de vida actual.

El mundo depende de la tecnología cada vez más y es fundamental adquirir diversas comprensiones acerca de cómo funciona y cómo hacer que funcione para ellos.

Algunos objetivos para la enseñanza y el aprendizaje de la programación

1. Utilizar sus conocimientos de programación y aplicaciones derivadas como la robótica e IOT, como herramientas para comprender, conocer y valorar el poder de transformar constructivamente su entorno social, económico, ambiental y cultural, y para situarse como participantes activos en un mundo en permanente cambio;

2. Aplicar la abstracción, la lógica, los algoritmos y la representación de información tanto para la resolución de problemas como para la evaluación de programas, y para combinar programas escritos en diferentes lenguajes de programación;

3. Identificar problemas que puedan resolverse mediante la lógica de la programación, recurriendo al análisis crítico y haciendo una utilización apropiada de estructura de datos;

4. Incrementar la comprensión acerca de la influencia de la innovación tecnológica, la imposibilidad de la neutralidad de la tecnología y

5. Desarrollar sus habilidades e iniciativa propia para resolver problemas y crear oportunidades relacionadas con el mundo del trabajo, la producción, la ciencia, la tecnología y las artes.