“Si funciona, no lo toques” — qué es, esencia del principio y riesgos

Autor: IT Sectr Publicado: 2026-07-30 Tiempo de lectura: 9 min

“Si funciona, no lo toques” — es una regla no escrita del desarrollo que indica que el código que funciona no debe modificarse sin una razón de peso, incluso si su estructura parece subóptima. El principio se basa en la observación empírica: cualquier cambio conlleva el riesgo de introducir un nuevo error, y el beneficio de la refactorización puede no justificar el esfuerzo. Según Wikipedia (2026), este idioma se utiliza ampliamente en ingeniería, política y programación como una estrategia conservadora de gestión de cambios.

Puntos clave

  • “Si funciona, no lo toques” — principio que aconseja no modificar el código que funciona sin una necesidad objetiva.
  • Razón principal — cada cambio introduce el riesgo de nuevos errores, que pueden ser peores que los problemas actuales.
  • Cuándo aplicarlo — en proyectos heredados, con plazos ajustados y en sistemas críticos con altos requisitos de estabilidad.
  • Riesgo principal — acumulación de deuda técnica y oportunidades perdidas de mejorar la arquitectura.
  • Equilibrio — el principio no elimina la necesidad de refactorizar, sino que exige un enfoque reflexivo ante cada cambio.

¿Qué es el principio “si funciona, no lo toques”?

“Si funciona, no lo toques” — es una regla empírica que advierte a los desarrolladores contra la realización de cambios en el código que funciona sin motivos suficientes. El principio se basa en estadísticas simples: la gran mayoría de los defectos se introducen durante la modificación del código existente.

El principio no es un dogma — es más bien una heurística que ayuda a tomar decisiones en condiciones de incertidumbre. Cuanto más compleja y enmarañada es la base de código, mayor es la probabilidad de que un cambio “inocente” rompa algo que nadie esperaba que se rompiera.

Según un estudio de Microsoft Corporation (2024), aproximadamente el 60% de todos los incidentes críticos en producción están relacionados con cambios recientes en el código que se hicieron con buenas intenciones pero no se probaron lo suficiente en condiciones de carga real.

Historia y origen del principio

El idioma “Si funciona, no lo toques” se remonta a la cultura de ingeniería estadounidense de mediados del siglo XX. El uso documentado más antiguo se atribuye a Bert Lance (1977), quien trabajaba en el Comité de Finanzas del Senado de EE. UU. y se oponía a la regulación excesiva.

En programación, el principio proviene de la ingeniería de hardware, donde reemplazar un chip que funcionaba por uno nuevo podía tener consecuencias impredecibles. En el contexto del software, este principio cobró especial relevancia con la creciente complejidad de los sistemas de software y la aparición del código heredado.

Curiosamente, en programación, el principio tiene su lado opuesto — “funciona, pero mejor no tocarlo” a menudo se convierte en una excusa para evitar la refactorización, lo que a largo plazo lleva a una acumulación crítica de deuda técnica. Según la consultora Thoughtworks (2023), alrededor del 40% de los proyectos enfrentan problemas graves debido al conservadurismo excesivo respecto a los cambios.

Cuándo aplicar el principio

El principio “si funciona, no lo toques” es especialmente relevante en situaciones donde el costo de un error supera el beneficio potencial de los cambios.

Proyectos heredados sin pruebas

En código heredado que no está cubierto por pruebas, cualquier cambio es una ruleta rusa. Si un desarrollador no puede verificar que un cambio no ha roto módulos adyacentes, la mejor estrategia es no tocar el código que funciona. La excepción son solo errores críticos o requisitos de seguridad.

Sistemas críticos

En sistemas donde el tiempo de inactividad es inaceptable o el costo de un error es enorme — software médico, aviónica, transacciones financieras — el principio “si funciona, no lo toques” es el estándar de facto. Cualquier cambio pasa por una aprobación y pruebas de múltiples etapas.

Plazos ajustados

Si el lanzamiento es mañana y el código funciona, no intentes mejorar su arquitectura. Cambia solo lo que afecta directamente la funcionalidad del lanzamiento. Aplaza la refactorización al siguiente sprint (pero no te olvides de ella).

Situación¿Aplicar el principio?Alternativa
El código funciona pero es feoSí, si no hay pruebasEscribir pruebas, luego refactorizar
Código con error conocidoNoCorregir el error con una prueba
Vulnerabilidad de seguridadNoCorregir inmediatamente
Dependencia obsoletaParcialmenteActualizar con pruebas
Bajo rendimientoDepende del SLAPerfilar, luego optimizar

Riesgos de seguir el principio

Seguir ciegamente el principio “si funciona, no lo toques” conlleva no menos riesgos que una refactorización interminable. Examinemos los principales peligros.

Acumulación de deuda técnica

Si cada desarrollador sigue este principio, la base de código se convierte rápidamente en un “pastel de capas” de soluciones obsoletas, parches y algoritmos subóptimos. Tarde o temprano, la deuda técnica se vuelve insostenible — cualquier cambio requiere semanas de análisis.

Oportunidades de optimización perdidas

A veces, un cambio que parece riesgoso en realidad mejora significativamente el rendimiento o la seguridad. El principio “si funciona, no lo toques” no debe bloquear cambios que aporten beneficios medibles — reducir costos de servidor, acelerar la carga de páginas, mejorar la seguridad.

Pérdida de competencias

Cuando un equipo no toca ciertas partes del código durante años, pierde la comprensión de cómo funcionan. El desarrollador clave se va — y el código se convierte en legado sin posibilidad de soporte. El principio debe aplicarse teniendo en cuenta el mantenimiento a largo plazo del proyecto.

El término medio: refactorización sin fanatismo

La estrategia óptima no es seguir el principio ciegamente, sino aplicarlo de manera consciente, teniendo en cuenta el contexto. La refactorización es necesaria, pero debe ser segura.

La regla del boy scout

La regla del boy scout en programación: “Deja el código más limpio de lo que lo encontraste.” Si un desarrollador realiza un cambio en un módulo, debe mejorar su estructura, pero dentro de límites razonables. No reescribir todo desde cero, sino al menos renombrar variables ilegibles y agregar comentarios.

Refactorización bajo la protección de pruebas

Las pruebas son la única forma de aplicar de manera segura el principio “si funciona, no lo toques”. Si el código está cubierto por pruebas, cualquier refactorización se vuelve predecible: el desarrollador cambia el código, ejecuta las pruebas y ve si algo se rompió. Sin pruebas — no lo toques. Con pruebas — refactoriza con confianza.

kotlin
// Ejemplo: refactorización segura con cobertura de pruebas
class PriceCalculator {
    fun calculatePrice(basePrice: Double, discount: Double): Double {
        // Código antiguo pero funcional
        return basePrice - (basePrice * discount / 100.0)
    }
}

// Prueba que protege contra regresiones
class PriceCalculatorTest {
    fun testCalculatePrice() {
        val calc = PriceCalculator()
        assertEquals(90.0, calc.calculatePrice(100.0, 10.0))
    }
}

Este ejemplo demuestra el enfoque correcto: primero la prueba, luego la refactorización. Si la prueba pasa, el cambio es seguro. El principio “si funciona, no lo toques” se transforma en “si funciona bajo pruebas, refactoriza con confianza.”

Ejemplos reales de la práctica

Veamos escenarios reales donde el principio “si funciona, no lo toques” resultó tanto salvador como destructivo.

Caso salvador: problema similar al Y2K

Un desarrollador descubrió que el código de procesamiento de fechas usaba el formato DD/MM/AA en lugar de AAAA. El código funcionaba correctamente desde 2000 hasta 2025. A pesar del deseo de “arreglarlo”, dejó el código como estaba, limitándose a un comentario. En 2026, la empresa actualizó el sistema y la nueva solución manejaba correctamente los siglos. Un cambio prematuro habría roto la lógica funcional.

Caso destructivo: pérdida de datos por una “mejora”

Un ingeniero decidió “mejorar” el código antiguo pero funcional de importación de datos reemplazándolo con una biblioteca moderna. No tuvo en cuenta que la biblioteca antigua manejaba un caso límite específico que no estaba documentado. Después del lanzamiento — pérdida masiva de datos. El principio “si funciona, no lo toques” fue violado y el costo del error fue de dos semanas de trabajo del equipo para la recuperación.

Preguntas frecuentes

¿El principio “si funciona, no lo toques” siempre es bueno?

No, seguir ciegamente el principio lleva a la acumulación de deuda técnica y pérdida de flexibilidad del proyecto. El enfoque óptimo es la aplicación consciente en situaciones donde el riesgo del cambio supera el beneficio potencial. Es importante evaluar cada caso individualmente.

¿Cuándo definitivamente vale la pena violar el principio?

Violar el principio es necesario al descubrir vulnerabilidades de seguridad, errores críticos que afectan los datos del usuario y al actualizar dependencias con vulnerabilidades conocidas. En estos casos, el riesgo de la inacción supera el riesgo de los cambios.

¿Cómo refactorizar código heredado sin riesgos?

La única forma segura es primero cubrir el código con pruebas (pruebas de caracterización), luego realizar la refactorización en pequeños pasos con ejecución constante de las pruebas. Sin protección de pruebas, el principio “si funciona, no lo toques” debe aplicarse estrictamente.

¿Por qué los desarrolladores experimentados a menudo violan este principio?

Los desarrolladores experimentados violan el principio de manera consciente — ven las consecuencias no obvias de la implementación actual: errores futuros, cuellos de botella de rendimiento, problemas de escalabilidad. Sus decisiones se basan en la experiencia, no en el miedo a los cambios.

¿Cómo encontrar el equilibrio entre estabilidad y desarrollo?

El equilibrio se logra a través de una cultura de pruebas y revisión de código. Si el código está cubierto por pruebas, la refactorización es segura. Si no, cualquier cambio debe ser mínimamente necesario. El principio “si funciona, no lo toques” no es una prohibición de cambios, sino una exigencia de conciencia.

Resumen

  • “Si funciona, no lo toques” — principio empírico que advierte contra la modificación del código que funciona sin una razón de peso.
  • Origen — de la cultura de ingeniería de mediados del siglo XX, popularizado en programación como heurística de gestión de riesgos.
  • Cuándo aplicarlo — en proyectos heredados sin pruebas, en sistemas críticos y con plazos ajustados.
  • Riesgo principal — acumulación de deuda técnica, pérdida de flexibilidad y oportunidades de optimización perdidas.
  • El término medio — “si funciona bajo pruebas, refactoriza con confianza.” Las pruebas son la única garantía de cambios seguros.
  • La regla del boy scout — deja el código más limpio de lo que lo encontraste. Incluso una pequeña mejora importa.
  • Recomendación: no uses el principio como excusa para evitar la refactorización. Aplícalo de manera consciente, evaluando los riesgos y beneficios de cada cambio.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también