La importancia de un buen Prompt y del conocimiento.

Hoy por hoy me encuentro con que muchas personas me comentan. Que la IA lo hace todo y que no tenemos que tener conocimiento. Sin embargo hablando con clientes … me he encontrado que algunas personas ya han tenido los primeros sustos …. con perfiles que usaron la IA …. y abusaron de la IA?.

Abusar de la IA?

Estamos abusando de la IA? . Es una pregunta muy delicada porque si decimos que si… tendremos mucha gente que se nos echará en cima y dirá que hay q abrazar la innovación y que vivimos en el pasado . Si decimos lo contrario y decimos que no estamos abusando de la IA nos encontraremos con otro grupo de personas que nos dirá que acabaremos en el infierno del desarrollo.

La IA y el conomiento

Para manejarse con la IA se necesita conocimiento . Es una cosa curiosa porque en principio la IA nos vende que el conocimiento deja de tener valor ya que ella nos lo da la solución a todo. Sin embargo no es así de sencillo …. la IA nos da una “solución a todo” no “nuestra solución” , “no la solución final” sino “una solucion” que estadísticamente es la ganadora. Vamos a ver un ejemplo

La clase Factura en Lombok

Si yo le pido a un motor de IA la clase Factura con Lombok es probable que nos devuelve esto

package com.arquitecturajava.modelo;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;

@Data
public class Factura {

    private String id;
    private String numero;
    private LocalDate fechaEmision;
    private String cliente;
    private BigDecimal importe;
    private boolean pagada;
}

Es esta clase correcta?. Uhhm depende … pero me lo ha devuelto claude… así que en principio es una solución. Si se lo pido a chatgpt

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDate;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Factura {

    private Long id;
    private String numero;
    private LocalDate fecha;
    private String cliente;
    private String concepto;
    private BigDecimal importe;
    private BigDecimal iva;
    private BigDecimal total;
    private boolean pagada;
}

Vemos que la solución es un poco complementaria… son dos enfoque con dos motores de IA pero todas van a tener problemas con @Data ya que si son clases de negocio pueden tener problemas a futuro con los toString, equals y hashcode. Si cambio el prompt y pongo “genera una clase de negocio factura con lombok”

package com.arquitecturajava.negocio;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.math.BigDecimal;
import java.time.LocalDate;

@Getter
@Setter
@ToString
public class Factura {

    private String numero;
    private String cliente;
    private LocalDate fechaEmision;
    private BigDecimal baseImponible;
    private BigDecimal tipoIva = new BigDecimal("21.00");
    private boolean pagada;

    public BigDecimal getTotal() {
        BigDecimal cuotaIva = baseImponible
                .multiply(tipoIva)
                .divide(new BigDecimal("100"));
        return baseImponible.add(cuotaIva);
    }

    public void marcarComoPagada() {
        this.pagada = true;
    }
}

La clase mejora mucho ya que no incluye los constructores , ni el equals y hashcode que añade lombok por defecto con @Data y que en muchos casos dan quebradores de cabeza en clases de negocio. Solo hemos cambiado una palabra de “clase Factura” a “clase de negocio Factura” y el resultado ha cambiado de forma significativa.

El conocimiento importa más que nunca

Ahora nuestra función no es “codificar” sino es “decidir ” y “orientar” las herramientas aportando un valor .En este caso necesitaremos más conocimiento por parte de todos y no menos. Eso nos ayudará a producir más código y de más calidad.

Related Post