Els llibres de la lliçó anterior marquen el fons; l'ecosistema en línia marca el ritme. A internet hi ha material excel·lent sobre patrons de disseny — referències interactives, blogs dels mateixos autors, xerrades de conferència, kates de refactorització — i també tones de contingut superficial, copiat o desactualitzat. Aquesta lliçó no et dona una llista d'enllaços per acumular a les adreces d'interès: et dona una taxonomia de tipus de recurs, criteris per avaluar cadascun i, sobretot, un pla de pràctica deliberada amb PideYa com a projecte personal, perquè els patrons no s'aprenen mirant vídeos sinó escrivint codi.
Contingut
- Els tipus de recurs en línia (i per a què serveix cadascun)
- Referències interactives: refactoring.guru i sourcemaking
- Blogs d'autors: martinfowler.com i companyia
- La documentació oficial com a font de patrons reals
- Plataformes de cursos: com avaluar sense llista de la compra
- Xerrades i canals: GOTO, Devoxx i les conferències a YouTube
- Kates i pràctica deliberada
- PideYa com a projecte personal: l'exercici integrador
- Contingut desactualitzat: com detectar-lo
Els tipus de recurs en línia
Cada tipus de recurs serveix per a una fase diferent de l'aprenentatge. Usar el tipus equivocat per a la fase equivocada és la principal font de frustració:
| Tipus de recurs | Exemples coneguts | Per a què serveix | Per a què NO serveix |
|---|---|---|---|
| Referència interactiva | refactoring.guru, sourcemaking.com | Consulta ràpida d'un patró: intenció, diagrama, codi | Aprendre de zero sense context de problema |
| Blog d'autor | martinfowler.com, blog de Robert C. Martin | Criteri, matisos, debats de disseny | Referència estructurada dels 23 patrons |
| Documentació oficial | Javadoc del JDK, docs de Spring | Veure patrons aplicats en APIs reals | Explicacions didàctiques del patró en si |
| Plataforma de cursos | Coursera, Udemy, Pluralsight | Estructura i acompanyament en vídeo | Substituir la pràctica amb codi propi |
| Xerrades de conferència | GOTO, Devoxx a YouTube | Perspectiva, experiència real, tendències | Aprenentatge sistemàtic pas a pas |
| Kates i plataformes de pràctica | exercism, codewars, kates de refactorització | Pràctica deliberada amb feedback | Teoria i fonaments |
Referències interactives: refactoring.guru i sourcemaking
refactoring.guru és avui la referència visual més popular dels patrons GoF: cada patró amb el seu problema, solució, diagrames, pseudocodi i exemples en diversos llenguatges (Java inclòs), a més d'un catàleg de refactoritzacions i code smells alineat amb Fowler. És ideal com a segona opinió després d'aquest curs: quan dubtis d'un patró, contrasta la seva fitxa amb el que vam construir a PideYa.
sourcemaking.com és el seu predecessor espiritual: mateix territori (patrons, antipatrons, refactoring), estil més antic. Útil sobretot pel seu catàleg d'antipatrons, que amplia la nostra lliçó del mòdul 5.
Advertiment comú a tots dos: els seus exemples són deliberadament petits i didàctics. El risc és memoritzar la miniatura i no reconèixer el patró a mida real — per això aquest curs va insistir en un domini continu com PideYa.
Blogs d'autors: martinfowler.com i companyia
martinfowler.com és probablement el lloc individual més valuós d'aquesta lliçó: el catàleg de PoEAA en línia, el bliki amb definicions canòniques (de "Microservices" a "StranglerFigApplication", l'origen del patró que vam usar al mòdul 6), i articles llargs sobre refactorització, CI/CD i arquitectura evolutiva. Llegeix-lo quan un terme del curs et demani profunditat: gairebé sempre hi ha una entrada seva que el va fixar.
El blog de Robert C. Martin (Uncle Bob) complementa amb opinions fortes sobre principis SOLID, arquitectura neta i professionalisme. Igual que amb els seus llibres: material valuós, to vehement — llegeix-lo amb el criteri propi que ja has entrenat.
La documentació oficial com a font de patrons reals
Un hàbit que distingeix qui de debò domina patrons: llegir la documentació oficial buscant el patró. Ho vam practicar al mòdul 5 i convé mantenir-lo:
- Javadoc del JDK:
Iterator, els factory methods deList.of/Collectors, el Builder deStringBuilderiHttpRequest, Observer ajava.util.concurrent.Flow, Decorator ajava.io. - Documentació de Spring: Template Method a
JdbcTemplate, Proxy a AOP i@Transactional, Singleton com a scope per defecte, Strategy a tota la configuració endollable.
La documentació oficial mai no està desactualitzada respecte a la seva versió i mostra decisions de disseny preses per equips experts amb restriccions reals: és un curs de patrons gratuït amagat a plena vista.
Plataformes de cursos: com avaluar sense llista de la compra
A Coursera, Udemy o Pluralsight hi ha cursos de patrons bons i dolents, i els catàlegs canvien constantment, així que més útil que recomanar un títol és donar-te la checklist d'avaluació:
- Llenguatge i versió? Un curs de patrons "en Java" gravat sobre Java 6 ignorarà lambdes, records i
Optional, i t'ensenyarà solucions avui innecessàriament verboses. - Exemples amb domini o miniatures? Desconfia de cursos on cada patró viu en el seu exemple aïllat de joguina (figures geomètriques, animals). Ja saps per experiència que el valor és en un domini continu.
- Parla de quan NO usar el patró? Un curs que només ven avantatges no ha entès el mòdul 5 d'aquest. Els trade-offs són la meitat del contingut.
- Data d'actualització i ressenyes recents? Ressenyes de fa cinc anys descriuen un altre curs.
- Hi ha exercicis amb codi, no només vídeo? Veure programar no és programar.
Si un curs passa aquesta checklist, probablement val la pena, sigui quina sigui la plataforma.
Xerrades i canals: GOTO, Devoxx i les conferències a YouTube
Els canals de YouTube de conferències com GOTO i Devoxx publiquen gratis milers de xerrades de qualitat: és on la indústria discuteix microserveis, DDD, arquitectura evolutiva o els límits dels patrons, sovint pels mateixos autors dels llibres de la lliçó anterior. Com aprofitar-les:
- Usa-les per a perspectiva, no per a fonaments: una xerrada de 45 minuts inspira i orienta, però no substitueix la pràctica.
- Busca per concepte del curs ("circuit breaker", "event sourcing", "hexagonal architecture") i filtra pels últims 2-3 anys per a les tendències, sense por de les xerrades clàssiques per als fonaments.
- Regla pràctica: per cada xerrada vista, una nota d'una línia amb la idea aplicable. Sense nota, la xerrada va ser entreteniment.
Kates i pràctica deliberada
La pràctica deliberada — exercicis curts, repetibles, amb focus en una habilitat concreta — és al disseny el que les escales al piano:
- exercism: exercicis per llenguatge amb mentoria de la comunitat; la seva pista de Java és un bon gimnàs d'idiomàtica.
- codewars: kates curtes per dificultat; útils per guanyar fluïdesa, menys per a disseny (els problemes són petits).
- Kates de refactorització: les més valuoses per a aquest curs. La Gilded Rose — que ja et vam proposar a la lliçó de refactorització del mòdul 5 — és la reina: codi llegat horrible amb tests, perfecte per practicar el cicle "test → refactoritzar → el patró emergeix". Altres de conegudes: Tennis Refactoring Kata i Trip Service Kata (de l'ecosistema d'Emily Bache i Sandro Mancuso, els repositoris dels quals són fàcils de trobar).
La clau d'una kata no és acabar-la sinó repetir-la: la segona vegada amb un altre patró, la tercera amb TDD estricte. La repetició amb variació és el que fixa el criteri.
PideYa com a projecte personal: l'exercici integrador
El millor "curs online" que pots fer ara no és a cap plataforma: és implementar PideYa de debò. Durant el curs en vas veure fragments; construir-la completa t'obligarà a prendre totes les decisions que un curs pren per tu. Pla suggerit per etapes:
| Etapa | Què construir | Patrons que exercita | Mòduls |
|---|---|---|---|
| 1 | Domini: carta, plats, extres, comanda | Composite, Decorator, Builder, Prototype | 2, 3 |
| 2 | Checkout: validació, pagament, notificacions | Chain, Facade, Adapter, Factory Method, Observer | 2, 3, 4 |
| 3 | Cicle de vida i repartiment | State, Strategy, Mediator, Command | 4 |
| 4 | Persistència i arquitectura | Repository, hexagonal, DI (amb o sense Spring) | 6 |
| 5 | (Opcional, ambiciosa) Partir-la en 2-3 serveis | API Gateway, Outbox, Circuit Breaker, Saga | 6 |
Regles del joc: tests des del principi (mòdul 6, TDD), cada patró introduït quan el codi ho demani (Kerievsky, mòdul 5) i un petit ADR per decisió de disseny. Un repositori així, a més, és el millor portfoli de disseny que pots ensenyar en una entrevista.
Contingut desactualitzat: com detectar-lo
El contingut en línia envelleix sense avisar. Senyals d'alarma en avaluar un tutorial o curs:
- Singleton amb doble comprovació com "la" solució, sense esmentar enum ni contenidors DI: material anterior a la conversa moderna (la nostra crítica del mòdul 2).
- Java sense lambdes on una lambda ho resoldria (Strategy o Observer amb classes anònimes de deu línies): anterior a Java 8, és a dir, més d'una dècada.
- "Els microserveis sempre són millors" (o qualsevol "sempre"): el pèndol de la indústria ja va tornar; el material seriós parla de trade-offs, com vam fer al mòdul 6.
- Frameworks o versions que ja no reconeixes als exemples, o captures d'eines amb interfícies de fa molts anys.
- Absència total de tests en un tutorial de refactorització: contradiu la definició mateixa de refactoritzar.
Detectar material desactualitzat no sempre vol dir descartar-lo — els fonaments envelleixen bé — però sí llegir-lo sabent quina part ha caducat.
Errors Comuns i Consells
- Error: el col·leccionisme de tutorials. Cinquanta pestanyes desades i cap projecte acabat. Regla inversa: màxim un recurs actiu per tipus, i no se n'afegeix un altre fins a tancar l'actual.
- Error: el "tutorial hell". Encadenar cursos en vídeo produeix sensació de progrés sense progrés real. La proporció sana és aproximadament 1 hora de consum per 2-3 de pràctica.
- Error: aprendre patrons només amb miniatures. Si tots els teus exemples caben en una pantalla, no reconeixeràs el patró en un sistema real. D'aquí el projecte PideYa.
- Error: ignorar la data del contingut. Un tutorial sense data visible ja és un senyal; aplica la checklist de desactualització abans d'invertir-hi hores.
- Consell: converteix el que consumeixes en alguna cosa que produeixes — una nota, un commit a la teva PideYa, un test nou. L'aprenentatge sense artefacte s'evapora.
Exercicis
Exercici 1: Auditoria d'un recurs
Tria un tutorial o curs de patrons que tinguis desat (o busca'n un qualsevol sobre Singleton en Java). Passa-li la checklist d'avaluació i la llista de senyals de desactualització. Escriu un veredicte de tres línies: l'usaries?, amb quines precaucions?
Exercici 2: El teu pla de pràctica de 4 setmanes
Dissenya un pla setmanal realista (indica hores/setmana) combinant almenys tres tipus de recurs de la taula inicial i l'etapa 1 del projecte PideYa. Format suggerit: setmana → objectiu → recurs → artefacte produït.
Exercici 3: La kata repetida
Fes (o refés) la Gilded Rose. Primera passada: només refactoritzacions petites recolzades en els tests. Segona passada, un altre dia: introdueix explícitament un patró del mòdul 4 on el codi ho demani. Anota quina passada et va resultar més natural i per què.
Solucions
Exercici 1 (orientativa): un veredicte típic sobre un tutorial antic de Singleton: "Explica bé la intenció, però usa doble comprovació sense volatile (incorrecta) i no esmenta enum ni DI; l'usaria només per a la motivació del patró, mai per a la implementació". Fixa't que el veredicte separa quina part del recurs continua sent vàlida.
Exercici 2 (orientativa): exemple amb 5 h/setmana: S1 — domini de PideYa (Composite de la carta) + fitxa de Composite a refactoring.guru com a contrast; S2 — extres amb Decorator + una xerrada de GOTO sobre disseny OO amb nota d'una línia; S3 — Gilded Rose primera passada; S4 — Builder de la comanda + revisió: quin patró va sorgir sense planejar-lo? El criteri de qualitat del pla: cada setmana acaba amb codi, no només amb contingut vist.
Exercici 3 (orientativa): la majoria troba la primera passada més segura (els tests manen, passos petits) i la segona més temptadora de sobredissenyar. Si a la segona et vas sorprendre posant un patró "perquè tocava" i no perquè el codi ho demanés, acabes de viure en petit la lliçó d'antipatrons del mòdul 5 — aquest autoconeixement és exactament l'objectiu de la kata.
Conclusió
Ja saps navegar l'ecosistema: referències interactives per consultar, blogs d'autors per al criteri, documentació oficial per veure patrons de debò, xerrades per a la perspectiva, kates per al múscul i PideYa com a projecte integrador on tot s'ajunta. El fil comú és sempre el mateix: consumir menys, produir més, i desconfiar del material que no mostra ni les seves dates ni els seus trade-offs. Però aprendre en solitari té un sostre: el criteri de disseny s'esmola discutint amb altres — preguntant bé, llegint codi aliè, rebent revisions. D'això tracta la lliçó següent: Comunitats i Fòrums.
Curs de Patrons de Disseny de Programari
Mòdul 1: Introducció als Patrons de Disseny
- Què són els Patrons de Disseny?
- Història i Origen dels Patrons de Disseny
- Principis de Disseny: SOLID i Altres Fonaments
- UML Essencial per Entendre Patrons
- Classificació dels Patrons de Disseny
- Avantatges i Desavantatges d'Usar Patrons de Disseny
Mòdul 2: Patrons Creacionals
- Introducció als Patrons Creacionals
- Singleton
- Factory Method
- Abstract Factory
- Builder
- Prototype
- Comparativa i Elecció de Patrons Creacionals
Mòdul 3: Patrons Estructurals
- Introducció als Patrons Estructurals
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
- Comparativa i Elecció de Patrons Estructurals
Mòdul 4: Patrons de Comportament
- Introducció als Patrons de Comportament
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
- Comparativa i Elecció de Patrons de Comportament
Mòdul 5: Aplicació de Patrons de Disseny
- Com Seleccionar el Patró Adequat
- Exemples Pràctics d'Ús de Patrons
- Patrons de Disseny en Projectes Reals
- Refactorització Usant Patrons de Disseny
- Antipatrons: Quan els Patrons es Tornen un Problema
Mòdul 6: Patrons de Disseny Avançats
- Patrons de Disseny en Arquitectures Modernes
- Patrons de Disseny en Microserveis
- Patrons de Disseny en Sistemes Distribuïts
- Patrons de Concurrència
- Patrons de Disseny en Desenvolupament Àgil
