Har du någonsin börjat dagen med att lugnt konfigurera en CI/CD-pipeline, kastats in i ett akut produktionshaveri före lunch, spenderat eftermiddagen i ett luddigt möte om “framtida användarbehov”, för i att avslutat dagen med att ändra en textsträng i ett UI?

Som systemutvecklare förväntas vi ofta växla mellan dessa uppgifter sömlöst. Men sanningen är att de kräver helt olika delar av vår hjärna. Att misslyckas med att se skillnaden på dessa problem är en av de största källorna till stress, utbrändhet och – inte minst – teknisk skuld.

För att förstå varför vissa dagar känns som en harmonisk dans och andra som ett krigszon, kan vi ta hjälp av ett av systemvetenskapens mest kraftfulla verktyg: Cynefin-ramverket.


Vad är Cynefin?

Cynefin (ett walisiskt ord som betyder hemvist eller bekant plats) är ett beslutsramverk skapat av strategen Dave Snowden år 1999. Det hjälper oss att kategorisera problem och miljöer i fem olika domäner. Genom att förstå vilken domän du befinner dig i just nu, vet du också vilket angreppssätt som faktiskt kommer att fungera.

Låt oss titta på hur dessa domäner ser ut i en utvecklares verklighet.


Infografik för Cynefin-ramverket av Dave Snowden
Infografik för Cynefin-ramverket av Dave Snowden


1. Det uppenbara (Clear / Simple) – “Best Practice”

I den här domänen är allt förutsägbart. Orsak och verkan är tydliga för alla och det finns ett facit.

  • I din kod: Att uppdatera en statisk textsträng, ändra en färg i en CSS-fil eller köra en standardiserad uppgradering av ett paket.
  • Ditt angreppssätt: Känna in $\rightarrow$ Kategorisera $\rightarrow$ Agera. Du ser problemet, vet direkt vilken kategori det tillhör och applicerar en färdig lösning (Best Practice).
  • Faran: Att överanalysera. Lägg inte timmar på att bygga en generisk mikrotjänst för något som kunnat lösas med en enkel hårdkodad funktion här och nu.

2. Det komplicerade (Complicated) – “Good Practice”

Här är orsak och verkan fortfarande linjärt, men det kräver analys eller expertkunskap för att se sambandet. Det finns sällan ett perfekt svar, utan flera bra vägar framåt.

  • I din kod: Att optimera en långsam SQL-fråga, designa ett API-kontrakt eller felsöka ett minnesläckage i applikationen.
  • Ditt angreppssätt: Känna in $\rightarrow$ Analysera $\rightarrow$ Agera. Här briljerar din tekniska expertis. Du samlar data, väger arkitektoniska för- och nackdelar mot varandra och fattar ett beslut.
  • Faran – Analysparalys: Eftersom det går att analysera sig fram till ett svar, fastnar utvecklare ofta här i jakten på den “perfekta” arkitekturen, trots att en “tillräckligt bra” lösning hade räckt.

3. Det komplexa (Complex) – “Emergent Practice”

Här förändras spelreglerna. Orsak och verkan kan bara förstås i efterhand. Variablerna är för många, kraven är flytande och systemet (ofta kombinationen av kod och människor) är levande.

  • I din vardag: Att bygga en helt ny funktion för en kundgrupp som inte själva vet vad de vill ha, eller att navigera dynamiken och kommunikationen i ett nyformerat utvecklarteam.
  • Ditt angreppssätt: Pröva (Undersöka) $\rightarrow$ Känna in $\rightarrow$ Agera. Här fungerar inte traditionell, rigid vattenfallsplanering. Du måste bygga en MVP (Minimum Viable Product), driftsätta, se hur användarna eller systemet reagerar, och justera baserat på empirisk data. Lösningen växer fram.
  • Faran: Att försöka tvinga fram en “Best Practice”. Om du behandlar ett komplext problem som om det vore komplicerat, kommer du att skriva specifikationer i månader – bara för att inse att ingen vill ha produkten när den väl är klar.

4. Det kaotiska (Chaotic) – “Novel Practice”

Här brinner det. Orsak och verkan går inte att utskilja. Det finns ingen tid för analys eller snygga arkitekturritningar.

  • I din vardag: Produktionsdatabasen är korrupt, sajten ligger nere, kunderna rasar och supporten går varm.
  • Ditt angreppssätt: Agera $\rightarrow$ Känna in $\rightarrow$ Svara. Fokus ligger till 100 % på att stoppa blödningen. Skriv den där fula “quick-fixen”, starta om servern manuellt. När systemet är stabilt igen har du flyttat problemet till den komplicerade domänen, och först då kan du göra den riktiga rotfelsanalysen.

5. Förvirring (Confusion / Aporetic)

Detta är mittzonen. Du vet inte vilken domän du befinner dig i. När vi är här tenderar vi att agera utifrån vår personliga komfortzon. En utvecklare som älskar struktur (det komplicerade) kommer att försöka analysera sönder ett kaotiskt haveri istället för att bara agera, medan en utvecklare som älskar snabba ryck (det kaotiska) kanske börjar skriva ad-hoc-kod i ett projekt som egentligen krävde djup arkitektonisk analys.


Den dolda fällan: Att falla ner för “klippan”

Dave Snowden pratar ofta om gränsen mellan det Uppenbara (Clear) och det Kaotiska (Chaotic). Denna gräns skiljer sig från de andra eftersom den fungerar som en klippkant.

När vi tror att något är så enkelt och uppenbart att vi blir arroganta (t.ex. “Det här är bara en liten standard-deploy, vi behöver inte köra testerna i staging den här gången”), bygger vi upp en osynlig sårbarhet. Plötsligt rasar vi över kanten, rakt ner i totalt kaos.

Håll det enkla enkelt, men bli aldrig dumsnål med säkerhetsmarginalerna.


Hur du använder Cynefin för din personliga utveckling

Som utvecklare är det sällan själva koden som gör oss utbrända – det är den konstanta kognitiva belastningen av att kastas mellan domänerna utan ställtid. Att gå från ett djupt tekniskt problem (Komplicerat) direkt till ett krismöte om en missnöjd kund (Komplext/Kaotiskt) kräver enormt mycket energi.

Tre konkreta tips för din vardag:

  1. Sätt färg på din Jira-board: Börja kategorisera dina uppgifter mentalt. Är denna user story Komplicerad (kräver expertis och analys) eller Komplex (kräver att vi experimenterar och bygger en prototyp)? Justera din tidsuppskattning därefter.
  2. Skapa ställtid för kontextbyten: Om du precis har löst ett komplext problem, ta 5 minuters paus innan du hoppar in i kodbasen för att lösa ett komplicerat problem. Ge hjärnan en chans till “garbage collection”.
  3. Acceptera ovisshet i det komplexa: Sluta må dåligt över att du inte har alla svar i början av ett innovativt projekt. I en komplex domän går det inte att veta allt i förväg. Slappna av, bygg en prototyp och låt koden visa vägen.

Genom att förstå Cynefin-ramverket slutar du använda fel verktyg för fel problem. Du blir inte bara en bättre systemarkitekt, utan också en mer harmonisk utvecklare.


Källor och vidare läsning

  • Wikipedia: Cynefin framework – En djupgående genomgång av ramverkets historia och struktur.
  • Dave Snowden: Grundaren av ramverket och hans arbete kring komplexitetsvetenskap.
  • Fördjupning via sökmotorer: Utforska fler case och akademiska artiklar om ramverkets praktiska tillämpning via Bing-sökning på Dave Snowden Cynefin Framework.