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

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

Sandi Metz en RailsConf 2014: cómo reducir condicionales con objetos pequeños

En esta charla de RailsConf 2014, la programadora y autora Sandi Metz propone una idea central: cuando el código orientado a objetos se vuelve difícil de mantener, la solución suele ser hacer cosas más pequeñas — clases más cortas, métodos más breves y con el menor conocimiento posible entre ellos.

Por qué los tests 'change-detector' aportan valor negativo al código

Un artículo del blog de Testing de Google, firmado por Alex Eagle, advierte sobre un patrón habitual al escribir pruebas unitarias: los llamados 'change-detector tests', tests que se limitan a verificar que el código de producción fue modificado sin evaluar realmente su comportamiento correcto. El t

Simplificar y refactorizar el cálculo introductorio

El artículo «Simplifying and Refactoring Introductory Calculus», publicado en arXiv el 7 de noviembre de 2018, propone replantear la enseñanza del cálculo de primer año universitario con el objetivo de reducir la carga cognitiva del estudiante. El trabajo parte de una observación pedagógica concreta

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

El horror de los commits manuales en mitad de una transacción

Un programador relata cómo, tras meses preparando una migración con la aprobación de todos los stakeholders, descubrió commits manuales dispersos por el código que rompían la atomicidad de las transacciones. El artículo no critica a los ORM, ni a las consultas parametrizadas ni a los query builders,

Refactorizar código generado por agentes reduce un 83% el coste en tokens

Refactorizar una base de código escrita íntegramente por agentes de inteligencia artificial reduce de forma significativa el coste computacional de los cambios posteriores. Es la conclusión de un experimento publicado por Thoughtworks el 30 de julio de 2026 en el que el autor, tras construir una apl

Prefactoring: preparar el código antes de añadir una nueva funcionalidad

El prefactoring, abreviatura de "preparatory refactoring", es una práctica de ingeniería de software que consiste en reorganizar el código existente antes de implementar una nueva funcionalidad, con el fin de que esta encaje de forma natural en la estructura del proyecto. En lugar de forzar el cambi

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

Slopo: detector de código duplicado mediante embeddings

Slopo es una herramienta de línea de comandos diseñada para localizar fragmentos de código similares que se encuentran dispersos dentro de un mismo proyecto, un tipo de duplicación especialmente difícil de identificar tanto para herramientas tradicionales como para la inspección manual. A diferencia

Experimentos prácticos con asistentes de programación basados en IA

Un programador comparte su experiencia de varios meses usando suscripciones de pago a modelos de IA (Anthropic, OpenAI, Google, Moonshot, DeepSeek y Cerebras) en tareas reales de desarrollo. Tras probar múltiples herramientas, concluye que Claude Code y Codex resultan poco fiables en la práctica (co

Parálisis por 'slop': el bloqueo al revisar código generado por IA

La expresión 'slop paralysis' define la pérdida total o parcial de motivación que experimenta un desarrollador al enfrentarse a la revisión del código producido por un agente de programación basado en modelos de lenguaje. El artículo describe el fenómeno con un ejemplo cotidiano: una persona describ

La abstracción equivocada: por qué duplicar puede ser mejor que abstraer

La programadora Sandi Metz sostiene que la duplicación de código resulta mucho más barata que una abstracción mal planteada, una afirmación popularizada en su charla de RailsConf 2014 "All the little things". El problema, describe, sigue un patrón reconocible: una programadora identifica código dupl

El código se abarata: la comprensión se encarece

El desarrollador Carson Gross sostiene en un ensayo reciente que la inteligencia artificial ha abarató la generación de código, pero ha encarecido la comprensión del mismo, lo que obliga a redefinir el rol del ingeniero de software. Gross parte de una observación directa: los modelos de lenguaje (L

ElRails-way ya no sirve: el problema de las apps complejas

Este artículo analiza por qué el enfoque conocido como 'Rails-way' —la metodología convencional de Ruby on Rails para construir aplicaciones— deja de ser efectivo cuando las aplicaciones crecen en complejidad. El autor argumenta que Rails-way funciona excelentemente para aplicaciones pequeñas y medi

Dirac: código abierto supera a Google en codificación

Un nuevo agente de codificación de código abierto llamado Dirac ha superado a Google y a sus competidores de código cerrado en las pruebas de rendimiento. Dirac alcanzó una puntuación del 65.2% en el *Terminal-Bench-2 leaderboard*, superando la línea de base oficial de Google (47.6%) y al agente de

ia redefine el desarrollo de software

El artículo "Zen of AI Coding" de Yoav Aviram plantea una transformación radical en el desarrollo de software impulsada por la aparición de agentes de codificación basados en IA. La premisa central es que el desarrollo de software, tal como lo conocemos, está llegando a su fin, no en el sentido de q

Mikado: Nuevo método simplifica la refactorización de código

Desarrolladores han presentado el método Mikado, una técnica para refactorizar código complejo de forma segura y gradual. El método, inspirado en el juego de palitos Mikado, aborda el problema común de atascarse en lo que se describe como “quicksand” al intentar realizar cambios significativos en ba

Smalltalk facilita reescrituras con nuevo motor

El motor de reescritura (Rewrite Engine) de Smalltalk, originalmente introducido con el Refactoring Browser, es una herramienta poderosa para realizar modificaciones a nivel de árbol de sintaxis abstracta (AST). Sin embargo, su sintaxis es notoriamente compleja y difícil de recordar, incluso para ta

ecs Survivors: siete meses de mejoras y refactorización

Este artículo del blog de Laurent Voisard detalla el desarrollo de un juego llamado ECS Survivors, centrándose en las mejoras y refactorizaciones realizadas durante un período de siete meses. El proyecto utiliza el paradigma de Sistemas de Componentes y Entidades (ECS), un enfoque de diseño de juego

Coccinelle: Automatiza cambios en código C

Coccinelle es una herramienta poderosa para programadores C que permite realizar transformaciones complejas en el código fuente de manera automática y preservando su estilo. Imagina que necesitas refactorizar una gran base de código C para adoptar una nueva práctica o corregir un patrón de error com

LLMs y Desarrollo: ¿Reemplazo o Evolución?

Este artículo de Martin Fowler, derivado de sus observaciones en el Pragmatic Summit y un retiro de Thoughtworks, explora el impacto de los Modelos de Lenguaje Grandes (LLMs) en el desarrollo de software, particularmente en los roles de los desarrolladores. La principal conclusión es que, si bien lo