måndag, 09 november 2009
Låter du test driva din utveckling?
Ett säkert tecken på att ambitionen att arbeta testdrivet har misslyckats, är när det dyker upp en gul lapp som säger ”Rätta enhetstesterna”. En av tankarna med att jobba med testdriven utveckling är att enhetstesterna ska skrivas före den faktiska implementationen. I dess renaste form ska ingen produktionskod skrivas innan det finns ett fallerande test. Om arbetet genomförs med denna inställning och arbetssätt, får man absolut störst förtjänst av att jobba med testdriven utveckling.
Alla är nog överens om att den enskilt största kostnaden i livscykeln för ett mjukvarusystem är underhåll. De flesta system har en livslängd som gör att det som traditionellt kallas underhåll pågår under en betydligt längre tid än nyutvecklingen. Men vad definieras som underhåll egentligen? Enligt min definition startar underhåll direkt efter det att den första raden kod skrivits. En utvecklare skriver en rad kod och sedan underhålls den under hela systemets existens. Om den inte underhålls uppstår en skuld som till slut måste betalas. Med den inställningen ökar vikten av att skriva ren kod, vilket gör att kostnaden för underhåll minskar drastiskt.
Som utvecklare skriver man väldigt lite kod under en normal dag. Utvecklare spenderar istället sin tid med att läsa kod och, kanske framförallt, att felsöka kod. Det betyder att om jag skriver kod som är mer läsbar och lättare att testa så skulle kostnaden för underhåll och felsökning minska vilket är något som alla bör tjäna på i slutändan.
Robert C Martin, även kallad Uncle Bob, talade på avslutningsmiddagen på Agile 2008 i Toronto. Där kom han med ett förslag till en femte punkt till det agila manifestet; Craftsmanship over Crap. Han pratade om vikten av att skriva ren kod och verkligen ta ett ansvar för vår profession. För ärligt talat så är mycket av den kod som levereras i projekt idag faktiskt inte bra! Det agila manifestet ska läsas så att om det finns ett värde i den andra delen av ett påstående så värderar vi den första delen ännu högre. T.ex. fungerande programvara över omfattande dokumentation. Eller samarbete före kontraktsförhandlingar. Det betyder dock inte att dokumentation är onödig eller att vi ska hoppa över kontrakten mellan t.ex. kund och leverantör. Det betyder istället att om det finns ett värde i dokumentation och det måste ske en prioritering så prioriteras alltid fungerande programvara högre.
Ett problem i Uncle Bobs senaste tillägg till det agila manifestet är att vi inte värderar Crap, dvs att leverera skräp, och därför blir det inte ett giltigt tillägg. Med det som bakgrund ändrade han det senare till Craftsmanship over Execution. Med Execution menas att de flesta utvecklarteam exekverar och utför sina åtaganden men de tar inte tar inte ett långsiktigt ansvar. Därför ska Execution ,eller genomförande, värderas men vi ska värdera Craftsmanship ännu högre.
Om vi inte underhåller kod kontinuerligt och inte strävar efter att skriva ren kod och skriva kod som är lätt att underhålla, så kommer vi att bygga upp en skuld. Precis som med vanliga skulder kommer också räntan som ett brev på posten och den totala kostnaden för att hantera en röra blir högre än vad den borde bli. Ta därför ansvar för din leverans och känn en stolthet över ditt yrke genom leverera ren kod som är läsbar och lätt att underhålla!
Av Björn Eriksen 08:51
Inlägget har 3 kommentarer