mandag den 15. oktober 2007

Arkitekten er død...

...længe leve arkitekturen!

På dette års JAOO var der del, som luftede den mening, at arkitekter var en udøende race, og at agile udviklingsmetoder vil gøre arkitekter overflødige. Jeg kender efterhånden en hel del folk, som er gode arkitekter, og jeg så faktisk flere af dem gå og dukke sig efter denne svada.

På den anden side, så var der yderst interessant og velbesøgt spor, som delte sig over to hele dage om arkitektur, så faktisk var det ganske uretfærdigt. Pointen er ikke, at det være agil betyder, at man ikke længere behøver en arkitektur ("vi laver det som synes rigtigt nu, og hvis det senere viser sig at være forkert, så kan vi bare refactore det...!" synes det naive synspunkt at være).

Jim Coplien havde et tankevækkende, og til tider provokerende, foredrag på JAOO om agil arkitektur, og i det understregede han klart behovet for at få taget de nødvendige beslutninger på rette tidspunkt. Hvis man undlader at tage beslutninger, så vil du se god fremdrift de første par sprint, var hans påstand, men derefter man blive indhentet af virkeligheden med nedsat produktivitet til følge (eller velocity som vi vist ynder at kalde det nu om dage).

Coplien blev i høj grad bakket op af talerne fra ovennævnte arkitekturspor, og i virkeligheden så er det et faktum, at du får en arkitektur uanset om du planlægger det (intentional architecture) eller om det opstår mere som en eftertanke (accidental architecture).

Accidental architecture har en lidt kedelig klang af held fremfor dygtighed over sig, men hånden på hjertet, så er det heldigvis ikke alt, som sker som logiske videreførelser af allerede eksisterende ideer (jeg boede engang i samme opgang som en, der yndede at sige, at selv den mest metodiske og grundige planlægning aldrig vil kunne erstatte det rene og skære svineheld!). Grady Booch anerkender da også tilfældig arkitektur som værende positiv under to klare forudsætninger:
  • de bagvedliggende beslutninger tydeliggøres.
  • de vigtige synliggøres igennem resten af projektforløbet.
(se Grady Booch: The accidental architecture). Iøvrigt kan "rigtig" Accidental Architecture faktisk være ganske flot.

Men hvad er så egentlig arkitektur for noget? Kevlin Henney stiller også spørgsmålet (Kevlin Henney: What is Software Architecture), og besvarer det med henvisning til Martin Fowler og Grady Booch med, at det er de designbeslutninger, som er svære eller dyre at omgøre. Ud fra den definition er det tydeligt, at arkitektur ikke er noget, som man kan komme ind i systemet på et vilkårligt sent tidspunkt.

Betyder det så, at agile metoder er et luftkastel, og at vi stopper os selv blår i øjnene? Skal vi i virkeligheden tilbage til tidligere tiders dyder om et kæmpe design på forhånd? Så langt fra. Tanken om ikke at tage alle beslutninger på forhånd, hvor grundlaget for at træffe dem iøvrigt i bedste fald ville være tvivlsomt, holder stadig. Budskabet er udelukkende, at det ikke modsætningsvis betyder, at man ikke behøver tage nogen beslutninger overhovedet!

Nogle beslutninger kan man med fordel beslutte at tage på forhånd. Andre kan man - som Kevlin Henney fint illustrede i hans foredrag om Performance Art (man kan vist ikke beskylde ham for at være beskeden...) - tage en bevidst beslutning om at udskyde til senere, ved at afkoble sig fra et konkret valg. Man bliver nødt til at beslutte sig for et interface, men hvis man ligger tilstrækkelig omhu i konstruktionen af dette, så kan valget af implementation udskydes til et tidspunkt, hvor man har et bedre grundlag for at træffe en korrekt beslutning.

At det er et emne, som udfordrer alle med en agil tilgang til systemudvikling, kan ses af at ThoughtWorks var i stand til at lave en seksmands paneldiskussion om emnet med sig selv på dette års QCon-konference.

Hvad er så min konklusion? Jo, at den klassiske arkitekt som den store leder og beslutningstager, som vi kun så i opstartsfasen af et projekt, hvor han lagde de endegyldige rammer for en succesfuld applikation (som så på det groveste blev misforstået og fejlimplementeret efterfølgende!) er en udryddelsestruet race - og godt det samme!

Hvis vi er agile, så er arkitektur noget som fastlægges løbende og af os alle i fællesskab. Derfor har vi mere end nogensinde brug for folk med arkitektonisk flair, til at virke som facilitatorer for de "dyre" beslutninger og mentor for hele udviklingsgruppen, for at få forankret de gode beslutninger.

Ingen kommentarer: