Introducción
- ¿Qué se requiere para ser un buen arquitecto de software?
- Una persona técnicamente creíble.
- Un líder efectivo.
- Un mentor y creador de consenso.
- Un experto en el dominio.
- Optimista.
- Excelente descomponiendo problemas.
- Entendimiento de interfaces.
- Entiende que la complejidad es un enemigo.
- Un buen comunicador, un buen y prolífico escritor y documentador.
- Un buen líder y es excelente ganándose el respeto de todo el equipo técnico con el que trabaja.
- Interactúa con los clientes.
- Opina sobre el código.
- Trabajo colaborativo.

“La arquitectura de software es el conjunto de decisiones de diseño que, si se toman de forma incorrecta, pueden provocar la cancelación del proyecto.”
El software está hecho de software. Las grandes construcciones de software están hechas de componentes de software más pequeños, que a su vez están hechos de componentes de software más pequeños, y así sucesivamente.
- El software es recursivo y de naturaleza fractal, grabado y esbozado en código.
- Entender cómo funciona ese fractal es lo que nos permitirá diseñar y representar buenas arquitecturas de software.
<aside>
💡 La inmutabilidad del código es la razón por la cual las reglas de arquitectura de software son tan consistentes en todos los tipos de sistemas, sin importar el tipo de aplicación que diseñamos.
</aside>
Administrar estos 3 principios fundamentales nos diferenciará como ingenieros de software:
- Tiempo y cambio: Cómo el código requerirá de adaptación a lo largo del tiempo.
- Escala y crecimiento: Cómo una organización necesitará adaptarse a medida que evoluciona.
- Compensaciones y costos: Cómo una organización toma decisiones, basadas en las lecciones de tiempo y cambio y de escala y crecimiento.
<aside>
💡 Dejemos de pensar como la liebre “demasiado confiados” y comencemos a asumir la responsabilidad por el desastre que hemos hecho.
</aside>
- El objetivo de la arquitectura de software es minimizar los recursos humanos necesarios para construir y mantener el sistema requerido.
Paradigmas de Software
Los paradigmas son formas de programación. Un paradigma le dice qué estructuras de programación crear y cuándo usarlas.
- Programación estructurada: Hace uso de estructuras de selección (if/then/else), de iteración (while/for), subrutinas y funciones para diseñar código.
- Impone disciplina de transferencia directa de control.
