Recension: Implementation Patterns av Kent Beck

“Implementation Patterns” av Kent Beck var hett efterlängtad när den kom. Äntligen en ny bok av Kent! Motsvarade den våra förväntningar eller var våra förhoppningar för högt ställda?

Kent Beck var en av upphovsmännen bakom designmönster i mjukvara (tillsammmans med Ward Cunningham), men han skrev inte boken (“Design Patterns”). Kanske har han ångrat detta och velat hitta ett nytt område med nya mönster? Hur som helst, vi har all rätt att ha höga förväntningar på en patternsbok av Kent Beck.

“Implementation Patterns” är tänkt att ligga nivån under “Design Patterns” i abstraktionsnivå och behandlar sådana beslut som programmerare måste fatta hundratals av varje dag: Vad ska den här variabeln heta? Ska den här klassen kunna subklassas? Hur kan jag bli av med det här duplicerade beteendet? Etc. Detta är inte en bok om stil, utan om kommunikation.

Mönsterna avhandlas på snabba 130 sidor i form av 77 mönster i en lös patternform, dvs utan strikt struktur. Det finns kapitel om klasser, beteende, metoder, tillstånd och kollektioner. Till detta finns några inledande kapitel som introduktion och ett avslutande kapitel om speciella hänsynstaganden vid skapandet av ramverk.

Till att börja med måste jag säga att jag finner syftet med boken både lovvärt och originellt. Att få oss programmerare att inte bara tänka på att skriva enkel, lättläst kod utan också fundera över vad vår kod kommunicerar till en kodläsare är viktigt men ovanligt. Ett exempel på hur man kan tänka: “Hmm, här har hon valt ett Set… ok, det betyder att det inte få finnas några dubletter i mängden… men ingen implicit ordning mellan elementen…”. För någon som ska ta över vår kod är detta skillnaden mellan en straffspark och ett år i kvalserien.

Som programmerare känns boken relevant. Den berör verkligen sådant som man måste fundera på varje dag. En del saker kanske en erfaren programmerare gör lite med ryggmärgen, men det är kanske inte alltid det är det bästa. Det finns bra saker här och koden är verkligen trevlig att se. En del saker känns ganska grundläggande.

Att Kent valt en lös form på mönsterna tycker jag är bra, därför att olika saker måste presenteras på olika sätt, men å andra sidan ser jag inte riktigt var mönster kommer in alls, annat än att namnen är “mönstriga”, så att säga. Kapitlena är mest korta utläggningar om olika ämnen. Det finns inga indelningar alls.

Boken använder Java som exempelspråk, vilket säkert är enklast för många läsare, men ibland blir det lite för javaspecifikt. Kapitlet om kollektioner känns som en enklare sammanfattning av det som Joshua Bloch redan har skrivit.

Som alltid med Kents böcker är boken kortfattad. Jag misstänker att han medvetet eftersträvar en kort och enkel form då det korta och det enkla är syskon med det sköna. Och det fungerar på mig.

Kent skriver på ett speciellt sätt, speciellt de senaste åren. Hans stil är väldigt mjuk och försiktig, vilket känns sympatiskt och låter klokt, men jag kan känna att jag saknar lite spets och attityd. Ungefär så långt ifrån David Heinemeier Hansson som man kan komma. Och får man föreslå lite humor ibland för att lätta upp?

Det kanske märkligaste med denna bok om att tänka på vem man kommunicerar till är att det är precis det man undrar om boken själv: Vem kommunicerar Beck till? För den erfarne finns det några guldklimpar, men det mesta har denne sett förut. För nybörjaren är själva konceptet kanske för svårt? Om man knappt klarar av det dagliga kodknackandet kanske man inte har börjat fundera på hur den som läser min kod uppfattar den? (Tack, Joakim på Avega för den insikten.) Kanske någon med ett par, tre års programmering bakom sig i Java är idealet, men det är väl allt en ganska liten målgrupp för en bok?

Sammanfattningsvis: Det är tyvärr inte en blivande klassiker jag har framför mig på bordet. Den är varken rättmätigt upprorisk som Extreme Programming Explained i första utgåvan eller majestätiskt mäktig som “Design Patterns” eller “Patterns of Enterprise Application Architecture“. Syftet är strålande, den är bitvis välskriven och har en del guldklimpar. Det man kan sakna är attityd och lite humor. Det svåraste för den här enkla boken blir nog ändå att hitta sin rätta läsare. De som bryr sig om sin kod kan mycket av detta. De som mest ser programmering som ett jobb kommer nog inte att bry sig.

3 thoughts on “Recension: Implementation Patterns av Kent Beck

  1. Jag har ju inget annat att göra än att kommentera bloggar som du vet så.. 😉

    “Om man knappt klarar av det dagliga kodknackandet kanske man inte har börjat fundera på hur den som läser min kod uppfattar den?”

    Men det är väl bra att börja fundera på det just när man börjat koda – att göra rätt från början, eller hur!? Då kanske man undviker en hel del onödiga fallgropar. Kanske kan det vara målgruppen då, sådana som är ganska nya på programmering. Eller?

  2. Jag håller med, både om det lovvärda i syftet och svårigheten att avgöra målgruppen. Däremot så tyckte jag att den gav mig stor behållning trots god erfarenhet av programmering (~10 år) och av Java (~7). Om jag försöker vara självanalytisk så tror jag att det till stor del beror på att jag ännu aldrig haft förmånen att arbeta i “agila team” och med personer som har god erfarenhet av “agila metoder” – jag syftar då främst på disciplinerat och långvarit arbete med TDD och parprogrammering. Således blir boken, för mig, lite av en sparringpartner och får mig att gå upp på tå och anstränga mig lite extra för att skriva kod som kommunicerar bättre. Sedan håller jag med Ulrika och tror också att det är nyttigt för “nybörjare” att läsa den, alltid fastnar något och om inte annat så kanske boken blir omläst efter några år igen.

Comments are closed.