Café y Código

4. Checklist de Validación ✅

¿Por qué necesitás un checklist?

El código generado por IA puede funcionar visualmente y aun así contener errores silenciosos, vulnerabilidades de seguridad o malas prácticas que solo se revelan en producción. Un checklist sistemático te protege de aceptar código a ciegas.

"Que compile y que funcione no son sinónimos de que sea seguro, eficiente o mantenible."

El Checklist de 4 Preguntas

Antes de incorporar cualquier código sugerido por una IA a tu proyecto, hacete estas 4 preguntas en orden:

1️⃣ ¿Copia o procesa datos sin validar?

Verificá que el código compruebe tipos de datos, valores nulos, rangos válidos y longitudes máximas antes de procesar cualquier entrada.

2️⃣ ¿Modifica la estructura de datos original?

Buscá mutaciones inesperadas: métodos como .sort(), .pop(), .splice() o del lista[i] que alteren la fuente de datos original. En frameworks reactivos (React, Vue), mutar props o estados directamente genera bugs difíciles de rastrear.

3️⃣ ¿Maneja excepciones específicas?

Un except Exception o un catch(e) genérico silencia todos los errores, incluso los que no esperás. Verificá que se atrapen excepciones concretas (ValueError, KeyError, TypeError).

4️⃣ ¿Complejidad clara y razonable?

¿La solución tiene una complejidad temporal proporcional al problema? Un bucle dentro de otro sobre la misma colección (O(n²)) puede ser aceptable para 10 elementos pero catastrófico para 100.000.

Ejemplo práctico: Aplicando el checklist

Copilot te sugiere esta función para eliminar duplicados de una lista de productos:

sugerencia_ia.py
PYTHON
1 def eliminar_duplicados(productos):
2 resultado = []
3 for p in productos:
4 if p not in resultado:
5 resultado.append(p)
6 return resultado

Apliquemos el checklist:

Pregunta Análisis Veredicto
1. ¿Valida datos? No verifica si productos es None o si contiene tipos mezclados. ⚠️ Falta
2. ¿Muta el original? No. Crea una lista nueva resultado, la original queda intacta. ✅ OK
3. ¿Excepciones? No hay try/except, pero tampoco hay operaciones que puedan fallar (salvo entrada nula). ⚠️ Parcial
4. ¿Complejidad? in resultado recorre la lista en cada iteración: es O(n²). Con un set auxiliar bajaría a O(n). ⚠️ Mejorable

Versión mejorada tras aplicar el checklist:

eliminados_mejorado.py
PYTHON
1 def eliminar_duplicados(productos: list | None) -> list:
2 """Elimina duplicados preservando el orden. O(n) con un set auxiliar."""
3 if not productos:
4 return []
5 vistos: set = set()
6 resultado: list = []
7 for p in productos:
8 clave = id(p) if not isinstance(p, (str, int, float, tuple)) else p
9 if clave not in vistos:
10 vistos.add(clave)
11 resultado.append(p)
12 return resultado

Responsabilidad profesional: ¿De quién es el código?

Un punto fundamental que debés interiorizar:

⚖️ Principio de Responsabilidad

La responsabilidad sobre el código siempre recae en la persona que lo desarrolla, no en la IA que lo sugirió. Si el código causa una brecha de seguridad, un fallo en producción o un error de lógica, el responsable sos vos.

Utilizar IA de forma ética implica:

  • Comprender el código generado antes de integrarlo.
  • Proteger los datos del proyecto y sus usuarios (lección 2).
  • Mantener un rol activo en el proceso de aprendizaje y toma de decisiones.
  • Documentar qué partes contaron con asistencia de IA y cómo se validaron.

Transparencia: Documentar el uso de IA

En entornos académicos y profesionales, es importante declarar qué herramientas usaste. No para "castigar" su uso, sino para demostrar que entendés lo que entregás:

Ejemplo de comentario de transparencia
PYTHON
1 # Función generada con asistencia de GitHub Copilot.
2 # Modificaciones manuales: validación de entrada (líneas 3-4),
3 # cambio de O(n²) a O(n) con set auxiliar (líneas 7-8).
4 # Revisada y testeada por: [tu nombre] — 2026-06-08
5 def eliminar_duplicados(productos: list | None) -> list:
6 ...

Preguntas de reflexión final

🧠 Reflexioná

  1. ¿Cuál es el principal riesgo de aceptar código de Copilot sin comprenderlo?
  2. Mencioná dos acciones concretas para proteger datos al programar con IA.
  3. ¿Cómo asegurar transparencia y no dependencia en tu informe o documentación?

✅ Desafío Final: Revisá código de IA

Pedile a tu asistente de IA favorito que genere una función para calcular el descuento de un producto (recibe precio y porcentaje). Aplicá el checklist de 4 preguntas, documentá tus hallazgos y mejorá el código si encontrás problemas.

👁️ Ver criterio de evaluación

Tu análisis debería cubrir:
1. ¿Valida que precio y porcentaje sean positivos y numéricos?
2. ¿Qué pasa si porcentaje es mayor a 100?
3. ¿Maneja excepciones si le pasás un string?
4. ¿El cálculo es directo (O(1)) o innecesariamente complejo?

Quiz: Checklist de Validación

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.