Artículo
· 9 hr atrás Lectura de 6 min

Pensamientos sobre programar con GenAI

Hace trece años, obtuve una doble titulación de grado en ingeniería eléctrica y matemáticas, y enseguida empecé a trabajar a tiempo completo en InterSystems sin utilizar ninguna de las dos. Una de mis experiencias académicas más memorables —y que más me revolvió el estómago— fue en Estadística II. En un examen, estaba resolviendo un problema de intervalo de confianza de dificultad moderada. Se me acababa el tiempo, así que (como buen ingeniero) escribí la integral definida en el examen, la introduje en mi calculadora gráfica, dibujé una flecha con la palabra “calculadora” encima y escribí el resultado. El profesor, conocido cariñosamente como “Dean, Dean, la máquina de suspensos”, me llamó a su despacho unos días después. No le hizo ninguna gracia que usara la calculadora gráfica. Me pareció injusto: al fin y al cabo, esto era Estadística II, no Cálculo II, y había hecho bien la parte de Estadística II… ¿no? Pues resultó que escribir “calculadora” sobre aquella flecha me hizo perder todos los puntos de la pregunta (aunque le sacó una risa a Dean); si no lo hubiese escrito, habría perdido todos los puntos del examen. Uff.

He recordado bastante este episodio últimamente. La inteligencia artificial generativa hace que mi TI-89 Titanium —decorada con pegatinas de estrellas por las buenas notas en mates en el instituto y modificada para jugar al Tetris— parezca un ladrillo de plástico caro. Bueno, lo era hace veinte años… y aún lo es.

  

Mi vieja y confiable TI-89 Titanium

Riesgos y normas

Con la llegada de entornos de desarrollo integrados (IDEs) con inteligencia artificial realmente buena, existe el potencial de que la IA pueda hacer el trabajo de un desarrollador de software principiante… ¿verdad? Si ese desarrollador principiante está usando Python —o algún otro lenguaje lo suficientemente común como para que los modelos hayan sido entrenados con él— entonces sí. Y si estáis cómodos con la deuda técnica de montañas de código que podrían ser auténtica basura —o peor aún, código mayormente correcto con pequeños fragmentos de auténtica basura escondidos— entonces sí. Y si tenéis algún medio místico para convertir desarrolladores principiantes en desarrolladores principales o arquitectos sin que escriban ni una sola línea de código, entonces también sí. Son muchas condiciones, y necesitamos establecer algunas reglas para mitigar estos riesgos.

Nota: estos riesgos son independientes de las preocupaciones sobre derechos de autor y propiedad intelectual que van en ambos sentidos: ¿estamos infringiendo código protegido por derechos de autor en los conjuntos de entrenamiento al usar el output de la IA generativa? ¿Estamos poniendo en riesgo nuestra propia propiedad intelectual al enviarla a la nube? Para este artículo, asumimos que ambas cuestiones están cubiertas por nuestra elección de modelo o proveedor de servicio, pero siguen siendo preocupaciones clave a nivel corporativo.

Regla #1: Alcance del trabajo

No uséis GenAI para hacer algo que no podríais hacer vosotros mismos, más allá o cerca de los límites de vuestra comprensión y capacidad actuales. Volviendo al ejemplo original: si estáis en Estadística II, podéis usar GenAI para hacer Cálculo II —pero no Estadística II, probablemente tampoco Estadística I, y desde luego no Teoría de la Medida. Esto significa que si sois becarios o desarrolladores de nivel inicial, no deberíais dejar que lo haga por vosotros. Usar GenAI como un “Google potenciado” está totalmente bien, y utilizar un autocompletado inteligente puede estar bien también, pero no dejéis que escriba código nuevo desde cero por vosotros.

Si sois desarrolladores sénior, usadlo para hacer trabajo de desarrollador de nivel inicial en tecnologías en las que tengáis un dominio a nivel sénior; pensad en ello como una delegación similar, y revisad el código como si lo hubiese escrito un desarrollador principiante. Mi experiencia con el desarrollo asistido por IA ha sido con Windsurf, que me gusta en ese sentido: he podido “entrenarlo” un poco, dándole reglas y consejos para que recuerde, siga y, como un desarrollador junior, a veces aplique en contextos erróneos.

Regla #2: Atribución

Si GenAI escribe un fragmento grande de código por vosotros, aseguraos de que el mensaje del compromiso, el propio código y cualquier documentación legible por humanos lo indiquen de forma muy clara. Que quede de manera clara: no lo habéis escrito vosotros, lo ha escrito una máquina. Esto es un favor para quienes revisen vuestro código: deberían tratarlo como si lo hubiese escrito un desarrollador principiante, no vosotros, y parte de la revisión debería consistir en cuestionar si la IA está haciendo cosas que van más allá de vuestro nivel técnico (lo cual podría estar mal —y no lo sabríais).

También es un favor para quienes revisen vuestro código en el futuro e intenten determinar si es una chapuza. Y es un favor para quienes intenten entrenar futuros modelos de IA con vuestro código, para evitar el colapso y los “defectos irreversibles en los modelos resultantes.”

Regla #3: Modo de aprendizaje y refuerzo

Cuando estáis en la universidad cursando Estadística II, tiene cierto valor reforzar las habilidades adquiridas en Cálculo II. Para ser sincero, ahora he olvidado la mayoría de ambas materias por falta de uso. Quizás “Dean, Dean la máquina de suspensos” tenía razón, después de todo. En situaciones donde vuestro objetivo principal es aprender cosas nuevas o reforzar habilidades recientes (¡o de hace años!), lo mejor es hacer todo el trabajo vosotros mismos. La creación rápida de prototipos es una excepción (¡aunque siguen aplicando las Reglas nº 1 y nº 2!), pero incluso en el trabajo diario habitual sería perjudicial depender en exceso de que GenAI se encargue de tareas “de desarrollador principiante”, tanto a nivel personal como organizacional.

Siempre necesitaremos desarrolladores de nivel inicial, porque siempre necesitaremos desarrolladores principales y arquitectos, y el camino entre ambos es una función continua. (¡Algo de matemáticas sí que recuerdo!)

Esto es algo que me encantaría ver como una función en los IDE: un modo “aprendizaje” que permita que la IA os observe o guíe, en lugar de hacer el trabajo por vosotros. En ausencia de una implementación específica en el software, también podéis optar por usar la IA de esta manera.

       

Rule #4: Reflexión

No os perdáis en el torbellino de trabajo, entregables y reuniones. Tomad tiempo para reflexionar. Esto es importante en general, y especialmente importante cuando usáis GenAI.

  • ¿Está esta tecnología mejorando vuestra vida, o empeorándola?
  • ¿Os está haciendo más inteligentes, o más torpes? 
  • ¿Estáis generando más valor, o simplemente más producción?
  • ¿Incluye esa producción deuda técnica asumida por pura rapidez?
  • ¿Estáis aprendiendo de forma más eficaz, o estáis olvidando cómo aprender?
  • ¿Cómo se comparan las soluciones de la IA con las que teníais en mente? ¿Se os escapa algo que la IA detecta? ¿Pasa por alto la IA cosas que para vosotros son importantes de forma sistemática?
  • ¿Os estáis convirtiendo en algo parecido a ChatGPT, introduciendo listas con viñetas y texto en negrita sin alma ni criterio en los documentos que escribís? (¡Oh no!)

Un último pensamiento: GenAI y el desarrollo basado en InterSystems IRIS

En un mundo donde los desarrolladores esperan que GenAI haga su trabajo por ellos —o al menos lo haga mucho más fácil— pueden ocurrir una de dos cosas:

  • Las tecnologías y lenguajes dominantes (véase: Python) pueden volverse super-dominantes, incluso si no son los mejores para la tarea en cuestión. Dado que GenAI es tan bueno con Python, ¿por qué usar algo más?
  • Las tecnologías y lenguajes de nicho (véase: ObjectScript) pueden volverse más atractivos para los desarrolladores. Aprender un nuevo lenguaje no es tan difícil si GenAI puede ayudaros a acelerar el proceso y hacerlo bien.

Mi esperanza es que, a medida que los proveedores y los líderes del desarrollo de software se den cuenta de los riesgos que he señalado, las herramientas tiendan a apoyar el segundo resultado, lo que representa una oportunidad para InterSystems. Sí, la gente puede usar Python incrustado para todo, pero nuestro legado tecnológico y las fortalezas de nuestra plataforma central también pueden volverse más atractivas, y ObjectScript puede recibir el reconocimiento que merece.

Comentarios (0)1
Inicie sesión o regístrese para continuar