---
title: "Flujo de lava (programación)"
type: "antipattern"
slug: "lava-flow"
url: "http://localhost:3000/es/antipatterns/lava-flow.md"
description: "Problema del despliegue de software incompleto"
---
# Flujo de lava (programación)

> Problema del despliegue de software incompleto

En la [jerga](https://en.wikipedia.org/wiki/Jargon "Jargon") de la [programación informática](https://en.wikipedia.org/wiki/Computer%5Fprogramming "Computer programming"), el **flujo de lava** es un [antipatrón](https://en.wikipedia.org/wiki/Anti-pattern "Anti-pattern") que se produce cuando [código fuente](https://en.wikipedia.org/wiki/Source%5Fcode "Source code") escrito en condiciones subóptimas se despliega en un entorno de producción y posteriormente se amplía mientras todavía está en estado de desarrollo. El término deriva de la aparición natural de la lava que, una vez enfriada, se solidifica en roca difícil de eliminar. De forma análoga, ese código se vuelve difícil de refactorizar o reemplazar debido a las dependencias que surgen con el tiempo, lo que obliga a mantener la compatibilidad hacia atrás con el diseño original e incompleto.

## Causas

El **flujo de lava** puede producirse por diversas razones dentro de un [proceso de desarrollo de software](https://en.wikipedia.org/wiki/Software%5Fdevelopment%5Fprocess "Software development process"):

* La presión por cumplir plazos que hace que las soluciones temporales se vuelvan permanentes
* Documentación inadecuada que impide comprender el propósito del código
* Falta de pruebas automatizadas que hace que refactorizar sea arriesgado
* Cambios frecuentes en el equipo de desarrollo que provocan pérdida de conocimiento

## Consecuencias

El código sin refinar que pasa a formar parte de la infraestructura del software aumenta la complejidad del sistema, y la base de código se vuelve cada vez más difícil de entender y mantener. Esto conduce a:

* La necesidad de [compatibilidad hacia atrás](https://en.wikipedia.org/wiki/Backward%5Fcompatibility "Backward compatibility"), que puede ahogar la innovación e impedir la adopción de soluciones más nuevas y eficientes
* El aumento de la [deuda técnica](https://en.wikipedia.org/wiki/Technical%5Fdebt "Technical debt") que se acumula con el tiempo, lo que da lugar a mayores costes de cambio y mantenimiento
* Obstáculos para [refactorizar](https://en.wikipedia.org/wiki/Refactoring "Refactoring") o mejorar el sistema por miedo a romper componentes dependientes

## Impacto en los equipos

Los equipos de desarrollo suelen experimentar el impacto del **flujo de lava** cuando sus miembros entran y salen:

* Pérdida de conocimiento sobre aspectos del código del sistema cuando los desarrolladores originales se marchan
* Reticencia de los nuevos desarrolladores a refactorizar código que no les resulta familiar, lo que conduce a mayor complejidad a medida que añaden en lugar de limpiar

## Estrategias de mitigación

Varias prácticas pueden mitigar los efectos del antipatrón del **flujo de lava**:

* Promover buenas prácticas de documentación para una comprensión clara del código
* Fomentar [revisiones de código](https://en.wikipedia.org/wiki/Code%5Freview "Code review") periódicas para detectar pronto las prácticas subóptimas
* Priorizar la [refactorización](https://en.wikipedia.org/wiki/Refactoring "Refactoring") como parte integral del ciclo de vida del desarrollo
* Mantener un conjunto completo de [pruebas automatizadas](https://en.wikipedia.org/wiki/Automated%5Ftest "Automated test") para reducir el riesgo en los cambios
