← Glosario Concepto

Ley de las abstracciones con fugas

También: Law of Leaky Abstractions

  • software-design
  • architecture
  • abstractions
  • complexity
  • career-growth

Toda abstracción no trivial filtra, en algún grado, los detalles que pretendía esconder.

Origen

La acuñó Joel Spolsky en 2002, en el artículo “The Law of Leaky Abstractions” publicado en su blog Joel on Software. Spolsky había sido PM de Excel en Microsoft y co-fundó después Stack Overflow y Trello — escribía desde el sitio donde se ven las costuras. Su observación: las abstracciones existen para que no tengas que pensar en lo de abajo, pero siempre llega el momento en que sí tenés que pensar en lo de abajo, y tu producción depende de cuánto sepas justamente de aquello que la abstracción te prometió ignorar.

Ejemplo

TCP te promete entrega fiable y ordenada de paquetes sobre una red que pierde paquetes y los reordena. La abstracción funciona muy bien… hasta que tu aplicación móvil pasa de Wi-Fi a 4G en mitad de una request: ahí TCP no te salva, y tenés que entender retransmisiones, timeouts y MTU. El ORM te promete que olvides SQL: funciona hasta que la query genera un join cartesiano y tenés que abrir el explain plan. HTTP te promete request-response stateless: funciona hasta que necesitás cookies, auth, CSRF, idempotencia y de pronto sabés más de HTTP que de tu propia aplicación. El virtual DOM de React te promete que escribas como si re-renderizaras todo en cada cambio: funciona hasta que tenés un bug raro de reconciliación y tenés que entender los key, useMemo y el reconciler.

La consecuencia profesional es la paradoja del onboarding: las abstracciones modernas hacen que sea más fácil escribir las primeras 100 líneas de código y más difícil convertirse en senior. Para llegar a senior necesitás conocer las capas que la abstracción debería haberte ahorrado — exactamente las capas que, gracias a la abstracción, nadie te enseña.

Conceptos relacionados

Una idea por semana, contada con una historia

Si te sirvió, seguro te sirve el resto. Recorré el glosario o escribime qué concepto te falta.