Deslop: reglas de Oxlint para detectar código generado por IA

Deslop es una extensión de linting para JavaScript que implementa reglas específicas para identificar y rechazar patrones de código de baja evidencia y bajo señal, característicos de la generación automática por inteligencia artificial. La herramienta se integra con el linter Oxlint y funciona como

El acoplamiento de cambios: por qué un cambio afecta a diez archivos

El acoplamiento de cambios es una herramienta de comprensión para arquitectos y equipos de desarrollo, no una métrica de calidad a optimizar. A diferencia de la acoplamiento física o lógica, este fenómeno revela cómo el código que cambia frecuentemente lo hace de manera conjunta, independientemente

Los cuatro problemas sociales de la programación con agentes de IA

La programación con agentes de inteligencia artificial (agentic coding) genera efectos negativos significativos en la ingeniería de software, caracterizados por cuatro problemas principales: la degradación de la calidad del código, la alienación de los ingenieros, la erosión de las habilidades técni

Por qué evitar efectos secundarios en declaraciones if

Las declaraciones condicionales deben limitarse a la verificación de una condición lógica, no a la ejecución de código como efecto secundario. Utilizar el valor de retorno de una función directamente dentro de un if genera ambigüedad en la intención del código y dificulta la lectura. Por ejemplo, si

La arquitectura katamari: cómo los LLM crean software desordenado

La arquitectura katamari describe la tendencia de los agentes de desarrollo basados en modelos de lenguaje de gran escala (LLM) a generar código sin una estructura cohercente, acumulando características ad hoc sin atención a la composición. Este fenómeno, comparado con el juego Katamari Damacy, surg

Kasper Timm propone medir la complejidad de los gems por líneas de código

Kasper Timm, desarrollador de Ruby, propone utilizar el conteo de líneas de código como una métrica práctica para evaluar la complejidad y el valor de las gemas (bibliotecas) de software. En un artículo publicado en su blog, Timm explica que, al revisar el README de una gema, los desarrolladores pue

Guía técnica para medir y mejorar la complejidad ciclomática en C#

La complejidad ciclomática (CC) es una métrica fundamental en el desarrollo de software que cuantifica la dificultad de lectura, prueba y mantenimiento de un método. En C#, se calcula como 1 más el número de estructuras de control independientes (if, while, switch, operadores lógicos), lo que determ

Devin lanza Code Scans para optimizar bases de código

Devin ha presentado Code Scans, una herramienta diseñada para transformar objetivos de ingeniería generales en mejoras concretas dentro de las bases de código. Esta nueva funcionalidad permite a los desarrolladores definir objetivos específicos, como mejorar el SEO, reducir la sobrecarga de mantenim

El acrónimo CRAP para medir la calidad del código

CRAP, que significa Change Risk Anti-Patterns, es un acrónimo técnico desarrollado en 2007 por Alberto Savoia y Bob Evans para identificar patrones de código de mala calidad. Su origen surge de la necesidad de un término memorable que los desarrolladores usen para describir código complejo o difícil

No hay límite para lo malo que puede ser el código

La metáfora del "barco que se hunde" se usa con frecuencia para describir bases de código legado, pero resulta engañosa: una empresa puede quebrar, pero el código malo no tiene fondo. A diferencia de un edificio físico, el software es abstracto y puede degradarse de forma indefinida; siempre puede a

Vibe coding sin pruebas: cuando la IA escribe el código y tú no lo revisas

Un programador comparte una experiencia cada vez más común en el desarrollo de software asistido por inteligencia artificial. Su socio de negocio, encargado del backend de pagos, entregó un pull request de 5.236 líneas generadas íntegramente con IA en un solo día, sin haberlo probado. El autor del r

Métricas para medir la desordenación del código generado por IA

Aunque los modelos de lenguaje grandes (LLM) han alcanzado una precisión casi perfecta en la generación de código formalmente correcto, persiste un problema crítico: la introducción de abstracciones innecesarias, duplicaciones y malas decisiones de diseño. Este fenómeno, conocido como 'slop' o desor

TDD dentro del bucle del agente: ¿teatro o valor real?

Un experimento exploratorio de Thoughtworks pone a prueba si obligar a un agente de IA a seguir un flujo de TDD (desarrollo dirigido por pruebas) dentro de su propio bucle aporta valor frente a dejarle escribir pruebas y código sin esa disciplina. La conclusión principal es negativa: usando Sonnet 4

Conquistar la entropía: cultivar la confianza en equipos con IA

La mayor parte de los problemas que el autor detecta en el código generado por inteligencia artificial no son técnicos, sino de confianza: en el ticket, en quien abrió el pull request, en el agente de codificación, en los tests, en el pipeline de integración y despliegue, en la observabilidad y hast

Agentes de IA y el refactor que nunca llega

Los ingenieros experimentados cuentan con un reflejo muy arraigado: cuando el código se vuelve inabordable, se detienen y lo reescriben antes de seguir. Esa reacción, nacida de los límites de la memoria humana, es la que ha permitido mantener sistemas grandes y longevos durante décadas. El ensayo de

Ingeniería de arnés: cómo mantener la coherencia del código generado por IA

La ingeniería de arnés (harness engineering) es una disciplina que rodea la generación de código asistida por inteligencia artificial con herramientas deterministas, revisión basada en agentes y verificaciones periódicas de entropía, con el objetivo de que el código producido por IA se mantenga corr

El problema de aplicar correcciones automáticas en paralelo en los linters

Cuando un linter —como ESLint para JavaScript— ejecuta varias reglas con autofix en una sola pasada y aplica todas las correcciones a la vez, puede generar código roto aunque cada corrección individual sea correcta por sí sola. El autor, creador de elm-review, lo ilustra con un archivo de ejemplo: s

Cómo un archivo agent.md mejora la calidad del código generado por un LLM

Un programador comparte su experiencia personal afinando el archivo agent.md —el fichero que los entornos de desarrollo con IA inyectan en el prompt al iniciar una sesión— para elevar la calidad del código que producen los modelos de lenguaje. Tras varios intentos fallidos entre 2025 y principios de

Dejemos de llamarlo «deuda técnica»: en realidad es un «desastre»

El ingeniero de software Matt Proctor (Simpler Machines) sostiene que la expresión «deuda técnica» se usa de forma incorrecta en la mayoría de los proyectos y debería sustituirse por «desastre» o «desorden». El argumento central es que la metáfora de la deuda financiera resulta contraproducente cuan

Cómo sacar partido a las aserciones en el software moderno

La sentencia assert() es una herramienta básica para escribir software correcto, seguro y mantenible, pero muchas de sus implementaciones se quedan cortas y generan dudas sobre cuándo y cómo utilizarla. Este artículo explica en cuatro áreas clave cómo aprovechar las aserciones de forma eficaz. En pr

El software gira en torno a las personas, no al código

Una carta abierta dirigida a desarrolladores nóveles defiende que el éxito de un proyecto de software depende más de las personas que del código en sí. El autor, Dan, confiesa que al inicio de su carrera creía que escribir código era la parte central del trabajo, por lo que invirtió tiempo en guías

El gusto es lo único que queda en la ingeniería del software

Ensayo reflexivo sobre cómo la inteligencia artificial generativa ha eliminado la barrera de producción que durante décadas definió el oficio de programar. Durante generaciones, el coste de fabricar software actuaba como filtro: exigía horas de tecleo, lectura de manuales y depuración, de modo que c

Por qué seguir escribiendo código en 2026

En pleno apogeo de los agentes de inteligencia artificial capaces de generar código de forma autónoma, un ingeniero de software estadounidense sostiene que escribir código a mano sigue siendo una habilidad esencial para los programadores, no por nostalgia, sino por una razón cognitiva profunda. Doug

dotenv-diff: herramienta para auditar variables de entorno en el código

dotenv-diff es una utilidad de línea de comandos, publicada bajo licencia MIT por el desarrollador chrilleweb, que escanea el código fuente de un proyecto para localizar todas las referencias a variables de entorno. Su objetivo es detectar de forma temprana errores habituales —variables ausentes, si

Escribe código como si un humano fuera a mantenerlo

Los modelos de lenguaje generativos son útiles para producir código rápido, pero absorben y replican los patrones del repositorio en el que trabajan. Cuando un desarrollador acepta atajos —condiciones duplicadas, funciones monolíticas o la promesa de «limpiar esto más tarde»— cada commit envía una s

El método 'short leash' para programar con IA sin perder calidad

Un desarrollador de software especializado en sistemas críticos de seguridad publica, tras más de un año de investigación, una metodología propia para integrar agentes de inteligencia artificial en el desarrollo de software sin sacrificar la calidad del código. La técnica, bautizada como 'short leas

Solid y Clean Code: una crítica desde la sospecha

Daniel, desarrollador y estudiante de Historia, sostiene que los principios SOLID y el libro Clean Code nunca le transmitieron solidez ni limpieza. Relata que aprendió a programar mediante documentación y proyectos, y que la lectura de Clean Code le pareció un conjunto de consejos de un ingeniero se

El bucle que viene: escribir software dejando que la máquina iteré

Un creciente número de desarrolladores está dejando de escribir código directamente y, en su lugar, diseña bucles que ejecutan tareas en cola y dejan que un agente de programación las intente, las evalúe y decida si seguir o detenerse. Esos bucles externos rodean al bucle interno que cualquier agent

Revisar código de IA se ha vuelto caro; reescribirlo, barato

El ingeniero de software Ishmeet Bindra sostiene que los modelos de lenguaje grandes (LLM) no son vagos, sino que tienden a construir desde cero en lugar de reutilizar librerías existentes, ya que para el modelo escribir doscientas líneas de implementación supone el mismo esfuerzo cognitivo que escr

Limpiar el código tras los desarrolladores estrella y sus sucesores de IA

El desarrollador Jesse Skinner publica una reflexión, a medio camino entre la crónica y el ensayo técnico, sobre un patrón repetido en los equipos de ingeniería: la figura del desarrollador estrella y, más recientemente, su equivalente automatizado en los agentes de inteligencia artificial generativ

Los LLM erosionan mi carrera de ingeniería y no sé qué hacer

Un ingeniero de software con diez años de experiencia, especializado en sistemas backend de finanzas y procesamiento de pagos, relata en primera persona cómo los modelos de lenguaje están derribando uno a uno los tres pilares que sostenían su valor profesional: el conocimiento de dominio, la capacid

Al usuario no le importa, pero a ti sí debería importarte

A lo largo de su carrera, el autor de este ensayo ha escuchado de forma repetida el mismo cliché en equipos de software: "a los usuarios no les importa tu stack tecnológico, tus pruebas ni la calidad del código; solo quieren que el producto funcione". El texto sostiene que, aunque la afirmación resu

¿Por qué la comunidad de Hacker News critica tanto a la IA?

Un usuario de Hacker News con más de 20 años de experiencia como ingeniero de software ha abierto un hilo 'Ask HN' en el que cuestiona la postura crítica recurrente que la comunidad del sitio mantiene hacia la inteligencia artificial aplicada al desarrollo. El autor asegura que, en los últimos seis

Por qué no debes desactivar las aserciones en producción

Este artículo técnico sostiene que desactivar las aserciones en producción es una práctica «irremediablemente mala», y toma como referencia principal el comportamiento de `std.debug.assert` en Zig, aunque su razonamiento se aplica a la ingeniería de software en general. ¿Qué es una aserción? Es una

Linter casero soluciona error de transacción en código

Este artículo describe un problema común en el desarrollo de software backend, específicamente en el manejo de transacciones de bases de datos, y cómo el autor lo resolvió creando un linter personalizado. El problema surge cuando, al envolver código existente en una transacción, se olvida de usar el

La 'pereza' útil: clave para un buen código

Este artículo explora una idea contraintuitiva: la importancia de la "pereza" en el desarrollo de software. Inspirado en la famosa declaración de Larry Wall en "Programming Perl" (el "Camel Book"), el autor argumenta que la verdadera pereza, entendida como la búsqueda de la simplicidad y la abstracc

Verificadores de Python: ¿Cumplen con la norma oficial?

Un análisis reciente de Pyrefly.org compara la conformidad de varios verificadores de tipos de Python con la especificación oficial de tipado de Python. La especificación, consolidada para estandarizar la interpretación de las características de tipado, incluye un conjunto de pruebas de conformidad

Mejora tus herramientas, soluciona errores

En el mundo del desarrollo de software, especialmente en proyectos de código abierto, la frustración de perseguir un error (bug) puede ser intensa. El artículo "Fix your tools" de ochagavia.nl relata una experiencia personal que ilustra una lección valiosa: a veces, la solución más eficiente a un pr

Código Funcional, ¿Suficiente? La Crisis del Buen Código

El artículo "The silent death of Good Code" reflexiona sobre una tendencia preocupante en la ingeniería de software: la pérdida de la importancia del código bien escrito. El autor, Amit Prasad, define "Good Code™" como código legible, comprensible, mantenible y que cumple una función específica, res