De la deuda técnica a las metodologías ágiles
Recientemente buscando información sobre la optimización del desarrollo de software, encontré en una publicación digital un artículo referente a lo que se denomina Deuda Técnica. Este concepto es una metáfora acuñada en el año 1992 por Ward Cunningham para definir lo que las organizaciones tienen que pagar en el desarrollo de software por hacer las cosas mal, de forma apresurada o saltándose las fases necesarias.
Este concepto ha evolucionado y se ha enriquecido con los años. Actualmente se ha consensuado que el concepto de Deuda Técnica pretende poner en relieve las obligaciones que contraemos al desarrollar un software cuando adoptamos soluciones rápidas de forma intencional o no. Estas obligaciones a corto o largo plazo hay que ir pagándolas, porque la solución adoptada no podrá seguir funcionando o evolucionando. Un control sobre la Deuda Técnica intencional es beneficioso para el desarrollo, porque permite desplegar de forma rápida soluciones al mercado. Pero está ahí y hay que pagarla porque llegará un día en que la carga que habrá generado hará inviable la evolución de producto.
Con esta premisa actualmente existen metodologías de desarrollo con métricas para evaluar y gestionar el nivel de deuda existente en un proyecto y optimizar su uso. Al reflexionar sobre ello encontré una similitud con lo que viví hace años como ingeniero de planta al poner en funcionamiento instalaciones y líneas de producción, cuando tuve que afrontar un proyecto, que condicionado por la urgencia de su puesta en marcha, me llevaba a adoptar soluciones que sabía que no eran las adecuadas ‘académicamente’. Evidentemente estaba generando una Deuda Técnica que tendría que pagar en el menor tiempo posible.
¿Podríamos generalizar este concepto a otros sistemas organizativos? Podríamos pensar que, al desplegar un proceso de trabajo de forma rápida en una organización, si adoptamos soluciones con una urgencia, hecho que implica no hacer bien las cosas, asumiremos algo equivalente a la Deuda Técnica. Pero no, porque están involucradas personas, y ésta necesitan de una cualificación determinada para realizar unas tareas, tienen curvas de aprendizaje más o menos pronunciadas, sufren frustración al no ver sentido a su trabajo, con lo que una búsqueda rápida puede generar reacciones de rechazo.
Necesitamos una forma de trabajo que permita estas adaptaciones rápidas a los requerimientos cambiantes del mercado actual desde el punto de vista de las personas. Para ello, el mundo del software viene de nuevo a nuestra ayuda y nos muestra el camino a seguir. Desde hace unos pocos años se vienen utilizando metodologías que intentan optimizar el trabajo de equipos. El trabajo planificado tradicional se ha demostrado que no escala bien el uso de los recursos y no predice correctamente los plazos. En contraposición se idearon las Metodologías Ágiles, para potenciar dentro de un ciclo de mejora continúa acelerada la comunicación entre los integrantes del equipo y el cliente.
Los Métodos Ágiles permiten disponer de forma rápida de una solución viable con la mayor parte de los requerimientos básicos del proyecto y disponer un calendario ajustado del final de los trabajos. Se utilizan equipos reducidos auto gestionados que permite mediante unas técnicas sencillas basadas en ciclos de trabajo rápidos y asignación de roles, disponer de forma rápida y flexible de un producto viable. Mediante un control de los requerimientos y el control del trabajo de cada ciclo, es posible evaluar el trabajo realizado, adaptarse a cambios y planificar. En resumen, disponemos de control sobre el trabajo en un escenario flexible.
Estas metodologías están dado el salto del mundo tecnológico y dado el éxito obtenido en las compañías más punteras, hoy en día se comienzan a utilizan en muchos ámbitos de la empresa y en general en cualquier actividad en que los requisitos sean inciertos y se requiera rapidez y flexibilidad. La optimización del trabajo está en las personas y eso lo han entendido claramente los grandes de la tecnología.
Jordi Esteban
Director Área Informática