Utvecklare och krigskonst
Efter att ha läst boken Sun Zis Krigskonst så såg jag några likheter mellan krigskonst och programmering. Så jag bestämde mig för att skriva lite om det. "Hans seger säkras genom att han inget misstag gör. Den som lyckats undvika misstag segrar alltid eftersom hans fiende är besegrad redan från början" Ett system är betydligt stabilare utan användare. En mänsklig användare har en förmågan till kreativ förstörelse, hon har gåvan att göra exakt det värsta tänkbara vid värsta tänkbara tillfälle. Den professionella och erfarna utvecklaren behärskar konsten att kriga. Hon vet att användaren är något fruktansvärt och denna användare ska hindras från att göra alla tänkbara fel med hjälp av alla tänkbara medel och detta genom defensiv programmering och vara pragmatisk. En devensiv utvecklare ser användaren som en anfallare, inte den typ av anfallare som medvetet vill förstöra, utan som en person som omedvetet förstör. Den defensive utvecklaren vet att användaren omedvetet söker efter områden där det inte finns något försvar, så för att försvara med garanterad framgång, försvara där ingen anfaller. En defensiv utvecklare blir aldrig nöjd med sitt fösvar, hon är medveten om att försvaret kommer att behövas förstärkas och planerar för detta. Med nogran prövning testar hon sitt försvar mot tänkbart anfall och är medveten om att ett litet kryphål eller försvagning kommer att leda till förintelse. Denna testing sker både före försvarets konstruktion och efter. |
Den defensive programmeren utgår inte ifrån något som hon anser inte kommer att ske utan förbereder sig för skeendet med de resurser hon har. Hon utgår heller inte ifrån att hon inte kommer att bli angripen utan ordnar med hjälp av de resurser hon har så att hon inte kan angripas. I princip så är hon förlorad om hon varken har utrustning, provision eller förråd med sig. Utan hjälp av lokala vägvisare kan inte terrängens fördelar utnyttjas, en erfaren utvecklare är medveten om detta och använder sig av andra. Även som expert anser hon att det finns mycket mer att lära. En krigare kan aldrig kriga ensam mot många, men flera krigare tillsammans kan segra med rätt strategi och metod. Den defensive utvecklaren handlar först efter att ha övervägt möjligheter. |
-------------------------------------------------------------------------------------------------------------------------------
Fredrik Normén arbetar som utvecklare, mentor, coach och instruktör på Cornerstone AB. Fredrik är Microsoft MVP och är med i ASPInsiders och MEET. Sedan 8 års ålder har han programmerat och haft ett stor intresse kring utveckling, arkitektur och design. Fredrik har även skrivit böcker för Wrox Press och hjälpt Mictosoft Patterns & Practices med skapandet av Enterprise Library och "review" av flera av deras guidlines. Han har också spelat in några MSDN TV om ASP.Net AJAX, Silverlight etc. Som ASPInsiders har Fredrik tillsammans med andra Insiders fungerat som ett bollplank åt Microsoft.Net teamet. Du kan hitta Fredriks blog på följande adress: http://weblogs.asp.net/fredriknormen