La deuda técnica es noticia
Este mes hemos asistido a una avalancha de noticias y comentarios en las redes sociales sobre la deuda técnica. Las historias y los comentarios se han visto impulsados por los graves problemas de Southwest Airlines en torno al huracán de las pasadas Navidades, que obligaron a la aerolínea a cancelar miles de vuelos, junto con la interrupción de los sistemas de la Administración Federal de Aviación de la semana pasada, que también provocó la cancelación o el retraso de miles de vuelos.
¿Qué es la deuda técnica y por qué los líderes de las empresas deben tomar medidas?
Cómo se produce la deuda técnica
El término "deuda técnica" se utiliza mucho para describir la falta de inversión de una organización en el mantenimiento del software del que depende. La gente lo utiliza de diferentes maneras, pero los desarrolladores tienden a entenderlo como la falta de tiempo y dinero para corregir errores, reestructurar el código y revisar los sistemas. El término fue acuñado por el desarrollador Ward Cunningham hace unos 30 años.
La deuda técnica puede acumularse a propósito, al igual que la deuda bancaria. Por ejemplo, la dirección de una empresa puede pedir a sus desarrolladores que den prioridad a la rápida introducción en el mercado de nuevas funciones atractivas, con el fin de adelantarse a los competidores en una oportunidad de crecimiento. Es posible que se acuerde que la plataforma de software subyacente no se mantendrá actualizada y perfectamente mantenida por ahora, pero los desarrolladores volverán a ella más tarde, cuando tengan más tiempo y antes de que se convierta en un problema urgente (¡esa es la teoría, al menos!).
La deuda tecnológica también puede producirse porque una decisión tomada de buena fe en un momento dado resulta más tarde llevar por el camino equivocado, y acaba creando una deuda técnica inesperada.
Otra posibilidad es que la deuda técnica se acumule sin que los dirigentes de una organización lo sepan, o que los ejecutivos sepan que está creciendo pero no sean plenamente conscientes de que podría causar problemas catastróficos a la organización sin previo aviso. Estas situaciones son probablemente las más peligrosas, pero incluso la deuda técnica acumulada intencionadamente puede descontrolarse, como la factura de una tarjeta de crédito.
La deuda técnica perjudica la productividad y la eficiencia. Empieza siendo pequeña, pero tiende a multiplicarse rápidamente, al igual que el coste de su reparación.
Why tech debt matters
Parece casi demasiado obvio decirlo, pero cuanta más deuda técnica se acumula, más riesgo corre la organización. Aumenta la probabilidad de que se produzca un fallo técnico importante y pone en peligro la máquina que genera dinero. Una interrupción causada por la deuda técnica puede paralizar la empresa hasta que se solucione, incurrir en costes significativos y dañar gravemente las relaciones con los clientes y otras partes interesadas.
Puede que la empresa soporte un cierto nivel de deuda técnica en condiciones normales, pero un acontecimiento extraordinario -como la tormenta del mes pasado en Norteamérica- puede causar problemas extraordinarios.
E incluso si no se producen fallos graves (o no se han producido todavía), la deuda técnica tiene un precio, que podríamos llamar los intereses de la deuda.
Esto se debe a que la deuda técnica perjudica la productividad y la eficiencia. Empieza siendo pequeña, pero tiende a multiplicarse rápidamente, al igual que el coste de su reparación. Pronto puede resultar difícil localizar todos los problemas, lo que significa que cada vez se dedica más tiempo a encontrarlos y gestionarlos. Si los desarrolladores están ocupados gestionando urgentemente la deuda técnica, no tienen libertad para crear nuevos tipos de valor o aplicar tecnologías emergentes.
El uso de soluciones rápidas para mantener el software más o menos viable implica que el desarrollo de nuevas funcionalidades lleva más tiempo, ya que trabajar con código enrevesado, poco claro y obsoleto requiere más tiempo. (Nuestro colega Martin Fowler ha escrito muy bien sobre cómo la acumulación de "cruft" ralentiza la creación de nuevas funcionalidades).
Es necesario crear una estrategia para la deuda técnica al principio de la vida de una empresa o proyecto. Debe equilibrar los objetivos a corto y largo plazo y aplicarse de forma coherente. Hay que dedicar recursos a la mejora continua. Esto puede significar, por ejemplo, invertir en herramientas para los desarrolladores que les ayuden a trabajar más y más rápido, o en la automatización de tareas repetitivas como las pruebas de código. Este tipo de inversión en la eficacia de la ingeniería puede reportar grandes beneficios a largo plazo, y es lo contrario de la deuda técnica.
Es en la parte operativa de una empresa donde la deuda técnica tiende a acumularse y a menudo puede permanecer oculta. Sin embargo, especialmente en sectores altamente competitivos como el transporte aéreo y los servicios financieros, se puede encontrar un enorme valor empresarial en la corrección de este tipo de deuda técnica. Las aerolíneas, por ejemplo, son empresas complejas y muy reguladas que requieren una gran coordinación entre las funciones que gestionan las tripulaciones, los pasajeros y el mantenimiento de los aviones. Nuestra experiencia trabajando con aerolíneas nos dice que las mejoras incrementales en eficiencia operativa y satisfacción del cliente, apoyadas por la tecnología, pueden traducirse en posiciones más fuertes en el mercado.
Otra desventaja de la deuda técnica es que puede bajar la moral de los desarrolladores, que en consecuencia se vuelven menos productivos y menos eficientes, lo que a su vez puede hacer que escriban un código menos eficaz. También puede dificultar la contratación y retención de desarrolladores. Puede que no quieran trabajar en un entorno en el que pasarán gran parte de su tiempo manteniendo en funcionamiento una plataforma de software que cruje.
Los desarrolladores atados con urgencia a la gestión de la deuda técnica no tienen libertad para crear nuevos tipos de valor o aplicar tecnologías emergentes.
Evitando los problemas de la deuda técnica
Para evitar los problemas anteriores, la deuda técnica debe gestionarse de forma intencionada. He aquí algunas ideas sobre cómo limitar tanto los inconvenientes continuos como las amenazas más agudas.
Escucha a tus desarrolladores. Ellos son los que están más cerca de los problemas cotidianos que genera la deuda técnica y de los riesgos más amplios que están en juego.
Escucha a tus clientes. Los usuarios finales suelen detectar fallos que son indicativos de problemas más amplios de deuda técnica. Asegúrate de que estos valiosos comentarios lleguen a la dirección de tu organización y no se queden en el servicio de atención al cliente y los equipos de soporte técnico.
Prestar atención a un aumento de los retrasos y los costes. La lentitud en la comercialización de nuevos productos, los continuos problemas operativos y el aumento de los costes pueden deberse, al menos en parte, a la deuda técnica.
Mide tu deuda técnica. Entre las métricas útiles se incluyen el feedback de los clientes, los retrasos en los pagos, las interrupciones en las operaciones y el cumplimiento, los plazos más largos para implementar nuevas funciones y los plazos más largos para incorporar nuevos desarrolladores.
Prioriza en función del riesgo. Puede que no sea posible ocuparse de todo a la vez, y confiar en soluciones improvisadas hará que se acumulen los problemas. Un foro en el que los líderes empresariales y tecnológicos debatan sobre este tema será de gran ayuda.
Asigna recursos. Concede a los responsables de tecnología una determinada cantidad de tiempo y presupuesto para solucionar los problemas e impedir que surjan otros nuevos. Confía en que utilicen los recursos adecuadamente.
Mejorar continuamente. Tanto si se trata de su código como del apoyo que presta a los desarrolladores, una cultura de mejora continua mitiga la deuda técnica y, por supuesto, aporta beneficios más amplios.
Consigue que tu estrategia empresarial y tu estrategia tecnológica trabajen juntas. La deuda técnica puede deberse a una desconexión entre ambas, mientras que si se consigue que trabajen juntas y hablen en foros conjuntos se obtendrán mayores eficiencias y oportunidades de crecimiento.
Es necesario crear una estrategia para la deuda técnica al principio de la vida de una empresa o proyecto. Debe equilibrar los objetivos a corto y largo plazo y aplicarse de forma coherente.
La gestión de la deuda técnica es una opción estratégica
Especialmente en tiempos de crisis económica, las empresas deben priorizar cuidadosamente sus gastos. A menudo puede parecer que la mejor opción es reducir la inversión en mantenimiento y pagar la deuda técnica. Pero, aunque eso pueda funcionar a corto plazo, los efectos de la deuda técnica pueden acumularse con el tiempo y acarrear graves consecuencias.
Si consigues encontrar el equilibrio entre la inversión en nuevas funciones y el control de la deuda técnica, tu empresa tendrá una ventaja estratégica. Navegarás por el camino entre la inversión insuficiente (que podría llevar a la catástrofe) y la inversión excesiva (que podría llevar al despilfarro de efectivo). Por el camino, mejorarás tu patrimonio de sistemas y facilitarás el trabajo con los activos existentes, así como el apoyo a los equipos que trabajan en ellos. Puede que incluso obtengas nuevo valor de esos sistemas antiguos, lo que contribuirá directamente a tu cuenta de resultados.
Utilizaremos nuestra experiencia de trabajo con la deuda técnica, y la de nuestros colegas, para volver a escribir sobre este tema próximamente.