El recorregut tècnic del curs va acabar al mòdul anterior: els vint-i-tres patrons del GoF construïts sobre PideYa i el catàleg modern d'arquitectures, microserveis i concurrència. Però un curs, per complet que sigui, és un mapa: el territori s'explora llegint els autors originals, contrastant opinions i tornant a les fonts quan un problema real t'ho exigeixi. En aquesta lliçó seleccionem els llibres que de debò mereixen el teu temps, amb un criteri clar per a cadascun: per què llegir-lo, quan fer-ho i quin mòdul del curs amplia. No és una llista exhaustiva; és una biblioteca mínima i honesta.

Contingut

  1. Com llegir aquesta llista (i com no llegir-la)
  2. Els clàssics fundacionals: GoF i POSA
  3. Els didàctics: Head First Design Patterns
  4. Refactorització: Fowler i Kerievsky
  5. L'escola "Clean": Clean Code i Clean Architecture, amb mirada crítica
  6. Java idiomàtic: Effective Java
  7. Arquitectura empresarial i domini: PoEAA, DDD i Vernon
  8. Sistemes distribuïts i producció: Kleppmann i Nygard
  9. Taula resum per nivell i objectiu
  10. Rutes de lectura suggerides segons el teu perfil

Com llegir aquesta llista (i com no llegir-la)

Abans de les recomanacions, tres advertiments que valen més que qualsevol títol concret:

  • No els llegeixis tots, i encara menys seguits. Una biblioteca tècnica es construeix en anys, al ritme dels problemes que trobes. Llegir Designing Data-Intensive Applications sense haver tocat mai un sistema distribuït és com estudiar el manual de vol sense avió.
  • Distingeix llibres de lectura i llibres de referència. Alguns es llegeixen de cap a cap (Head First, Clean Code); d'altres es consulten quan alguna cosa fa mal (GoF, PoEAA, POSA). Confondre el tipus de llibre és la primera causa d'abandonament a la pàgina 80.
  • Cap llibre és dogma. Tots els autors d'aquesta llista es contradiuen entre si en algun punt. Això no és un defecte de la llista: és la naturalesa del disseny de programari.

Els clàssics fundacionals: GoF i POSA

Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, Helm, Johnson, Vlissides, 1994) és el llibre que va donar nom a aquest curs. Però convé dir-ho clar: avui no es llegeix de cap a cap. Els exemples són en C++ i Smalltalk, el to és acadèmic i diversos problemes que resolia (com l'absència de lambdes o de genèrics) ja no existeixen en el Java modern. Es llegeix així:

  • Primer la introducció i el capítol del cas d'estudi (Lexi): allà hi ha la filosofia — "programa contra interfícies", "prefereix la composició per sobre de l'herència" — que vam treballar al mòdul 1.
  • Després, com a referència: quan dubtis sobre la intenció exacta d'un patró, les seccions Intent, Applicability i Consequences del seu capítol continuen sent la font més precisa que existeix. Les nostres lliçons dels mòduls 2 a 4 són, en el fons, una traducció d'aquelles seccions al món de PideYa.

Pattern-Oriented Software Architecture (POSA), la sèrie iniciada per Buschmann i altres, és el següent esglaó: patrons d'arquitectura (Layers, Broker, Pipes and Filters) i de concurrència. És dens i molt de referència; el seu volum 1 amplia directament el que vam veure a la lliçó d'arquitectures del mòdul 6, i el volum 2 el que vam veure a concurrència.

Els didàctics: Head First Design Patterns

Head First Design Patterns (Freeman i Robson) és probablement el millor primer llibre de patrons que s'ha escrit mai: exemples en Java, humor, repetició deliberada i un enfocament en la intenció abans que en el diagrama. Si aquest curs se t'ha fet costerut en algun mòdul, aquest llibre és la segona passada ideal. El seu límit: cobreix uns 14 patrons, no els 23, i el seu estil visual no és per a tothom. La segona edició va actualitzar els exemples a Java 8+.

Refactorització: Fowler i Kerievsky

Aquesta parella amplia directament la lliçó de Refactorització Usant Patrons de Disseny:

  • Refactoring (Martin Fowler): el catàleg de transformacions petites i segures. La segona edició usa JavaScript, però les refactoritzacions són universals. És el llibre que converteix "aquest codi fa mala olor" en un pla d'acció amb nom i passos.
  • Refactoring to Patterns (Joshua Kerievsky): el pont entre tots dos mons. La seva tesi — es refactoritza cap a un patró quan el codi ho demana, no es dissenya amb el patró des del primer dia — és exactament la disciplina que vam aplicar quan vam convertir els condicionals d'enviament de PideYa en un Strategy.

L'escola "Clean": mirada crítica equilibrada

Clean Code i Clean Architecture (Robert C. Martin) són enormement influents i convé llegir-los, però amb criteri propi:

  • El que té valor: la insistència en noms significatius, funcions petites, la regla de dependència (les dependències apunten cap al domini) i la formulació de SOLID que vam estudiar al mòdul 1. Clean Architecture connecta molt bé amb la nostra lliçó d'arquitectura hexagonal.
  • El que és discutible: algunes regles de Clean Code (funcions de 2-4 línies, evitar gairebé tot comentari) portades a l'extrem produeixen codi fragmentat i difícil de seguir; la comunitat fa anys que ho debat. Llegeix-lo com una col·lecció d'heurístiques d'un practicant amb opinions fortes, no com un reglament.

Java idiomàtic: Effective Java

Effective Java (Joshua Bloch, 3a edició) no és un llibre "de patrons" i tanmateix és el que més patrons reals per pàgina conté: Builder (ítem 2, la base del nostre Comanda.Builder), factories estàtiques, Singleton amb enum, immutabilitat (clau al mòdul de concurrència), composició per sobre d'herència (ítem 18)… Si programes en Java cada dia, és possiblement el llibre més rendible de tota aquesta llista. Es llegeix bé per ítems solts, en qualsevol ordre.

Arquitectura empresarial i domini: PoEAA, DDD i Vernon

  • Patterns of Enterprise Application Architecture (PoEAA) (Fowler): el catàleg d'on surten Repository, Unit of Work, Data Mapper o Lazy Load — els patrons que vas reconèixer dins de Spring i Hibernate al mòdul 5. Molt de referència: es consulta el patró que necessites.
  • Domain-Driven Design (Eric Evans): el "llibre blau". Llenguatge ubic, agregats, bounded contexts — el vocabulari amb què al mòdul 6 vam decidir per on tallar PideYa en microserveis. Dens; la seva primera meitat (el llenguatge i el model) és la més important.
  • Implementing Domain-Driven Design (Vaughn Vernon): el "llibre vermell", la versió pràctica de l'anterior, amb codi i decisions concretes. Molts lectors el treuen més profit llegint-lo abans o en paral·lel al d'Evans.

Sistemes distribuïts i producció: Kleppmann i Nygard

  • Designing Data-Intensive Applications (Martin Kleppmann): el llibre que amplia gairebé tot el mòdul 6 — replicació, particionament, transaccions distribuïdes, CAP explicat sense mites, event sourcing i logs. Rigorós i alhora llegible; el consens de la indústria el considera lectura obligada per treballar en sistemes distribuïts.
  • Release It! (Michael Nygard, 2a edició): l'origen del patró Circuit Breaker que vam aplicar entre els serveis de PideYa, juntament amb Bulkhead, timeouts i les històries de guerra de sistemes caient en producció. És el llibre que converteix "a la meva màquina funciona" en "sobreviu un divendres al vespre amb l'app plena de comandes".

Taula resum per nivell i objectiu

Obra Autor(s) Per què llegir-la Quan Amplia el mòdul
Head First Design Patterns Freeman i Robson La millor introducció didàctica als patrons GoF Júnior, després d'aquest curs o durant 2, 3, 4
Design Patterns (GoF) Gamma, Helm, Johnson, Vlissides La referència canònica: intenció i conseqüències exactes Referència permanent, no de cap a cap 1–4
Effective Java Joshua Bloch Patrons idiomàtics del Java real, ítem a ítem Tan bon punt treballis en Java cada dia 2, 6
Refactoring Martin Fowler Vocabulari i tècnica de la millora contínua del codi Amb 1-2 anys de codi aliè a l'esquena 5
Refactoring to Patterns Joshua Kerievsky Com arribar als patrons des de codi que fa mal Després de Refactoring 5
Clean Code / Clean Architecture Robert C. Martin Heurístiques influents de llegibilitat i dependències Amb criteri propi ja format 1, 6
PoEAA Martin Fowler El catàleg darrere de Spring, Hibernate i els ORM Referència en treballar amb frameworks empresarials 5, 6
Domain-Driven Design Eric Evans El model i el llenguatge com a centre del disseny Sènior o camí de ser-ho 6
Implementing DDD Vaughn Vernon DDD aterrat en codi i decisions concretes Abans o juntament amb el d'Evans 6
Designing Data-Intensive Applications Martin Kleppmann La base rigorosa dels sistemes distribuïts En anar cap a distribuït/microserveis 6
Release It! Michael Nygard Estabilitat i resiliència en producció real En responsabilitzar-te d'alguna cosa en producció 6
POSA (vol. 1 i 2) Buschmann i altres Patrons d'arquitectura i concurrència, en profunditat Referència avançada 6

Rutes de lectura suggerides segons el teu perfil

Cap perfil no necessita les dotze obres. Tres rutes orientatives:

Perfil Ruta suggerida (en ordre) Ritme raonable
Júnior que acaba aquest curs Head First → Effective Java (per ítems) → Refactoring → GoF com a referència 12-18 mesos
Desenvolupador amb experiència que consolida disseny Refactoring → Refactoring to Patterns → PoEAA (referència) → Clean Architecture amb esperit crític 8-12 mesos
Sènior que va cap a microserveis i distribuït DDD (amb Vernon de suport) → Kleppmann → Release It! → POSA com a referència 12 mesos, amb projecte real en paral·lel

La regla comuna a les tres rutes: un llibre de lectura a la vegada, els de referència sempre a mà, i cada capítol contrastat contra codi real — el teu de la feina o la teva pròpia implementació de PideYa.

Errors Comuns i Consells

  • Error: començar pel GoF de cap a cap. És l'error clàssic del convers recent. El GoF és una referència magnífica i una lectura lineal frustrant. Comença per Head First i torna al GoF per capítols solts.
  • Error: col·leccionar llibres en lloc de llegir-los. Comprar dotze llibres produeix una prestatgeria, no un criteri. Compra el següent quan acabis (o abandonis conscientment) l'actual.
  • Error: llegir sense codi al davant. Un capítol de Refactoring sense aplicar-lo a codi real s'oblida en una setmana. Tingues sempre un projecte (PideYa serveix) on assajar el que llegeixes.
  • Error: prendre qualsevol autor com a dogma. Fowler i Martin discrepen; Evans i els crítics de DDD discrepen. Quan dos autors solvents es contradiuen, allà és exactament on hi ha la teva oportunitat de formar criteri propi.
  • Consell: porta una llibreta (o un fitxer de notes) de lectures: per cada capítol, una idea aplicable i on l'aplicaries al teu codi actual. Converteix lectura passiva en disseny actiu.

Exercicis

Exercici 1: La teva ruta personal

De la taula per perfils, tria la ruta que millor et descrigui (o barreja'n dues). Escriu el teu pla: els 3 primers llibres, en ordre, amb una data objectiu realista per a cadascun i una frase que justifiqui per què aquell llibre en aquell moment de la teva carrera.

Exercici 2: El GoF com a referència

Tria el patró del curs que recordis pitjor (sigues honest). Busca el seu capítol al GoF (o la seva fitxa en una referència fidel al GoF) i llegeix només les seccions Intent, Applicability i Consequences. Anota: quin matís de la intenció original no havies captat al curs?

Exercici 3: Lectura crítica

Pren una regla concreta de Clean Code (per exemple, "les funcions han de ser molt curtes") i escriu dos paràgrafs: un defensant-la amb un exemple de PideYa on ajudaria, i un altre mostrant un cas on aplicar-la al peu de la lletra empitjoraria el codi.

Solucions

Exercici 1 (orientativa): un pla vàlid per a un perfil júnior podria ser: Head First (3 mesos, "necessito consolidar els patrons GoF amb una altra veu"), Effective Java per ítems (6 mesos en paral·lel amb la feina, "programo Java cada dia"), Refactoring (3 mesos, "ja tinc codi llegat que em fa mal"). L'important és que cada elecció respongui a un problema teu actual, no al prestigi del títol.

Exercici 2 (orientativa): és habitual descobrir matisos com que Bridge es planteja des del disseny inicial mentre que Adapter apareix a posteriori, o que el GoF ja advertia dels costos de Visitor quan la jerarquia d'elements canvia sovint. Si has trobat un matís així, l'exercici ha complert la seva funció: el GoF com a referència sempre dona una capa més de precisió.

Exercici 3 (orientativa): a favor: trossejar la FacanaCheckout en passos petits amb nom (validar, cobrar, notificar) la va fer llegible al mòdul 3. En contra: partir un algorisme cohesionat de 15 línies en sis funcions de 2 línies obliga el lector a saltar entre elles per reconstruir el flux — la fragmentació també té cost. La conclusió raonable: la regla útil és "un nivell d'abstracció per funció", no un nombre de línies.

Conclusió

Ja tens la biblioteca mínima: els didàctics per consolidar, els clàssics com a referència, Fowler i Kerievsky per al dia a dia amb codi real, i Kleppmann, Nygard, Evans i Vernon per a quan PideYa — o el teu sistema real — creixi cap al món distribuït. La clau no és la llista sinó el mètode: un llibre a la vegada, sempre amb codi al davant i sempre amb esperit crític. Els llibres marquen el fons; per al ritme del dia a dia — referències interactives, xerrades, kates — existeix un altre ecosistema de recursos en línia, i a ell dediquem la lliçó següent: Cursos i Tutorials en Línia.

Curs de Patrons de Disseny de Programari

Mòdul 1: Introducció als Patrons de Disseny

Mòdul 2: Patrons Creacionals

Mòdul 3: Patrons Estructurals

Mòdul 4: Patrons de Comportament

Mòdul 5: Aplicació de Patrons de Disseny

Mòdul 6: Patrons de Disseny Avançats

Mòdul 7: Recursos Addicionals i Conclusió

© Copyright 2026. Tots els drets reservats