”All you have to do is change a 5 to a 6, how hard can it be?!”
Kunden verkar vara lite irriterad. Han blickar frustrerad runt salen dÀr jag och nÄgra andra hackers stirrar missnöjda pÄ vÄra skÀrmar. Ingen har kunnat fixa hans program inom den utsatta tiden pÄ 30 minuter. Som kunden ser det Àr det en enkel förÀndring. Det Àr en liten applet som spelar tic-tac-toe. Man behöver 5 i rad för att vinna, men det Àr för svÄr att besegra. Kunden vill att datorn ska behöva 6 i rad för att vinna medans han fortfarande behöver 5.
NĂ€r man tittar pĂ„ koden Ă€r det allt annat Ă€n en enkelt förĂ€ndring. Det ryktas om att koden skrevs ursprungligen pĂ„ serbiska. Eller C. Eller bĂ„da tvĂ„. I alla fall Ă€r det nu en enda stor Java class med massor med global control flags, nested loops och hĂ„riga lĂ„nga metoder. Suck. Jag sjunker ner i stolen och tĂ€nker – det hĂ€r kan ta flera dagar att fixa.
Lyckligtvis Ă€r det hĂ€r scenen inte hela sanningen. I verkligheten heter ”Kunden” Patrick Wilson-Welsh, som Ă€r sjĂ€lv en skicklig programmerare, och jag sitter i en ”Clean code clinic” pĂ„ agile2008. Nu ta Patrick fram en annan kodbas för oss att jobba med. Det Ă€r ocksĂ„ en applet som spelar tic-tac-toe, och om man bara titta pĂ„ UI:et ser det precis likadan som det första. Under huven Ă€r det helt annorlunda dock. Det finns Java packages som heter ”model”, ”view”, ”controller”. Klasserna Ă€r smĂ„a med bra namn som ”Board” och ”Move”. Det finns till och med omfattande enhetstester. Inom en halvtimme har de flesta i rummet klarat av att Ă€ndra koden efter kundens önskemĂ„l.
(Vill du testa sjÀlv, tic-tac-toe koden finns att ladda ner hÀr)
Alla programmerare som har jobbat ett tag förmodligen kĂ€nner igen sig. ”Clean code” Ă€r bra för bĂ„da kundens tidsplan och programmerarnas mental hĂ€lsa. Hur kan det uppnĂ„s? En bra början vore att lĂ€sa Bob Martins senaste bok. TĂ€nk efter, prata med kunden om ”technical debt”. Be a professional. Vi har inte rĂ„d att bygga flera produkt dĂ€r det tar flera dagar att Ă€ndra en 5 till en 6.