2010-07-19

Buggchocktävlingen, del ett: Agans


Det pratas alldeles för lite om debuggning och hur man gör det på rätt sätt. En utvecklare kan lägga halva sin arbetstid på att leta buggar, men i skolan får man inte lära sig ett skit om det. Det finns en miljard böcker om programmering, men bara en handfull om debuggning. Man får lära sig det själv, bäst det går. Under de senaste åren har det i alla fall dykt upp ett par böcker, och för ett par veckor sen köpte jag fyra stycken, som jag tänkte berätta lite om. Den första skummade jag igenom idag: "Debugging. The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems" (puh) av David J. Agans.

Agans är gammal som gatan, och har en massa erfarenhet. Boken är smockfull av vad han kallar "war stories"; berättelser om buggar han stött på och hur de har fixats. Ibland blir det för mycket exempel, de bryter ner berättandet, ungefär som om man använder för mycket citat. Samtidigt är texten lättsam och boken är föredömligt kort. Jag gillar att han inte gjort ämnet onödigt tungt och vetenskapligt. Det som behövs i en debugging-bok är att lära ut de grundläggande principerna på ett sätt som gör att så många som möjligt kan tillägna sig dem. Där gör han ett väldigt bra jobb och får med det mesta.

Ett problem jag ser är att han är aningen för old school. Många av exemplen kommer från hårdvaru-design långt tillbaks i tiden, där det varit ett stort företag att få igång utrustning för att kunna observera problemet. Därför är en av hans 9 regler "Don't think but look". Det är ett vettigt råd i situationer där det är bekvämare att luta sig tillbaks och fundera runt problemet, än att gå in och observera. Vad gäller debuggning av mjukvara idag så skulle jag föredra den motsatta regeln: "Don't look but think". Det är alldeles för enkelt idag att dra igång sin debugger och sätta breakpoints och steppa runt. Man tittar med mikroskop, utan att kunna se sammanhanget.

Förutom just det så är jag entusiastisk. Han får med nästan allt jag tycker är viktigt, och boken är lättläst och tillgänglig. Han kanske kunde låta lite mindre skrytsam när han på slutet hävdar att läsaren nu är mycket bättre på att debugga än tidigare, men i de flesta fall har han antagligen rätt. Agans ligger bra till i Buggchocktävlingen!

4 kommentarer:

kuken sa...

när kommer del två

kuken sa...

ville bara fråga när del två kommer

puterman sa...

När jag slutar ha semester.

JackAsser sa...

Mina regler som fungerar förvånansvärt bra och snabbt:

1) printf ftw, helst när det är multitrådat.

2) Antag inte "uppenbara" saker, som typ: "nej, DEN kan inte vara NULL etc."

3) Skippa debuggers och stepping helt förutom stack tracen vid en krasch.