onsdag 8 december 2010

Enkelhet - i all sin enkelhet

Hej, jag heter Per och jag är en "complexoholic".

Okej, det där låter ju lite udda, men jag lyssnade idag på en fantastisk föreläsning av en av mina husgudar, Dan North. Dan pratade om hur vi utvecklare är beroende av komplexitet, hur vi givet ett ganska enkelt problem gärna gör det mer komplext än det borde vara. Vi är "complexoholics".

En av de saker jag tar med mig från Dans presentation är att komma ihåg att fråga mig själv: "varför?". När vi, av ren vana, väljer en lösning bara för att ramverket finns och kan lösa problemet, är det inte alltid det enklaste sättet att lösa problemet. Därför bör vi som utvecklare vara öppna inför varje ny uppgift och inse att den är just det - en ny uppgift. Bara för att den har vissa likheter med vad vi har gjort förut, är den inte samma som vi gjort förut. Därmed kan vi inte alltid förutsätta att vi ska använda samma verktyg varje gång.

Dan gav ett exempel på hur han vek sig själv ut och in när han försökte sätta upp ett test på sin befintliga kod. Efter ett bra tags böjande och "bändande" kom en kollega fram och ställde den magiska frågan: Varför? Några svar och fler "varför" senare valde han, istället för att skriva världens mest komplexa test, att ändra koden så att både den och testet blev enklare.

Genom att ställa frågan till andra och sig själv öppnar man upp ögonen, tar ett steg tillbaka och inser att man löser fel problem. Komplexa lösningar har oftast en mycket enklare och bättre lösning, det gäller bara att hitta problemets kärna.

En annan bra sak att ta med sig är timeboxing. Jag skrev i mitt förra inlägg om risken för att spåra ur när man försöker vara en för bra scout. Den risken minimeras genom att, inför ett problem, ge sig själv en tidsgräns för hur lång tid man har på sig att lösa det. När tiden går ut tar man ett steg tillbaka och tittar ur ett fågelperspektiv och funderar på vad det är som gör att problemet inte är löst.

Många av dessa saker handlar om att öppna ögonen, att bryta invanda mönster och ett rätt så improduktivt beroende av komplexitet.

Sen finns det ju en baksida på att låta enkelheten ta över. Generaliseringar och strävan efter återanvändning är i grunden bra inställningar som vi inte bara ska slänga åt sidan. Ramverk finns för att förenkla och för att skapa en lösning som ser likadan ut överallt. Bara för att en enkel lösning löser problemet innebär inte att vi ska släppa våra kvalitetskrav. Men låter vi oss vara öppna, diskutera med någon annan och ifrågasätta kommer vi långt. Har vi också ett kvalitetsmedvetet, professionellt perspektiv kommer vi ännu längre.

Att vara utvecklare är fortfarande svårt, men faktiskt bara ännu roligare!

Over and out!

Dagens kodarmusik: Within temptation - The heart of everything BlogBooster-The most productive way for mobile blogging. BlogBooster is a multi-service blog editor for iPhone, Android, WebOs and your desktop

Inga kommentarer:

Skicka en kommentar