2008-06-09

Du kodar väl på svenska?

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...

Detta har hänt

En lång föräldraledighet börjar snart gå mot sitt slut (nåja, i slutet på augusti i alla fall). Man kan lätt få för sig att jag under denna tid helt kopplat bort allt vad jobb heter, särskilt när man ser till antalet inlägg på denna blogg. Och visst hade det varit trevligt om det var på det viset, men det har stundtals varit ganska hektiskt. Så jag tänkte här ta tillfället i akt och samla ihop lite information om vad som hänt på sistone och lite om vad framtiden har i sitt sköte.

Som jag tidigare bloggat om höll jag en presentation om yrkesetik på Developer Summit i början av april som uppmärksammades bl.a. av Computer Sweden och av MSDN Radio som intervjuade mig.

I början av maj hade hela Avega en fantastisk konferens på Island där jag, framröstad av mina kollegor, utsågs till Årets Avegan med följande värmande motivering: "Joakim får priset för sitt genuina, brinnande intresse för både människa och teknik härligt inpackat i ett ödmjukt, intelligent och underhållande paket. Joakim har både förmågan och lusten att dela med sig av sina kunskaper." Det var verkligen ett sant nöje och en stor ära!

Och knappt hade jag hunnit hem från Island förrän Computer Sweden publicerade sin lista över Sveriges 75 "skarpaste utvecklare och arkitekter" där jag återfanns på en hedersam 44:e plats. På denna lista hamnar enligt Computer Sweden de som:

"…har en prestigelös och pragmatisk hållning till sitt arbete.

…som har stor erfarenhet och blivit rekommenderade av andra som är duktiga.

…som kan förklara kluriga problemställningar och kommunicera med omvärlden"

Jag har även hunnit med att ge ett blixttalAgila Sverige: Du kodar väl på svenska? Agila Sverige var en riktigt rolig konferens med massor av intressanta människor och blixttal. Jag kan verkligen rekommendera nästa års konferens redan nu!

I november kommer jag att tala på den internationella konferensen Øredev tillsammans med en lång rad storheter som Robert Martin, Ted Neward, Eric Evans, Ayende Rahien m.fl. Ämnet är "ALT.NET - Are You Ready For the Red Pill?":

"Many, if not most, Microsoft shops use whatever tools and practices Microsoft push out, living in blissful ignorance of the many alternatives out there. The path of least resistance is an easy one. There is, however, a minority of shops and developers, not content with swallowing the 'blue pill'. ALT.NET, ('Alternative.NET'), is a movement that challenges the mainstream Microsoft orthodoxy and reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc. If you are comfortable with the blue pill, the story ends here. If you are curious about the red pill, you should come to this session."

Det ska verkligen bli roligt! ALT.NET hoppas jag få tid att skriva mer om på denna blogg. Kom gärna med i den svenska ALT.NET-gruppen vi startade för en tid sedan; vi hade en coding dojo för ett par veckor sedan för att ta fram sajten altdotnet.se med MVC-ramverket MonoRail. Vi är långt i från klara så kom gärna och hjälp till!

I höst ser det ut att bli besök på två riktigt stora konferenser i Nordamerika: OOPSLA den 19-23 oktober och Microsofts PDC den 26-30 oktober. Men där nöjer jag mig med att vara besökare. I år i alla fall... ;-)