Cuando comencé mi carrera en la industria del software (hace más de 18 años), siempre me llamó la atención la arquitectura de software, debido a que me gustaba entender como el software funcionaba, incluso, más allá de lo que cualquier usuario normal podía ver, me gustaba entender como funcionaban las cosas por dentro, por lo que literalmente, entraba a los repositorios de código y veía como estaba implementadas las cosas por dentro, prácticamente era como un minero, escarbando en el código para comprender el funcionamiento de las cosas y enserio que aprendí muchas cosas.
Durante mis expediciones por los repositorios, siempre me encontraba con que la documentación era pobre, un pequeño texto que explicaba de forma general el funcionamiento, algunos métodos comentados por aquí o algunas clases comentadas por allá, pero con suerte (y con mucha suerte) entre la documentación encontraba un diagrama de arquitectura, wow, ver un diagrama era revelador, ya que de un solo vistazo podía apreciar los elementos que componían el proyecto, como se comunicaban, las dependencias, protocolos de comunicación, tecnologías, etc. Ver un diagrama era entender en un minuto, lo que me podrías tomar horas o días con solo analizar el código y es justo allí, cuando nace mi pasión por la arquitectura de software y la importancia de documentarla el software de forma efectiva.
El objetivo de este libro es enseñarte a documentar arquitectura de software ágil, que se adapte a los tiempos modernos, donde los equipos de trabajo se han reducido de 10 o 20 personas, a células Scrum de 3 a máximo 8 personas, y donde los requerimientos pueden cambiar de manera frecuente y sin previo aviso.
En este libro vamos a cuestionar duramente la creencia de que entre más abundante sea la documentación, es mejor, que entre más refinado este un diagrama, aporta más valor, o incluso, que entre más elementos mostremos en un diagrama, da una mejor vista de la arquitectura, de esta misma forma, vamos a cuestionar la complejidad absurda que dan modelos como UML, SysML o ArchiMate, por lo que si tú eres de esas personas obstinadas que quiere hacer las cosas como dice el manual y no como es el mundo real, te invito ahora mismo a que dejes de leer este libro y busques uno de UML, SysML, ArchiMate o lo que sea, en este libro no vengo a enseñarte el manual, pues para eso seguro hay mejores y más completos libros que este, por el contrario, este libro pretende darte un vistazo fresco de cómo crear arquitectura de software con un enfoque ágil y del mundo real.
Finalmente, abordaremos unas de las tendencias más relevantes, que es la documentación como código, que consisten en la creación de la documentación de todo el software mediante herramientas de software, donde tanto el estilo del documento, como los diagramas mismos, son generados 100% mediante código, y no me mal intérpretes, no se trata de aprender otro lenguaje de programación, al contrario, son herramientas que con una sintaxis super simple, puedes crear diagramas de clases, secuencia, interacción, C4, etc.