Deuda tecnológica o deuda técnica

El concepto de deuda tecnológica, también conocida como deuda técnica, es muy similar al concepto tradicional de deuda económica. De la misma manera que cuando queremos acometer un proyecto para el que no tenemos fondos suficientes pedimos un crédito al banco y nos prestan un dinero que tendremos que devolver con intereses, en la deuda tecnológica también adquiriremos una deuda con nuestro código fuente que igualmente tendremos que saldar con intereses.

Deuda Tecnológica

La deuda

Y si una deuda económica la adquirimos a cambio de dinero, la deuda tecnológica la adquirimos a cambio de tiempo, el tiempo que ahorraremos a costa de planificar plazos imposibles de cumplir, de escatimar recursos en los procesos de testeo y/o refactorizacion, de no dedicar los recursos suficientes en el diseño inicial, o lo que es peor de no disponer de un diseño inicial, etc.

Es decir, adquiriremos una deuda al no hacer las cosas bien, y esto generalmente viene dado por dos motivos principales:

  1. Omitir o reducir los recursos necesarios en las etapas fundamentales del proceso de desarrollo de software.
  2. Existencia de una brecha de experiencia y/o conocimientos entre el equipo de desarrollo y el proyecto a ejecutar.

Cierto es también que en ocasiones la deuda técnica simplemente la heredaremos al hacernos cargo de un proyecto ya iniciado, pero el origen del problema es el mismo.

Los intereses

Y con la deuda vienen los intereses en forma de aumento de la complejidad en la mantenibilidad de la aplicación, y se manifestarán principalmente de dos formas:

  1. Aumento de la complejidad del desarrollo. Cuanto más avancemos en el proyecto más complicado se hará seguir avanzando, invirtiendo mucho más tiempo del necesario en cualquier tipo cambio o nueva funcionalidad por pequeños que sean.
  2. Incremento del número de errores. Lo que provocará que gastemos mucho tiempo subsanándolos en lugar de invertirlo en tareas que realmente aportan valor.

Es posible incluso que cuando empecemos a hacer uso del crédito tengamos un periodo más o menos largo de carencia, pero es seguro que los intereses aparecerán, y en ningún caso nos libraremos de pagarlos

Además, en función de las condiciones en que hayamos adquirido la deuda, y sobre todo si no la vamos saldando y dejamos que crezca, pueden aparecer una serie de consecuencias entre las que destacar las relacionadas con las personas, que en el caso del desarrollo de software son los distintos colectivos relacionados con el proyecto:

  1. El cliente se quejará por falta de fiabilidad debido al número de errores de la aplicación.
  2. Los programadores se quejarán porque son consciente de que no se están empleando buenas prácticas, cosa que les impide hacer su trabajo adecuadamente.
  3. Los jefes se quejarán por el bajo rendimiento del equipo de desarrollo.

Una situación desagradable para todos y que deberemos evitar a toda costa.

Cómo evitar la deuda tecnológica

La buena noticia es que adquirir o no una deuda tecnológica, en muchas de las situaciones depende de nosotros y de nuestro equipo, y aunque no existe una receta mágica para evitarla, podemos tener en cuenta una serie de recomendaciones que contribuirán a evitarla.

En primer lugar hagamos una buena planificación y priorización. Si tenemos que adquirir una deuda que no sea porque hemos planificado mal, o lo que es peor aún, no adquiramos una deuda por mala planificación cuando además tenemos los recursos necesarios.

Y en el caso de no disponer de los recursos suficientes, debemos tener en cuenta que cada tarea conlleva su tiempo, que no podemos encajar cuatro en el hueco de tres y que si la planificación se complica siempre podemos:

  1. Sumar más recursos al proyecto
  2. Ampliar los plazos
  3. Acotar el alcance

En segundo lugar creemos unas condiciones favorables para el desarrollo de código de calidad.

  1. Establezcamos una metodología de desarrollo: Scrum, Kanban, Agile, Lean, en cascada o cualquier otra, y cumplámosla a rajatabla.
  2. Asegurémonos de disponer de un circuito de entornos de desarrollo adecuado.
  3. Escribamos código de calidad. Un código limpio y libre de olores favorecerá el mantenimiento y el crecimiento de nuestra aplicación.
  4. Promovamos la refactoriza del código fuente. Recuerda la regla de los Boys Scouts, dejar el campo más limpio de lo que lo encontraste.

Preocupemonos de generar un buen ambiente de trabajo, hagamos que sea distendido, fomentemos las tareas en equipo y la participación.

Y si estas recomendaciones no son suficiente, siempre tenemos dos opciones más:

  1. Adquirir una deuda, nos guste o no en ocasiones es necesario, en el siguiente apartado desarrollamos este planteamiento.
  2. No ejecutar el proyecto. A veces decir no puede ser la mejor solución, no siempre todas las propuestas son viables, o simplemente puede la brecha entre recursos disponibles y recursos necesarios sea insalvable. Si es el caso, asegurémonos de haber analizado todas las posibilidades primero, seamos asertivos y sobre todo no usemos este recurso como excusa para librarnos de proyectos que no nos interesan.

Cuándo adquirir una deuda tecnológica

La respuesta sencilla sería nunca, pero como todos sabemos la realidad no es siempre tan favorable cómo nos gustaría, y el desarrollo de software no es una excepción. Por norma general, el desarrollo de software atiende a cuestiones de la vida cotidiana, y en un alto porcentaje de las situaciones a cuestiones relacionadas con el ámbito laboral, un ámbito muy exigente que requiere versatilidad e inmediatez.

Así que en ocasiones la necesidad de llegar a una fecha concreta con ciertas funcionalidades es imperativa. La adaptación del software a una nueva ley, la pérdida de la oportunidad si no llegamos a la fecha equis con aquella funcionalidad o dar solución a una problemática que por factores circunstanciales se ha convertido en crítica son algunas de los motivos que pueden hacernos decidir adquirir una deuda.

Lo realmente importante si adquirimos una deuda es ser conscientes de que lo estamos haciendo, comunicarlo a las partes implicadas y tener claro que vamos a tener que saldarla, obteniendo el compromiso tanto del equipo como de los superiores.

Conclusión

En esta entrada hemos visto que es la deuda tecnológica, cómo nos afecta y algunos consejos sobre cómo evitarla. Nos queda pendiente ver las estrategias que podemos seguir para saldarla, pero eso da para otra entrada.

Si te has sentido identificado al leer este artículo no pienses que eres uno de los pocos desafortunados que la sufren, lamentablemente y en contra de lo que cabría esperar, la deuda tecnológica es una situación mucho más generalizada de lo que imaginamos. Una gran cantidad de compañías se enfrentan a este fenómeno a diario, llegando a convertirse en un factor crítico en algunas de ellas.

Afortunadamente la industria del desarrollo de software ha vivido una evolución vertiginosa en los últimos años, y algunos de los aspectos que han generado más interés entre la comunidad han sido los relacionados con las técnicas de desarrollo de código de calidad, así que aprovechemos esta concienciación global y contribuyamos a desarrollar un código de mayor calidad.

Créditos, referencias y artículos relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *