Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Standard

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.

"Finns det hotfulla höjder, vatten med vass, beväxta håligheter eller dungar med kraftig undervegetation i närheten av armén måste dessa noggrant undersökas. Dessa är ställen där fienden ligger på lur."

En duktig och erfaren utvecklare använder verktyg så som Test Driven Development (TDD) för att så tidigt som möjligt förhindra ett oväntat anfall och testa om ett tänkbart försvar kommer att hålla innan dess formation har tagit plats. Eftersom testet är på plats har utvecklaren möjligheter att testa olika interna formationsförändring av försvaret för att se om den nya förändringen håller. En omformation av ett försvar som bara förbättrar dess position och inte själva försvarets uppgift sker med Refactoring som verktyg.

 

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.

”Den som först förstår när direkta eller indirekta aktioner skall användas segrar”.

Precis som i krig vet den defensive utvecklaren om sex olyckor som inte har natruliga orsaker utan beror på inkompetens. De är flykt, olydnad, kraftlöshet, sammanbrott, oreda och nederlag. Det är vanligt att en inkompetent utvecklare flyr när hon ställs inför utmaningar som hon inte kan lösa, hon har då inte försökt använda de resurser hon har tillång till. Att inte följa principer, riktlinjer och design patterns är en olydnad, att inte vara pragmatisk eller defensiv är kraftlöshet, att bli frustrerad över svårigheter inom porgrammering kan leda till sammanbrott. Att skriva kod som ingen annan människa förstår skapar oreda. En defensiv utvecklare som inte har uppskattat användarens förmåga att kunna göra fel orsakar nederlag.  Den defensiva utvecklaren har ansvaret att dessa sex olyckor aldrig försummas.

Den som behärskar kosten att vara defensiv, kommer att segra. Den som inte behärskar konsten, kommer att förlora.

”Känner man fienden och sig själv är segern inte i fara. Har man dessutom förstått terrängens betydelse blir segern fullständig.”

Stora delar av denna artikel har texter tagna från Sun Zis Kirgskonst ISBN 91-87136-53-8



-------------------------------------------------------------------------------------------------------------------------------
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

 

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 615
27 953
271 709
460
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies