Unidad 3 / 12

Codificación y programación en pares con IA

Ganancias:

  • Capacidad para escribir funciones, clases y módulos en IA con definiciones claras de entrada, salida y restricciones.
  • Capacidad para utilizar la IA como socio de programación en pareja y progresar paso a paso, en partes pequeñas y verificables.
  • Capacidad para detectar errores lógicos y de casos extremos compilando el código generado por IA y ejecutándolo con pequeños ejemplos.

La programación en pareja es cuando dos desarrolladores trabajan en el mismo problema, uno escribe y el otro revisa. Codificar con IA es la versión digital de esta misma relación: usted establece la dirección, las limitaciones y los criterios de aceptación; La IA produce borradores rápidos; Verifica cada paso compilándolo y probándolo. La trampa más grande aquí es decirle a la IA "escríbeme esta solicitud de principio a fin" y aceptar ciegamente un bloque de 200 líneas. Una buena programación en pares se realiza en pequeños pasos: cada paso debe ser comprensible, comprobable y reversible.

En esta unidad aprenderá a imprimir funciones, clases y módulos con un contrato entrada-salida claro; Cómo guiar la IA paso a paso; y veremos cómo detectar errores lógicos y de casos extremos ejecutando el código que produce con pequeños ejemplos. El objetivo no es la velocidad, sino la velocidad verificada.

Conceptos: Contrato de entrada-salida: una definición clara de qué entrada toma una función y qué salida y comportamiento de error promete. Caso extremo: entrada que no es ordinaria pero que realmente puede ocurrir (vacía, cero, negativa, muy grande, nula). Desarrollo incremental: Proceder con piezas pequeñas, de trabajo y validando cada paso.

Código de impresión con contrato neto

La base del código de calidad es definir exactamente "lo que se quiere" antes de empezar a trabajar. Al escribir una función en IA, proporciónele cinco cosas: idioma y versión, tipos de entrada y significados, salida, condiciones de error y restricciones (rendimiento, prohibición de biblioteca externa, estilo). Esto evita que la IA adivine.

  1. Escribe el contrato. Entrada, salida, error, restricción.
  2. Pregunta por una unidad pequeña. Una función con una única responsabilidad; No es un módulo enorme.
  3. Solicite un bloque de prueba. Agregue algunas ejecuciones/pruebas de muestra junto al código.
  4. Compile y ejecute. Pruébelo con casos extremos, verifique el resultado a simple vista.
  5. Vaya al siguiente paso. Una vez confirmada una pieza, construye sobre ella.

Mensaje de función contratada: "Escriba una función para TypeScript 5. Propósito: calcular la cantidad total de artículos en un carrito de compras. Entrada: {precio: número, cantidad: número}[] matriz. Salida: número (total). Reglas: arrojar error si la cantidad o el precio es negativo; devolver 0 para una matriz vacía; redondear la cantidad a 2 decimales para error decimal. No utilice una biblioteca externa. Agregue 5 casos de prueba debajo de la función (normal, vacío, cantidad negativa, precio decimal, artículo único)".

Guiando la IA como pareja

Un buen progreso en la programación en pareja es un diálogo más que una gran petición. Primero, solicite el esqueleto y ejecútelo; luego agregue un estado de borde; luego solucione un error. Este enfoque mantiene el código comprensible y le permite tener el control en cada paso.

Mensaje de progreso incremental: "Escribiremos un lector que lea un archivo CSV y convierta las líneas en un objeto. Vayamos PASO A PASO, pasando al siguiente paso sin que yo confirme cada paso. Paso 1: simplemente escriba el esqueleto que divide el archivo en líneas y separa la línea del encabezado. No agregue conversión de tipos ni manejo de errores todavía. Sea breve, explique".

Explique y justifique el mensaje del código: "Explique la función que acaba de escribir, no línea por línea, sino decisión por decisión: qué decisión de diseño tomó y por qué, qué caso extremo manejó y cómo, qué casos excluyó deliberadamente. Enumere 3 suposiciones en el código que no debería pasar por alto".

Consejo: no acepte el código generado por IA sin comprenderlo. “Explícame esto, ¿qué suposiciones hiciste?” La pregunta revela errores ocultos y le permite defender ese código, ya que el código sigue siendo su responsabilidad. Poner en producción código que no entiendes es como enviar un contrato sin firmarlo.

Aviso débil / Aviso fuerte

DÉBIL: "Escriba una función de clasificación". (Resultado: qué idioma, qué se está clasificando, si es estable, cuál es la restricción de rendimiento, código que es vago y probablemente no se ajusta al requisito). FUERTE: "Para Java 17, escriba un método que ordene un objeto Lista<Empleado> primero por departamento (alfabético), luego por salario (descendente). NO REEMPLAZAR la lista original, devuelva la nueva lista. Deje que el departamento nulo sea el último. Explique la complejidad del método. en la línea de comentarios, especifique agregar un bloque de prueba principal con 4 muestras".

Aviso potente; Incluye criterio de clasificación (dos niveles), regla de efectos secundarios (que reemplaza al original), comportamiento nulo y expectativa de prueba. Sin estos detalles, la IA produce una solución plausible pero incorrecta; por ejemplo, puede dañar la lista original y provocar un error silencioso en otro lugar.

Validación con casos extremos y muestras pequeñas

El código que funciona en el escenario feliz no es el código correcto. Forzar conscientemente cada función producida:

Tipo de caso de borde

entrada de muestra

comportamiento esperado

entrada en blanco

Matriz/cadena vacía

No es un error, resultado lógico vacío

Cero/negativo

0, -1

Comportamiento definido y correcto.

gran valor

Millones de registros

Control de desbordamiento/rendimiento

nulo/indefinido

espacio faltante

Error controlado o defecto

Duplicado/inusual

orden repetitivo e inverso

resultado correcto

Mini casos

Caso 1: error de redondeo silencioso. AI escribe una función que recolecta dinero con tipos decimales (flotantes); 0,1 + 0,2 da 0,30000000000000004. El error se soluciona cuando el ingeniero añade la regla "Redondear a 2 dígitos y utilizar monedas enteras". Una regla de 3 líneas evita miles de centavos de variación en la conciliación mensual.

Caso 2: Trampa de efectos secundarios. La IA escribe un método que "ordena" una lista, pero modifica la lista original en su lugar. Se produce un comportamiento inesperado porque otro módulo usa la misma lista. Si la restricción "cambiar original" estuviera en el mensaje, el error nunca ocurriría; queda atrapado en la revisión del código y evita 2 horas de depuración.

Caso 3: Ganancias paso a paso. Un desarrollador imprime un módulo de importación de 150 líneas a la vez; Cuando encuentra un error, no puede encontrar de dónde vino. Otro desarrollador divide el mismo trabajo en 5 pequeños pasos, prueba cada paso en 2 minutos y detecta el error inmediatamente en el tercer paso.

Errores comunes

  • Impresión de bloques grandes en una sola solicitud. Nace un código arriesgado que es difícil de entender y depurar.
  • Pedir un código sin dar contrato. Si el error de entrada-salida es ambiguo, la IA adivinará y se equivocará.
  • Simplemente probando el feliz escenario. Si no se prueba la entrada vacía, nula, negativa y grande, el error se deja a producción.
  • Aceptar sin comprender. El código que no revelas es una deuda que no puedes defender.
  • Ignorando tipos sensibles como efectos secundarios y dinero/cita. El dinero flotante con una historia atemporal es una fuente clásica de error.

En resumen

Escribir código con IA es una programación en pares disciplinada: contrato claro, pequeños pasos, construcción y prueba en cada paso. Dar el cuarteto de restricción de error de entrada-salida desde el principio determina la calidad del código. Explicar el código que produce y forzarlo con casos extremos saca a la superficie los errores ocultos bajo el feliz escenario. La fuente de la velocidad no es la aceptación ciega; Es un borrador rápido más una verificación rápida.

Tarea de aplicación

Elija una función pequeña pero real (por ejemplo, total de la cesta, diferencia de fechas, análisis de texto). Imprima utilizando el mensaje de función contratada; Agregue al menos 5 escenarios de prueba al lado. Ejecute el código y pruebe 5 casos extremos de forma consciente, utilizando la tabla como guía. Encuentre un error en al menos un caso extremo (si no, diseñe una nueva entrada para forzar la función), corríjalo con IA y verifique volviendo a probar que la solución funcionó.

lista de verificación

  • [] Escribí un contrato que incluye entrada, salida, errores y restricciones.
  • [] Generé el código en pequeños pasos en lugar de un gran bloque.
  • [] Agregué un bloque de ejecución de prueba/muestra al lado del código.
  • [] He probado conscientemente al menos 5 casos extremos.
  • [] Le expliqué el código a la IA y revisé sus suposiciones.
  • [] Corregí el error encontrado y confirmé la solución volviendo a realizar la prueba.