måndag 6 juni 2011

Clean Code & Craftsmanship


En av de bästa trenderna inom mjukvarubranschen just nu är att kod och kodkvalitet börjar få det erkännande det förtjänar.

Vi har alla sett det: en trasslig kodbas, parat med en utvecklingsprocess som enbart betalar för nya funktioner. Ingen får alltså betalt för att göra koden lätt att underhålla, men kunden får betala mer och mer för allt simplare förbättringar, eftersom den tilltagande kodkomplexiteten gör varje förändring dyrare och dyrare. Till slut får vi en infarkt: enbart att hålla produkten/tjänsten/koden under armarna vid normal drift kostar exponentiellt mer och mer och mer.

Man kan i både matematiska och ekonomiska termer beskriva hur sådana infarkter uppstår. Kanske är det ett ämne för en annan bloggpost. Nu räcker det med att konstatera att vi faktiskt vet hur vi ska undvika dem. Och det är ju det viktigaste, eller hur?

För det första behöver vi en process som synliggör kodkomplexitet, teknisk skuld, och skillnaden mellan att ha refaktorerat koden och inte.

Man kan ju inte råda över det man inte ser, så synliggörande är nummer ett. Till exempel genom att bokföra den tekniska skulden på produktbackloggen när den införs, eller att automatiskt analysera förändringen i komplexitet i all kod som checkas in. På så sätt lyfter man frågan upp på bordet och ger sin kund/beställare möjlighet att ta ställning till hur problematiken ska tacklas.

Men för det andra behöver vi alltså konkreta strategier för att vidmakthålla kodens underhållbarhet, och det är här som till exempel "Clean Code" kommer in.

Clean Code handlar om att den kod vi skriver ska vara lätt att läsa och förstå för oss människor, så att vi enkelt kan utöka den med mer funktionalitet, eller enkelt lättare se bristerna. Boken "Clean Code" är en uppsättning tips och regler som sammantaget får oss att producera kod med denna egenskap. I boken får vi till exempel lära oss skriva vettiga kommentarer, hålla nere antalet parametrar, eller varför flaggargument till funktioner är en så usel idé. Bland annat.

Men utöver just den här specifika boken är "Clean code" som företeelse bara en del av en mycket rörelse att försöka bättra på vår gemensamma förmåga och hantverksskicklighet: "Software Craftsmanship".

I den här rörelsen ryms praktikerna inom XP och TDD, här ryms utbytet av diverse designmönster, och här finns diskussionen kring fler programmeringsparadigm än det imperativa och objektorienterade.

Inte minst utgör den här rörelsen en viktig pendang till den agila rörelsen på metodsidan. De agila metoderna försöker visa vad vi ska fokusera på, rörelsen kring "software craftsmanship" fokuserar på hur vi gör det. Alla dessa olika praktiker stöttar varandra och bidrar i slutändan till att vi lyckas göra fler kunder ännu mer nöjda trots att vi förbrukat färre mantimmar på vägen.

Därför tror jag vi kommer att återkomma till de här frågorna många många gånger.

(Bilden från Ell Brown. Some rights reserved!)

Inga kommentarer:

Skicka en kommentar