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.
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.
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.