Has llegado al final. Empezaste este curso con una pregunta aparentemente simple — ¿qué es un patrón de diseño? — y lo terminas habiendo construido, pieza a pieza, una plataforma completa de pedidos a domicilio: PideYa. Lo que comenzó como una configuración global y un notificador de correos es hoy, en tu cabeza, un sistema con carta componible, checkout orquestado, pedidos con ciclo de vida, reparto coordinado y hasta una versión distribuida con sus sagas y sus circuit breakers. Esta última lección no introduce nada nuevo: mira atrás para fijar lo esencial, te da una vara de medir para autoevaluarte, y te propone los primeros 90 días del camino que sigue.
Contenido
- El viaje completo: PideYa como espejo
- Las 7 ideas-fuerza del curso
- Autoevaluación final: sabes X si puedes Y
- Próximos pasos: una ruta de 90 días
- Despedida
El viaje completo: PideYa como espejo
Cada módulo del curso dejó su capa en PideYa. Recorrerlas en orden es recorrer la madurez de cualquier diseñador de software:
| Módulo | Lo esencial | Su huella en PideYa |
|---|---|---|
| 1. Introducción | Un patrón es una solución nombrada a un problema recurrente en un contexto; SOLID como suelo; UML como pizarra compartida | El vocabulario y los principios con los que juzgamos todo lo demás |
| 2. Creacionales | Separar el cómo se crea del cómo se usa | ConfiguracionPideYa (y su crítica), los notificadores por Factory Method, los mercados España/México, Pedido.Builder, "repetir mi último pedido" |
| 3. Estructurales | Componer objetos en estructuras flexibles sin heredar de más | AdaptadorPayPal, la carta como Composite, los extras como Decorator, FachadaCheckout, los iconos Flyweight del mapa, los proxies de imágenes y permisos |
| 4. Comportamiento | Repartir responsabilidades y comunicación entre objetos | La cadena de validación, el panel con undo, las reglas de promoción, CentralReparto, el carrito con Memento, los estados del pedido con Observer y State, las estrategias de envío |
| 5. Aplicación | El patrón se elige por el problema, no por catálogo; refactorizar hacia patrones; los antipatrones acechan | El método de selección, los patrones reconocidos en JDK/Spring/Hibernate, la disciplina de Fowler y Kerievsky |
| 6. Avanzados | Las mismas intenciones, estiradas sobre arquitecturas, redes y concurrencia | PideYa hexagonal con Repository y DI; después partida en servicios con API Gateway, Saga, Outbox e idempotencia; inmutabilidad y virtual threads bajo carga |
| 7. Recursos | El aprendizaje continúa: libros, práctica deliberada y comunidad | Tu biblioteca, tu plan de práctica y tu PideYa real como proyecto personal |
Léelo de arriba abajo y verás la narrativa completa: de la definición de patrón al monolito bien diseñado, y del monolito bien diseñado a la plataforma distribuida. Ese orden no fue casual: nadie diseña bien un sistema distribuido sin haber diseñado bien antes un objeto.
Las 7 ideas-fuerza del curso
Si dentro de cinco años solo recuerdas siete frases de este curso, que sean estas:
- Los patrones son intenciones, no plantillas. Copiar el diagrama UML de Strategy no es aplicar Strategy; aplicarlo es reconocer "aquí hay una familia de algoritmos intercambiables". Por eso el mismo patrón cabe en tres líneas con lambdas o en cinco clases.
- Composición sobre herencia. La lección silenciosa detrás de Decorator, Strategy, Bridge y media docena más: envolver y delegar da flexibilidad en tiempo de ejecución; heredar fija decisiones en tiempo de compilación. Los extras de un plato de PideYa lo demostraron mejor que cualquier teoría.
- Espera hasta que duela. El patrón se introduce cuando el código lo pide — el tercer
ifsobre el tipo de envío, el segundo canal de notificación — no el primer día "por si acaso". La sobreingeniería es el lado oscuro de este catálogo, y la refactorización hacia patrones, su antídoto. - El nombre importa. Decir "esto es un Adapter" en una code review transmite en dos palabras un problema, una solución y sus consecuencias. El vocabulario común es, en el día a día, el beneficio más rentable de todo lo que has estudiado.
- Programa contra interfaces, no contra implementaciones. El principio de 1994 que sostiene desde el Factory Method hasta la inyección de dependencias de Spring y los puertos de la arquitectura hexagonal. Una sola idea, treinta años de vigencia.
- Todo diseño es un trade-off. Cada patrón compra flexibilidad pagando indirección; cada microservicio compra autonomía pagando complejidad distribuida. No existe la solución buena en abstracto: existe la adecuada a un contexto, y el contexto cambia.
- Los catálogos crecen, pero las intenciones permanecen. Circuit Breaker es un Proxy que protege; API Gateway, una Facade en red; el Outbox, un problema de consistencia con ropa nueva. Quien domina las intenciones aprende cada patrón nuevo en minutos — y por eso este curso te sirve también para los patrones que aún no se han inventado.
Autoevaluación final: sabes X si puedes Y
El conocimiento de diseño no se mide recitando definiciones sino haciendo. Repasa esta lista con honestidad; cada "no" es simplemente tu siguiente objetivo de práctica:
| Sabes... | ...si puedes |
|---|---|
| Qué es un patrón | Explicar a un compañero júnior la diferencia entre un patrón y una librería, con un ejemplo de cada |
| Los creacionales | Justificar por qué Pedido.Builder y no un constructor telescópico ni setters, y cuándo bastaría un record |
| Los estructurales | Distinguir en código ajeno un Adapter de un Decorator de un Proxy, aunque las clases no lleven el patrón en el nombre |
| Los de comportamiento | Modelar el ciclo de vida de un pedido y defender State frente a un enum con switch — y también el caso contrario |
| Elegir con criterio | Rechazar un patrón en una discusión de diseño argumentando el trade-off, no el gusto |
| Refactorizar hacia patrones | Tomar la Gilded Rose (o tu código legado) y hacer emerger un patrón con los tests en verde en cada paso |
| Reconocer patrones en frameworks | Abrir una clase de Spring o del JDK y nombrar dos patrones que contiene y por qué están ahí |
| Los patrones modernos | Explicar qué intención clásica hay detrás de Circuit Breaker, API Gateway y Repository |
| Comunicar diseño | Escribir un ADR de una página que un compañero entienda sin preguntarte nada |
| Seguir aprendiendo | Nombrar tu próximo libro, tu próxima kata y tu próxima comunidad — con fechas |
Si has marcado la mayoría, no "te sabes los patrones": piensas en patrones, que era el objetivo real desde la primera lección.
Próximos pasos: una ruta de 90 días
El mayor riesgo al acabar un curso es el vacío del día siguiente. Propuesta concreta, ajustable a tu ritmo (asume 4-6 horas semanales):
| Días | Objetivo | Acciones concretas |
|---|---|---|
| 1–30 | Consolidar con las manos | Implementa las etapas 1 y 2 de tu PideYa real (dominio + checkout) con tests desde el inicio. Empieza tu primer libro de la ruta elegida en 07-01. Haz la Gilded Rose si aún no la hiciste |
| 31–60 | Profundizar y contrastar | Etapas 3 y 4 de PideYa (ciclo de vida + arquitectura hexagonal). Safari de patrones en el código de Spring o Guava. Únete a tu JUG o meetup local y asiste a una sesión |
| 61–90 | Salir a la conversación | Escribe dos ADRs de tu PideYa y pide a alguien que los revise. Primera contribución open source pequeña o primera respuesta en Stack Overflow. Repite la kata con variación. Revisa esta autoevaluación y compara con el día 1 |
Tres reglas para que el plan sobreviva al contacto con la realidad: cada semana termina con un artefacto (commit, nota, ADR — no solo lectura); si una semana se cae, se retoma sin culpa y sin "empezar de cero"; y al día 90, decide el siguiente ciclo tú mismo — ya tienes el criterio y el mapa de recursos para hacerlo.
Errores Comunes y Consejos
- Error: cerrar el curso y no escribir código en un mes. Lo aprendido sin práctica inmediata se degrada rápido. El plan de 90 días existe exactamente para eso: empieza esta semana, aunque sea con una hora.
- Error: convertirse en el "evangelista de patrones" del equipo. Recién aprendido el martillo, todo parece clavo. Recuerda el módulo 5: el mejor diseñador es el que sabe cuándo no aplicar el patrón, y el vocabulario sirve para conversar, no para sentenciar.
- Error: medir el progreso por contenido consumido. Libros leídos y vídeos vistos no son la métrica; la métrica es la tabla de autoevaluación: qué puedes hacer hoy que no podías hace tres meses.
- Consejo: vuelve a este curso como referencia. Las comparativas de los módulos 2, 3 y 4 y el método de selección del módulo 5 están pensados para releerse con un problema real entre manos — así es como se usa un catálogo.
- Consejo: enseña lo que has aprendido. Una charla corta en tu equipo sobre tres patrones que encontraste en vuestro código vale más que releer tres capítulos: explicar es la prueba final de haber comprendido.
Ejercicios
Ejercicio 1: Tu autoevaluación con evidencias
Recorre la tabla "sabes X si puedes Y" y, para cada fila, escribe una evidencia real ("lo demostré cuando...") o un "todavía no". Con los "todavía no", ordena tus tres prioridades y asigna cada una a un tramo de tu plan de 90 días.
Ejercicio 2: La carta a tu yo del pasado
Escribe media página dirigida a la persona que eras antes de la lección 01-01: qué tres cosas le dirías sobre los patrones de diseño para ahorrarle los malentendidos más caros. No repitas las ideas-fuerza literalmente; formúlalas con tus palabras y tus ejemplos.
Ejercicio 3: El compromiso de 90 días
Adapta la ruta de 90 días a tu realidad: tus horas disponibles, tu nivel según el ejercicio 1 y tus objetivos profesionales. Escríbela con fechas concretas en tu calendario y decide ahora la respuesta a la pregunta incómoda: ¿qué harás la semana que no cumplas?
Soluciones
Ejercicio 1 (orientativa): una evidencia válida es concreta y verificable: "Distingo Adapter de Decorator: lo demostré en la comparativa del módulo 3 y ayer identifiqué un Decorator en BufferedReader". Un "todavía no" típico es el ADR — pocos lo han escrito alguna vez — y por eso la ruta lo coloca en los días 61-90, cuando ya hay decisiones propias de PideYa que documentar.
Ejercicio 2 (orientativa): las cartas más lúcidas suelen girar sobre tres avisos: "los patrones no son recetas que aplicar sino problemas que reconocer", "no metas el patrón el primer día: espera al segundo o tercer caso real" y "aprende los nombres aunque te parezcan pedantería — el día que digas 'esto pide una Facade' en una reunión y todos asientan, entenderás para qué era todo esto". Si tu carta contiene avisos así con ejemplos propios, has interiorizado el curso.
Ejercicio 3 (orientativa): un buen plan personal es más pequeño que el propuesto, no más grande: si solo tienes 3 horas semanales, quizá PideYa llegue a la etapa 3 y no a la 4, y la contribución open source pase al siguiente ciclo. La respuesta madura a la pregunta incómoda no es "no fallaré" sino algo como: "retomo el lunes siguiente donde lo dejé, y si fallo tres semanas seguidas, reduzco el plan a la mitad en lugar de abandonarlo".
Conclusión
Hasta aquí el curso de Patrones de Diseño de Software. Empezó con una definición — una solución nombrada a un problema recurrente en un contexto — y esa definición fue creciendo hasta abarcar la carta de un restaurante, el undo de un panel de administración, el ciclo de vida de un pedido, una arquitectura hexagonal y una saga distribuida. PideYa fue el espejo: cada patrón dejó de ser un diagrama en cuanto tuvo un pedido, un repartidor o un pago detrás.
Te llevas tres cosas. Un catálogo: los veintitrés del GoF y sus herederos modernos, con sus intenciones y sus costes. Un criterio: elegir por el problema, esperar hasta que duela, medir siempre el trade-off. Y un vocabulario: la capacidad de decir "Adapter", "Strategy" o "Circuit Breaker" y ser entendido por cualquier equipo del mundo. El catálogo se consulta, el criterio se entrena y el vocabulario se conversa — por eso los tres mejoran con los años en lugar de caducar.
El resto es práctica: tu PideYa real esperando el primer commit, tu primer libro de la ruta, tu comunidad local, tus 90 días. Los patrones que aún no existen los aprenderás en minutos, porque las intenciones ya las conoces.
Gracias por llegar hasta el final. Ha sido un placer diseñar contigo. Ahora, a escribir código que valga la pena leer.
Curso de Patrones de Diseño de Software
Módulo 1: Introducción a los Patrones de Diseño
- ¿Qué son los Patrones de Diseño?
- Historia y Origen de los Patrones de Diseño
- Principios de Diseño: SOLID y Otros Fundamentos
- UML Esencial para Entender Patrones
- Clasificación de los Patrones de Diseño
- Ventajas y Desventajas de Usar Patrones de Diseño
Módulo 2: Patrones Creacionales
- Introducción a los Patrones Creacionales
- Singleton
- Factory Method
- Abstract Factory
- Builder
- Prototype
- Comparativa y Elección de Patrones Creacionales
Módulo 3: Patrones Estructurales
- Introducción a los Patrones Estructurales
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
- Comparativa y Elección de Patrones Estructurales
Módulo 4: Patrones de Comportamiento
- Introducción a los Patrones de Comportamiento
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
- Comparativa y Elección de Patrones de Comportamiento
Módulo 5: Aplicación de Patrones de Diseño
- Cómo Seleccionar el Patrón Adecuado
- Ejemplos Prácticos de Uso de Patrones
- Patrones de Diseño en Proyectos Reales
- Refactorización Usando Patrones de Diseño
- Antipatrones: Cuándo los Patrones se Vuelven un Problema
Módulo 6: Patrones de Diseño Avanzados
- Patrones de Diseño en Arquitecturas Modernas
- Patrones de Diseño en Microservicios
- Patrones de Diseño en Sistemas Distribuidos
- Patrones de Concurrencia
- Patrones de Diseño en Desarrollo Ágil
