Du kodar väl på svenska?
På Agila Sverige, Sveriges första agila konferens med blixttal och "Open Space"-möten, höll jag ett blixttal (max 10 minuter långt) om att koda på svenska. Mina slides (finns det ett bra svenskt ord för detta?) ser du nedan via eminenta tjänsten Slideshare.
Dessa slides är inte så innehållsrika eftersom jag föredrar att publiken lyssnar på vad jag har att säga istället för att försöka hinna läsa vad som projiceras på en duk. För den som är intresserad av vad jag sa kommer här istället mitt manusutkast i mer eller mindre oredigerad form.
Slide 1 - "Du kodar väl på svenska?"
Hej!
Jag heter Joakim Sundén och kommer från konsultbolaget Avega. Jag tänkte prata lite om att koda på svenska.
Slide 2 - "Working together"
“Business people and developers must work together daily throughout the project.” Det är en av principerna bakom Agile Manifesto.
I agila utvecklingsprocesser jobbar utvecklarna nära domänexperterna under hela projektets livstid. Man förfinar hela tiden design och domänmodell allt eftersom den gemensamma förståelsen för hur mjukvaran ska fungera ökar. För att det här ska fungera är det viktigt att kommunikationen mellan utvecklare och domänexperter fungerar bra. Man behöver ett gemensamt språk.
Slide 3 - "Ubiquitous language"
Eric Evans är en av de som bäst formulerat detta behov med sitt begrepp “ubiquitous language”, allestädes närvarande språk, som vi här kallar gemensamt språk.
Enligt Evans har ett projekt allvarliga problem när dess språk är splittrat. Domänexperter använder sin jargong medan tekniska teammedlemmar har sitt eget språk för att diskutera design. Terminologin i det dagliga diskussionerna blir bortkopplad från terminologin i koden. Till och med samma person kanske använder olika språk i tal och skrift och då går man kanske miste om några av de skarpaste uttrycken för problemdomänen.
För att komma till rätta med de här problemen bör man använda domänmodellen som grund för ett gemensamt språk och få teamet att använda det språket konsekvent i all kommunikation inom teamet och i koden.
Det är särskilt viktigt att använda det gemensamma språket när man pratar eftersom vår hjärna verkar vara specialiserad på att hantera komplexitet i det talade språket. Att leka med ord och fraser och experimentera med språket förbises ofta i modelleringsarbete.
Slide 4 - "Varför svenska?"
Om vill få till stånd ett gemensamt språk som genomsyrar allt från kod till samtal i en svensk verksamhet där domänexperterna talar svenska, borde det vara självklart att använda svenska i koden? Vi vill väl knappast tvinga resten av verksamheten att börja tala engelska?
Jag har jobbat en del i försäkringsbranschen på sistone och där kodade vi på svenska i problemdomänen. Att sitta och översätta termer som fribrevshavare, tiotaggare och skuggvärde till engelska hade försvårat samtal med domänexperter och kravanalytiker. Det var svårt redan på svenska att lära sig och komma ihåg vad de olika termerna betydde. Men det var ovärderligt att koden och verksamhetstermerna var samma när man satte sig tillsammans med en domänexpert för att försöka förstå olika affärsregler.
Men frågan i rubriken här är egentligen felaktigt ställd; lika lite som vi frågar oss varför vi ska prata och skriva på svenska i resten av verksamheten, lika lite borde vi fråga oss varför vi ska använda svenska i koden. Den fråga vi istället borde ställ oss är - varför inte?
Slide 5 - "Varför inte?"
Vad finns det egentligen för skäl att inte välja svenska? Annat än att “det är så vi alltid har gjort”? För engelsktalande som Eric Evans tycks det självklart att man kodar på verksamhetens språk, oavsett om det är engelska, spanska eller svenska. Men bland svenska utvecklare verkar det ofta närmast otänkbart; även bland de som arbetar agilt eller t.o.m. säger sig ha en DDD-approach.
Hur kommer det sig? Finns det särskilda svårigheter med att koda på svenska som engelskatalande har svårt att se? Eller är det bara födsel och ohejdad vana som håller svenska utvecklare tillbaka? Vilka är egentligen invändningarna mot svenska?
Slide 6 - "Men om vi ska outsourca då?"
Outsourcing, offshoring, eventuell sammanslagning med eller uppköp av andra företag, engelska som koncernspråk etc. Visst finns det många goda skäl att välja engelska, men de här skälen är knappast relevanta för annat än en minoritet av svenska utvecklingsprojekt. I många fall måste det också bli en bedömningsfråga där sannolikheten för t.ex. outsourcing till annat land får vägas mot kostnaden för ett försvårande av det gemensamma språket.
Att däremot reflexmässigt välja engelska bara "utifall att" innebär i många fall spekulativ övergeneralisering som komplicerar arbetet utan att ge några uppenbara fördelar. Här kan man verkligen tala om YAGNI - “You Aint Gonna Need It!”
Slide 7 - "Det känns konstigt"
Det här verkar vara ryggradsreflexen för många...
"Det känns konstigt..."
"Det känns helt fel. Skitjobbigt!"
Har man jobbat ett tag med svenska i koden inser man ganska snabbt att det är en vanesak. Jag har träffat utvecklare som bara kodat på svenska som tycker det är obegripligt att det finns folk som sitter och översätter svenska verksamhetsbegrepp till engelska i koden.
Slide 8 - "Svengelska"
Det går inte att koda på svenska. Programmeringsspråken är ju på engelska. Man måste ju skriva if(försäkringSaknas). Jo, så är det. Men är det verkligen ett problem? Det är för domänmodellen vi vill ha ett gemensamt språk, inte för infrastruktur, den tekniska domänen eller så låg nivå som if-satser och for-loopar. Det är inte på den nivån domänmodellen mejslas ut.
(Hur många utvecklare som diskuterar en while-loop säger för övrigt "while försäkring saknas kommer koden att do X men bara if lönen samtidigt är över Y"?)
Men även för domänmodellen blir det ju svengelska, eller ska man översätta Exception och Factory o.s.v.? Annars blir det ju FörsäkringException och FörsäkringFactory? En del personer tycks initialt ha problem med det. “Det är inte estetiskt”, “det har inte samma visuella känsla” eller “det ger en sämre helhetskänsla”. Jag vill inte påstå att sådana känslor är helt irrelevanta, men kan det verkligen vara mer än en vanesak? Kan det vara en tillräckligt stark invändning mot svenska för att börja översätta dröjsmålsränta och fribrevshavare?
Själv tycker jag att det inte tog särskilt lång tid att tycka att FöräkringFactory och FörsäkringException inte är konstigare än hedgefond, kundworkshop, trekkingskor, bilens airbag eller e-mailprogram.
Slide 9
Enligt min erfarenhet är valet att koda på engelska allt som oftast ett icke-val. Det har helt enkelt inte föresvävat personen i fråga att svenska är möjligt. Och när man presenterar det som ett alternativ blir den ryggradsmässiga reaktionen att “nej, men går det verkligen” eller “det blir konstigt”. Men det ÄR en vanesak. Prova! Det finns fördelar med att ha samma språk i koden som i skrift och konversationer i teamet, med domänexperter.
Om vi tror att det är fördelaktigt att använda samma språk och termer i koden som i det vardagliga samtalet - att i sanning ha ett gemensamt språk - och vi inte kan se några reella problem med att använda svenska i koden - då borde vi väl också koda på svenska?
Lustigt nog stötte jag kort därefter på mitt första problem med svenska tecken i koden när det visade sig att NVelocity vägrar känna igen variabler och metoder som innehåller åäö. :-) Det blir väl till att försöka fixa det helt enkelt, men att NVelocity använder CVS och inte verkar vara uppdaterat sedan januari 2003 gör ju inte att man känner sig helt sugen...


6 kommentar(er):
Tjena! Bra inlägg! Läs min blogg imorgon, jag har skrivit om dig. Vi kör också på svenska men undviker å,ä,ö. Känns som en helt ok kompromiss för att undvika tekniska problem. Annars allt väl?
Jag har kört ett ganska stort projekt på svenska. Typiskt nog det enda projekt där det kommit in engelskspråkig personal efter ett tag.
Plural 's' är väldigt bekväma i engelskan. Det är nog det jag saknar mest när jag kodar på svenska.
@Sofia:
Tack! Jag har följt ditt bloggande på Sogeti och visste att du flyttat ditt bloggande till Linköping, men inte att du hade en egen blogg. Kul!
Jag tycker inte att det funkar lika bra utan åäö eftersom det kan bli lite förvirrande ibland, men man tar vad man får...
Annars är det bara bra, särskilt med gårdagens 0-2! :-)
@Johan:
Det är sant. Jag brukar ofta lösa det genom att kalla saker för "-lista", t.ex. foreach(Tips tips in tipsLista).
Hej Joakim.
Istället för att kommentera dina synpunkter på denna sida så har jag tagit mig friheten att översätta några av dina argument till engelska och bemöta dessa på min blogg (som ju är på engelska).
Läs mer här:
http://r-c-r.blogspot.com/2008/07/question-of-to-code-in-swedish-or-not.html
Jag tycker kod på svenska är konstigt. Jag har jobbat ganska mycket med svensk kodbas, men tycker ändå inte att det känns naturligt. Däremot: Det är självklart att det är bättre. När man pratar med kunden kan de ändå ha ett begrepp 'i fikarummet' och ett annat i marknadsmaterialen/stuyrelserummet. Att då införa ett tredje, dåligt översatt svengelskt begrepp bara för att undvika svenska i koden är bara förvirrande. Att på samma sätt låta kodare sitta och klia sig i huvudet för att försöka formulera en process på engelska istället för att bara kommentera lite kvickt på svenska är också slöseri med tid. Vi är inte tillräckligt bra på engelska för att klara av att koda på engelska med bibehållen tydlighet.
Skicka en kommentar