Estuve leyendo un poco sobre prompts.

Pero antes de seguir con el tema de instrucciones, hay algunos principios de programación que ayudan de una forma u otra al momento de escribir código.

Estos principios son:

YAGNI: You Aren’t Gonna Need It / No lo vas a necesitar

SOLID: Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion / Responsabilidad única, Abierto-cerrado, Sustitución de Liskov, Segregación de interfaces, Inversión de dependencias

En el caso de SOLID contiene cinco principios en su interior.

KISS: Keep It Simple, Stupid / Manténlo simple, estúpido

DRY: Don’t Repeat Yourself / No te repitas

Entonces estas filosofías actúan como una guía al momento de diseñar un programa.

La idea central de esta nota es pensar ¿qué ocurre cuando agregamos estos principios al darle un prompt a una LLM/IA?

Por ejemplo, puedo pedirle a la IA que no agregue funcionalidades extra a la pieza de código que le estoy pidiendo. O puedo directamente decirle “necesito que te adhieras a los principios YAGNI al llevar adelante la tarea”.

¿Funciona esta idea de adherirnos a estas formas de pensar para estructurar los resultados?

Necesito hacer más pruebas al respecto. Tengo que decir que hay dos formas de usar estos principios:

1- Asignarlos al prompt antes de empezar a generar el código.

2- Utilizar los principios en un segundo momento, para revisar el código que ya fue generado.

En mi poca experiencia la idea funciona mejor en el segundo caso, cuando tenemos que revisar un código que ya fue generado. Encuentro que si utilizo estas instrucciones desde un primer momento, la IA se aleja un poco del objetivo principal al tratar de encajar y priorizar estos conceptos.

Pero cuando la IA repasa un código ya generado, tener estas referencias extras para saber qué tiene que mejorar en el programa le ayuda más.

Lo siguiente que encontré en mi experiencia es que no siempre es bueno agregar todos estos principios al mismo tiempo. Por ejemplo en lugar de decir:

“When designing or extending code, rigorously apply YAGNI, SOLID, KISS, and DRY principles, adapting them to each development scenario.”

Es mejor decir:

“When designing or extending code, rigorously apply the YAGNI principle, adapting it to each development scenario.”

Aunque también es cierto que estoy agregando un problema extra: SOLID contiene cinco principios individuales en su interior. Quizás al pedir todo a la vez no hago más que saturar la instrucción, agregando complejidad extra a la tarea.

Por lo que puedo entender al usar todas los principios juntos al mismo tiempo los cambios que se aplican no siempre resultan favorables. El código mejora en apariencia pero deja de funcionar al romper su funcionalidad, como si la necesidad por cubrir todas esas demandas hiciera aparecer errores en la respuesta.