viernes, 20 de marzo de 2015

Sobre integridad conceptual, arquitectura empresarial y grandes proyectos de software

El software, a pesar del impacto absolutamente tangible que tiene en las personas, en las empresas, y en la economía es sin embargo en sí mismo algo bastante intangible y maleable, algo que se mueve mucho en el terreno de las ideas y los conceptos, cuya concepción y construcción, a pesar de los esfuerzos en la creación de metodologías y herramientas, depende todavía de la inspiración, la opinión y el diseño de arquitectos y desarrolladores.

Esto convierte el diseño de software en una actividad apasionante...pero también algo artesanal e incierta.

Cuando, además, hablamos de grandes proyectos de software, que involucran a decenas e incluso centenas de personas, la libertad de pensamiento y diseño, que en otros ámbitos consideraríamos fuertemente beneficiosa, se puede convertir en peligrosa.

¿Por qué?

Pues porque si las distintas partes de un sistema complejo se piensan de forma separada tienden a no encajar bien, tienden a producir fallos, tienden a complicar el conjunto, tienden a hacerlo difícilmente asimilable tanto para el equipo técnico que lo debe evolucionar y mantener, como a los usuarios que lo deben emplear y para los cuales fue construido.

Y esto que ya es grave durante la construcción inicial del sistema, se convierte en casi mortal para su evolución y mantenimiento.

Un conjunto no coherente de soluciones que por separado pueden ser brillantes, se convierte en una especie de Frankestein poco gestionable. Paradojicamente, el todo puede ser menos, bastante menos, que la suma de las partes.

En ese sentido nos advierte Frederick P. Brooks Jr. en su libro 'The mythical man-month' a propósito del concepto que él denomina integridad conceptual.

Nos dice así:

conceptual integrity is the most important consideration in systems design. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas.

Como se puede ver, valora tanto la integridad conceptual que está dispuesto a sacrificar funcionalidades y soluciones si éstas no encajan bien en el todo. 

Toda una demostración de sabiduría y experiencia.

En este caso hablamos de un gran proyecto de software pero de una forma creo que muy parecida, aunque a otra escala, a una escala en que hablamos ya de mapas de sistemas, mapas de información y/o mapas de procesos, el concepto de arquitectura empresarial puede servir de planteamiento director para conseguir esa integridad conceptual a nivel empresarial, cuando se trata de que los sistemas y procesos se integren y colaboren de forma natural, sin solapes, sin gaps, sin excentricidades y sin planteamientos divergentes.

Sin restar ni un ápice de su importancia al talento, la creatividad y la innovación, todo lo contrario, cuando hablamos de ecosistemas complejos como los grandes sistemas software, el mapa de sistemas de una gran compañía o el mapa de procesos de una gran organización, el orden se hace necesario, se hace necesaria esa integridad conceptual de nos habla Brooks.