Hvorfor du bør øve på arkitektur, og hvordan en Arkitektur Kata kan hjelpe deg med det!
"How do we get great designers? Great designers design, of course."
– Fred Brooks
"So how are we supposed to get great architects, if they only get the chance to architect fewer than a half-dozen times in their career?"
– Ted Neward
Arkitektur er en sentral del av programvare- og produktutvikling og det ha en god arkitektur kan være med å understøtte kapabiliteter som ytelse, skalerbarhet, forvaltbarhet, testbarhet, samt kunne påvirke organisering og domeneinndeling i organisasjonen.
Min påstand er at arkitektur er noe alle utviklere jobber med på mange nivåer, enten bevisst eller ubevisst. Om det er arkitekturarbeid knyttet til strukturen og arkitekturen i applikasjonen du jobber på, om det er hvordan systemer er delt opp og snakker sammen, eller om det er på virksomhetsnivå.
Arkitektur er derfor noe det er viktig å være god på og ha kompetanse om, men hvordan blir man skikkelig god? Det hjelper ofte med litt teori, men som med mye annet i livet handler det om å øve, øve og øve. Men hvordan kan man egentlig trene for å bli bedre på arkitektur?
En ting du kan gjøre er å teste ut Arkitektur Kata!
Hva er egentlig Arkitektur Kata?
Ordet Kata er japansk og kommer fra kampsportens verden. Det handler kort fortalt om å perfeksjonere ferdigheter gjennom repetisjon. I kampsport ved å repetere bevegelser til de sitter helt naturlig slik at man nesten ikke trenger å tenke.
Tanken bak en arkitektur kata er at man øver på å jobbe med arkitektur ved å trene og repetere. I praksis er det en fasilitert øvelse i en arkitekturproblemstilling, og gjennomføres som regel som en workshop hvor man jobber med en konkret problemstilling i 2-4 timer i grupper på 3-5 personer.
Hvordan gjennomføres en Arkitektur Kata?
En arkitektur kata starter typisk med at man får presentert et case. Caset kan være veldig mye forskjellig, men det vil typisk inneholde en beskrivelse av et system og en del overordnede krav til systemet, som hva slags type brukere man skal støtte, noe om forventet trafikk/last, samt noen forutsetninger man kan legge til grunn for oppgaven.
Deretter deles man inn i grupper på 3-5 personer og starter å jobbe. Her diskuterer man de ulike aspektene ved problemstillingen, hvordan de kan løses og arkitekturvalg for å støtte de ulike delene av problemstillingen. Gruppene kan bruke whiteboards, tusjer, post-its osv. til å tegne og visualisere hvordan de ser for seg at løsningen kan se ut.
Underveis i kataen vil den som arrangerer gå rundt og svare på eventuelle spørsmål, samt kunne brukes til sparring og diskusjon for gruppene.
Til slutt skal løsningen man har kommet frem til presenteres for de andre gruppene hvor de andre gruppene kan komme med tilbakemeldinger og spørsmål.
Hvorfor skal man gjennomføre en Arkitektur Kata?
Som nevnt; for å bli god på noe må man øve. En arkitektur kata gir deg mulighet til å jobbe med strukturerte problemstillinger i et trygt og kontrollert miljø. Du kan teste ulike arkitekturvalg uten at det faktisk får noen konsekvenser annet enn at du lærte noe.
Samarbeid og diskusjon. En kata gjennomføres i grupper, og man kan gjennom en slik sesjon lære mye av andre med andre erfaringer og innfallsvinkler. I tillegg vil man ved å gå gjennom alles løsninger til slutt også se hvordan andre har løst problemstillingen. Det er ofte diskusjonene, og ikke nødvendigvis løsningene i seg selv som er de mest interessante delene av en kata.
Bli bedre til å visualisere og forklare. Ved å tvinges til å visualisere og bruke whiteboards og tavler til å forklare løsningen får man øvd på å visualisere og forklare tankene sine på en måte som gir mening for andre (og oss selv, om noen måneder).
Mange relevante delproblemstillinger. Problemstillingene i en kata er ofte store og man starter i praksis helt “fra scratch”, noe som kanskje ikke er så realistisk sammenlignet med en hverdag hvor man som regel har et system man jobber på og mindre problemstillinger man må løse av gangen. Problemstillingene i en kata har ofte mange aspekter som kan angripes hver for seg og deles opp, og hvor mange av disse del-problemstillingene kan være generelle problemstillinger som vil være veldig relevant for mange systemer. En kata er dermed en gyllen anledning til å diskutere problemstillinger som fort kan dukke opp i sin egen forvaltnings- eller produktutviklingshverdag.
Det er gøy! Det å jobbe i grupper, diskutere interessante tekniske problemstillinger og lære noe av andre er rett og slett ganske gøy!
Hvordan komme i gang?
Høres dette interessant ut? Da anbefaler jeg at du tester det ut! Det finnes en rekke ressurser på nettet som både detaljert beskriver hvordan man kan gjennomføre en arkitektur kata, og det finnes en rekke forslag til ferdige problemstillinger man kan ta utgangspunkt i. Architectural Katas og Neal Ford sin egen side om Kata er to ressurser jeg vil anbefale å sjekke ut nærmere.
Et annet tips er også å ta utgangspunkt i en problemstilling fra en av sidene over, men tilpasse de slik man ønsker. Det er også fullt mulig å lage oppgaven helt selv noe som i seg selv er en interessant og morsom øvelse!
Et siste tips er at man også kan ha ulike fokusområder for en Kata. F.eks. at man fokuserer spesielt på sikkerhet, eller at man ønsker å designe et system basert på prinsipper fra Domain Driven Design. Eller at man bruker formatet til å trene på spesielle teknikker som f.eks. at man foretar en Event Storming før man starter å designe selve systemet.
Lykke til med din neste Arkitektur Kata!