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

Revisión crítica de Xilem en 2026: una arquitectura en punto muerto

Una revisión crítica del estado actual de Xilem, el framework de interfaces gráficas basado en Rust dentro del ecosistema Linebender, sostiene que su arquitectura está lejos de funcionar y que urge un cambio profundo para evitar su desaparición. El autor, que ha trabajado en el proyecto junto a otro

Afirmar que programar esta resuelto es no entender la ingenieria de software

El articulo cuestiona la afirmacion recurrente de que la programacion esta resuelta por los modelos de lenguaje. Distingue entre producir codigo ejecutable a partir de una especificacion clara y el trabajo completo de ingenieria de software, que en organizaciones maduras depende casi por completo de

Los reintentos no arreglan la consistencia eventual

En sistemas distribuidos, la consistencia eventual no es un fallo: es una propiedad del diseño. Este ensayo técnico explica por qué tratar la llegada desordenada de eventos como un error y aplicar reintentos o colas de mensajes muertos suele crear más problemas de los que resuelve, y propone una arq

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

Qué significa realmente que una API sea RESTful: más allá de JSON sobre HTTP

La mayoría de los desarrolladores creen saber qué es una API RESTful, pero en realidad solo han seguido buenas prácticas del sector y leído mucha documentación sin comprender el modelo original. REST no es un interfaz HTTP, sino un estilo arquitectónico definido por Roy Fielding en su tesis doctoral

Patrones de infraestructura para agentes de IA en producción

La mayoría de los equipos comienzan a construir agentes de inteligencia artificial envolviendo el modelo en un endpoint HTTP, una arquitectura que funciona como demo pero se rompe en producción. Los agentes son procesos de larga duración, con estado y no deterministas: invocan herramientas, esperan

Crear tu propio motor de juego: por qué, para qué y cómo abordarlo

Tras la polémica de Unity sobre precios y licencias, el debate sobre los motores de juego se reavivó: ¿conviene migrar a otro motor, quedarse o construir uno propio? Este artículo desmonta la idea de que un motor de juego es algo inherentemente enorme o complejo. El autor, desarrollador de un motor

Los microservicios no son una herramienta técnica, sino organizacional

Los microservicios se han convertido en el ejemplo por defecto tanto de "buena arquitectura" como de "sobreingeniería", según a quién se pregunte. Lo paradójico es que todo el mundo reconoce un microservicio al verlo, pero casi nadie puede explicar qué lo define como tal. La industria ha intentado d

La verdadera lección de Linus Torvalds: dirigir, no programar

El desarrollador italiano Salvatore Sanfilippo, conocido como antirez, reflexiona sobre el papel que Linus Torvalds desempeñó al frente del kernel de Linux y lo aplica a la programación asistida por inteligencia artificial. Tras recordar que escribir un kernel Unix mínimo para el 386 estaba al alcan

Cuándo conviene (y cuándo no) incorporar un LLM a una solución

Antes de añadir un modelo de lenguaje a cualquier proyecto, conviene hacerse seis preguntas concretas que ayudan a decidir si realmente aporta valor o si basta con código tradicional. Un LLM intercambia determinismo por flexibilidad: es útil cuando la tarea exige interpretar lenguaje natural, sintet

Project Mage: un entorno para usuarios avanzados en Common Lisp

Project Mage es una iniciativa de software libre orientada a construir un entorno para usuarios avanzados y un conjunto de aplicaciones escritas en Common Lisp. El proyecto reúne, en forma de ensayos, una propuesta que combina filosofía de herramientas, estructura del software y crítica al estado ac

La perfección no es la sobreingeniería: el requisito es el problema

En su ensayo "Perfection is not over-engineering", el autor defiende que la sobreingeniería no nace de buscar la excelencia técnica, sino de resolver el problema equivocado. A partir de una idea central, sostiene que para cada conjunto acotado de requisitos y restricciones existe una única solución

La esencia del trabajo arquitectónico, parte 4: propósito cognitivo y humano

Este artículo, cuarta entrega de una serie sobre la esencia del trabajo arquitectónico en software, completa el análisis del «porqué» de la arquitectura abordado en entregas previas. Tras tratar el propósito económico, el texto se centra en dos facetas adicionales: el propósito cognitivo y el propós

Diseñar APIs para agentes: por qué las buenas APIs para humanos ya no sirven

El auge de los agentes de IA está cambiando las reglas del diseño de interfaces de programación (APIs). El autor, ingeniero de Freestyle, sostiene que las prácticas que optimizaban la experiencia de desarrolladores humanos —valores por defecto, nombres genéricos, errores condescendientes y SDKs con

La torre sigue creciendo: el lenguaje compartido en la era de la IA

El ensayo "The Tower Keeps Rising", fechado el 13 de julio de 2026, reflexiona sobre el impacto de la programación asistida por agentes de inteligencia artificial en la cohesión de los proyectos de software a gran escala. Tomando como punto de partida el cuadro "La Torre de Babel" de Bruegel y la le

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

La calidad del código de IA empieza en tu propio código fuente

La utilidad de la inteligencia artificial aplicada al desarrollo de software no depende solo del prompt ni del modelo elegido, sino del estado del propio repositorio con el que trabaja. Cuando una base de código sigue patrones claros, consistentes y basados en stacks tecnológicos populares, el model

Una caída en esquís puso a prueba nuestras prácticas de desarrollo

enioka Haute Couture, consultora francesa especializada en diseño de aplicaciones y estructuración de equipos de desarrollo, relata cómo la pérdida repentina de su Tech Lead a causa de un accidente de esquí sirvió para validar empíricamente su modelo de trabajo basado en la documentación escrita y l

Patrón de capas en memoria para evitar saturar la ventana de contexto del LLM

RidgeText, una herramienta de SMS asistida por un modelo de lenguaje, ha presentado un patrón de diseño orientado a reducir la carga de datos que recae sobre el LLM. El problema surge al generar mapas: los conjuntos de datos GeoJSON asociados a incendios, senderos u otras capas geoespaciales pesan e

Trabajo de fin de grado documenta la arquitectura interna de GNU Emacs

Un trabajo de fin de grado del Programa de Bachelor en Informática de la Universidad de Uppsala, elaborado por Erik J. Karlsson y fechado el 18 de marzo de 2026, se propone llenar un vacío en la documentación del editor de texto GNU Emacs: la ausencia de material accesible sobre su arquitectura inte

Por qué la mayoría de las reescrituras de código no valen la pena

Un ingeniero veterano relata cómo, en un verano, madrugó hasta las 4 de la madrugada para reescribir de CakePHP a Laravel un sistema que ya funcionaba en producción. El cambio no aportó nada al negocio: la aplicación hacía lo mismo para los mismos usuarios y al mismo ritmo. La única mejora fue la co

La dimensión económica del trabajo arquitectónico en software

En la tercera entrega de esta serie sobre la esencia del trabajo arquitectónico, el autor —tras repasar en la entrada anterior varios antipatrones— aborda el propósito económico de la arquitectura de software. Identifica tres facetas complementarias del propósito de la arquitectura: económica, cogni

Los límites de la sincronización generalizada: una taxonomía de arquitecturas

La tesis de maestría de Mikael Siidorow, defendida en la Universidad Aalto (Escuela de Ciencias, Espoo, 25 de mayo de 2026) bajo la supervisión del profesor Petri Vuorimaa y con la colaboración de Teamspective Oy, investiga hasta qué punto la sincronización de datos puede generalizarse entre aplicac

Cómo redactar un documento de diseño de software eficaz

Un documento de diseño de software es un artefacto previo a la implementación que permite anticipar decisiones técnicas costosas, coordinarse con otros equipos y obtener retroalimentación antes de escribir código. Michael Lynch, ingeniero con experiencia en Google, Microsoft y sus propias empresas,

Topología de equipos para la plataforma agéntica: ¿quién hace qué?

La producción de software mediante agentes de inteligencia artificial replantea la organización del trabajo: las preguntas que antes repartían distintos roles a lo largo del tiempo las debe anticipar, en paralelo, la persona que guía al agente dentro de un único prompt. La complejidad no desaparece

Cómo Minimal diseñó un motor de conversión de archivos en Swift

La aplicación de notas Minimal ha incorporado un motor de conversión que permite importar y exportar documentos entre seis formatos: Markdown, texto enriquecido, HTML, PDF, texto plano y el formato propietario MNML. El artículo describe la arquitectura de este sistema, implementado en Swift, y expli

Arquitectura de software: qué es y por qué importa

La arquitectura de software es un concepto difuso que se refiere a los aspectos más importantes del diseño interno de un sistema. Según Martin Fowler, una buena arquitectura apoya la evolución y está profundamente entrelazada con la programación. Ralph Johnson, en un intercambio de correos, propone

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

Por qué las colas no solucionan la sobrecarga y qué hacer en su lugar

## Por qué las colas no solucionan la sobrecarga y qué hacer en su lugar ### Lead En el mundo del software, cuando un sistema se enfrenta a un pico de tráfico, la respuesta instintiva suele ser la misma: aumentar el tamaño de las colas, añadir un buffer o incorporar un sistema de mensajería como K

Cómo otros comprobadores de enlaces implementan la recursividad

Matthias Endler, autor de lychee, un comprobador de enlaces escrito en Rust, analiza en este artículo cómo otras herramientas similares implementan la recursividad para rastrear sitios web completos, y por qué añadir esa capacidad a lychee le costó cinco años y cuatro intentos. El autor estudió el

Código oscuro e IA: qué enseña Age of Empires a líderes técnicos

En una mesa redonda con CTOs canadienses del grupo TrueNorthCTO, celebrada el 6 de mayo de 2026, un veterano del sector tecnológico expuso su visión sobre cómo dirigir equipos de software en plena irrupción de la inteligencia artificial generativa. El ponente, de 38 años y cofundador y CTO de Comper

Cloudflare escala revisión de código con agentes de IA

La revisión de código manual es un mecanismo excelente para detectar errores y compartir conocimiento, pero también una de las formas más efectivas de crear cuellos de botella en un equipo de ingeniería. En Cloudflare, donde el volumen de proyectos es masivo, decidieron abordar esto mediante la orqu

Terraform no declaraba estado, los ingenieros observaban a mano

El artículo propone una reevaluación fundamental de la gestión de infraestructura: tradicionalmente, herramientas como Terraform o Chef no "declaraban estado", sino que actuaban como receptores de observaciones manuales escritas por humanos. Dado que los agentes de estas herramientas no podían obser

IA en software: la promesa de la automatización aún es un desafío

El artículo explora la brecha existente entre la promesa de la entrega automatizada de software impulsada por modelos de lenguaje grandes (LLMs) y la realidad actual. La visión ideal, para 2026, es un agente de IA capaz de leer un repositorio, comprender su estructura, planificar cambios complejos,

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

Prueba de Eliminación: ¿Tu código sobreviviría?

La 'Prueba de Eliminación' (Deletion Test) es una técnica de diagnóstico para evaluar la salud y la mantenibilidad de un sistema de software. La idea central es simple pero reveladora: imagina eliminar por completo la implementación actual del código (usando `rm -rf src/` en un entorno Linux, por ej

IA: Control, no prompts, para agentes más eficientes

El artículo "agents need control flow, not more prompts" plantea una crítica fundamental a la forma en que actualmente se construyen los agentes inteligentes (AI agents) basados en modelos de lenguaje grandes (LLMs). La tesis central es que la dependencia excesiva en cadenas de prompts (prompt chain

Programación con IA: 10 claves para agentes de código

La aparición de modelos de lenguaje grandes (LLMs) como Codex, Claude Code y Pi ha revolucionado la forma en que escribimos código, dando lugar a lo que se conoce como 'agente coding'. Este enfoque, donde la IA genera y modifica código, abre un abanico de posibilidades, pero también exige una nueva

Restricciones creativas: 3 claves para innovar

El artículo "3 constraints before I build anything" presenta un marco de trabajo para la creación de productos, basado en la idea de que las restricciones, paradójicamente, fomentan la creatividad y la innovación. El autor, un desarrollador con una década de experiencia, comparte tres limitaciones c

Reinventando la rueda: ¿Por qué crear tu Kubernetes?

Este artículo, titulado "Querido amigo, has construido un Kubernetes", explora una paradoja común en el desarrollo de software: la búsqueda de alternativas a soluciones establecidas, en este caso, Kubernetes. El autor argumenta que, al intentar evitar la complejidad percibida de Kubernetes, los desa

Statecharts: Modelando sistemas complejos con claridad

Los diagramas de estados (Statecharts) son una herramienta poderosa para modelar y gestionar la lógica de sistemas complejos, especialmente en software. En esencia, son una evolución de los diagramas de estados tradicionales, abordando sus limitaciones, como la 'explosión de estados' que ocurre cuan

Sistemas complejos: la brecha entre teoría y práctica

El artículo de Cambra.dev aborda un problema fundamental en el desarrollo de software moderno: la complejidad y fragilidad de los sistemas distribuidos. El autor, con una amplia experiencia en infraestructura de datos en empresas como Twitter, Google y Snowflake, observa una desconexión entre la ele

MVP: El secreto de Erlang y el desarrollo ágil

El concepto de 'Programa Mínimo Viable' (MVP, por sus siglas en inglés) es una idea poderosa para el desarrollo de software, y este artículo explora su significado y beneficios a través de un ejemplo histórico de Erlang. Un MVP es, esencialmente, el programa más pequeño posible que resuelve un probl

orígenes del código: los 'ur-lenguajes' revelados

Este artículo explora un concepto fundamental en el desarrollo de software: los "ur-lenguajes" (lenguajes ancestrales). La idea central es que, aunque existen miles de lenguajes de programación, muchos comparten patrones básicos de construcción y organización, agrupándose en familias o "ur-lenguajes

Diario de diseño revela claves de Tachyon

Tachyon es un proyecto de software de alto rendimiento, y como todo sistema complejo, sus desarrolladores han tomado una serie de decisiones de arquitectura cruciales a lo largo del tiempo. El repositorio de GitHub que se describe contiene los 'Architecture Decision Records' (ADRs) de Tachyon. Un AD

Priorizar proyectos: una lección de parques 'peores'

El artículo de substack.com, titulado "I went to America's worst national parks so you don't have to" (Fui a los peores parques nacionales de Estados Unidos para que tú no tengas que), no trata sobre parques nacionales en sí, sino sobre una estrategia de evaluación y priorización de proyectos utiliz

Rust: Maximiza el potencial con menos esfuerzo

El autor ha estado buscando el lenguaje de programación perfecto durante años, frustrado por las limitaciones de opciones populares como F#, TypeScript y C#. Si bien Rust ofrece un gran potencial, su curva de aprendizaje y complejidad (relacionada con la gestión de memoria y el sistema de tipos) han

Código: escribir para leer, no solo para ejecutar

El artículo "Code is run more than read" de Facundo Olano explora una perspectiva crucial en el desarrollo de software: la importancia de priorizar la experiencia del usuario y la mantenibilidad del código por encima de la conveniencia del desarrollador original. La idea central es que el código se

Menos interés en formación técnica: ¿qué está cambiando?

El artículo de Sunil Pai explora una tendencia preocupante en el mundo del desarrollo de software y la educación técnica: una disminución en la demanda de cursos y materiales de aprendizaje relacionados con APIs, frameworks y ecosistemas de desarrollo. Aunque la producción de código sigue siendo alt

Windows++: Framework ligero para apps en C++

Windows++ es un framework de aplicación ligero en C++ diseñado para simplificar el desarrollo de aplicaciones para Windows, especialmente en un contexto donde el tamaño y la flexibilidad son cruciales. Su origen se remonta a una necesidad: evitar la complejidad y rigidez de frameworks más grandes co

Toma busca Ingeniero Senior: código y liderazgo

Este anuncio busca un Ingeniero de Software Senior o Staff para Toma, una empresa acelerada por Y Combinator. La posición es crucial para la dirección técnica del equipo, la mentoría de otros ingenieros y la colaboración con los equipos de producto y diseño para crear experiencias de usuario excepci

LLM: Oráculos Ejecutables Mejoran la Calidad del Código

Este artículo explora una técnica prometedora para mejorar la calidad del código generado por modelos de lenguaje grandes (LLMs) como Claude y Codex: el uso de 'oráculos ejecutables' para restringir sus grados de libertad. Actualmente, los LLMs pueden generar código impresionante en tareas muy espec

Software web: la magia oculta tras la facilidad

El artículo "The Plumbing of Everyday Magic" explora la creciente complejidad y frustración de la creación de software web moderno, comparándola con la experiencia de tener que reparar manualmente la fontanería cada vez que se usa un grifo. La analogía ilustra cómo la facilidad de uso de las aplicac

Software espacial: desafíos y soluciones para la misión

El software para misiones espaciales enfrenta desafíos únicos que exigen una arquitectura radicalmente diferente a la utilizada en entornos terrestres. A diferencia de los servidores en un centro de datos, donde el rendimiento lento se puede solucionar agregando más recursos, los sistemas espaciales

LLMs y programación: el futuro del desarrollo

Este artículo explora cómo el autor está utilizando modelos de lenguaje grandes (LLMs) para desarrollar software de manera más eficiente y efectiva. El punto central es que, en lugar de reemplazar a los programadores, los LLMs están transformando el rol, desplazando el enfoque de la escritura de cód

Aislamiento en Erlang: ¿Solución o Limitación?

Este artículo explora las limitaciones del modelo de concurrencia basado en aislamiento, utilizando Erlang como ejemplo paradigmático. Erlang, conocido por su robustez y alta disponibilidad (como se evidencia en sistemas como WhatsApp), implementa un modelo de 'actores' donde cada proceso tiene su p

Recursión: A veces, la solución es recursiva

Este artículo explora una idea contraintuitiva en programación: a veces, la mejor solución para un problema recursivo es, precisamente, una solución recursiva. La premisa central es que, aunque teóricamente cualquier función recursiva puede convertirse en una iterativa, esta transformación a menudo

Atari 2600: Programar con 64 bytes, un reto genial

Este artículo explora la fascinante y extremadamente limitada experiencia de programar en Atari 2600 BASIC. Atari 2600 BASIC es una versión simplificada del lenguaje BASIC diseñada para la consola Atari 2600, una máquina con recursos computacionales increíblemente escasos. El autor, Hugues Johnson,

Rails resurge: ¿por qué este framework vuelve?

Este artículo explora el resurgimiento de Ruby on Rails (Rails) en el panorama del desarrollo web, a pesar de su relativa impopularidad actual. El autor, un desarrollador con experiencia en infraestructura y DevOps, redescubrió el placer de construir aplicaciones web de la manera tradicional utiliza

Teorema CAP: ¿Consistencia, disponibilidad o tolerancia?

El Teorema CAP es un concepto fundamental en el diseño de sistemas distribuidos, pero a menudo se malinterpreta. La mayoría de las personas familiarizadas con bases de datos conocen el acrónimo ACID, y muchos desarrolladores de sistemas distribuidos han oído hablar del Teorema CAP, aunque quizás no

Logs: Pensar en los usuarios, no solo en programadores

En el desarrollo de software, es común que los programadores se enfoquen en crear mensajes de registro (logs) pensando en su propia conveniencia para depurar y comprender el estado del programa. Sin embargo, un punto crucial, a menudo pasado por alto, es que la mayoría de los mensajes de registro de

Errores en software: clasificados y mejor gestionados

En el desarrollo de software, la gestión de errores es crucial para la experiencia del usuario y la fiabilidad del sistema. Evan Hahn, en su artículo, propone una clasificación fundamental de los errores en dos categorías: **errores esperados** y **errores inesperados**. Esta distinción, aunque apar

SQL vs NoSQL: La clave para entrevistas técnicas en 2026

El debate entre SQL y NoSQL ha evolucionado significativamente y ya no es una cuestión de 'cuál es mejor', sino de 'cuál es la opción más adecuada para el problema específico'. En 2026, la pregunta en entrevistas técnicas ya no busca una respuesta basada en dogmas de hace una década, sino una compre

Desarrollo: El código es solo el inicio

El artículo "Code has always been the easy part" explora una verdad fundamental en el desarrollo de software que a menudo se pasa por alto: escribir el código en sí mismo es la parte más sencilla del proceso. Durante décadas, la industria ha tendido a sobrevalorar la calidad del código como el princ

Level of Detail: Optimiza el desarrollo de software

Este artículo explora el concepto de 'Level of Detail' (LoD), originalmente utilizado en gráficos 3D para optimizar el rendimiento renderizando modelos con menos detalle a distancia, y lo aplica al desarrollo de software. La idea central es que, al igual que en gráficos, no siempre es necesario tene

Clawntown: Kubernetes explicado con cangrejos

Clawntown es un proyecto fascinante que ilustra el poder de Kubernetes de una manera sorprendentemente accesible y divertida. En esencia, Clawntown es una simulación interactiva de una isla habitada por cangrejos, construida y gestionada completamente a través de un clúster de Kubernetes. Pero, ¿qué

Software redundante: el riesgo del 'efecto plataforma'

El 'efecto plataforma interna' (Inner-Platform Effect) es un patrón de diseño de software, considerado un anti-patrón, que ocurre cuando los arquitectos de sistemas crean soluciones tan personalizables que terminan replicando, de forma imperfecta, la plataforma de desarrollo que están utilizando. En

Discord Revela Secretos de su Escalabilidad

Este artículo de Fullstack.zip analiza cómo Discord, una plataforma de comunicación popular, logra su rendimiento, escalabilidad y fiabilidad a gran escala, soportando billones de mensajes. La clave de su arquitectura reside en el uso del **Modelo de Actor**, un patrón de diseño que ha evolucionado

Stripe compra Metronome: ¿Problemas en su sistema de facturación?

Stripe adquirió Metronome por aproximadamente mil millones de dólares en enero de 2026, una decisión que ha generado preguntas sobre por qué no construyeron esta funcionalidad internamente. La adquisición revela desafíos fundamentales en la arquitectura de Stripe Billing, que fue diseñada en 2018 pa

Berkeley DB: El ADN de una Base de Datos Open Source

Este artículo analiza la arquitectura de Berkeley DB, una biblioteca de gestión de datos de código abierto, explorando su evolución a lo largo de dos décadas. La creación de Berkeley DB surgió de la necesidad de reemplazar paquetes hash propietarios y se basa en la filosofía de "hacer una cosa bien

SimCity en Texto: Un Juego Único en Emacs

ElCity es un juego de construcción de ciudades por turnos, único porque se ejecuta completamente dentro del editor de texto Emacs. Imagina un SimCity, pero en lugar de gráficos complejos, utilizas caracteres ASCII para representar edificios, carreteras y otros elementos. Esto no es solo una curiosid