Å tenke objekter


torsdag 21. mai 2009 Bøker OOP

Object ThinkingObject Thinking er en bok skrevet av forfatter Dr. David West i 2004. Den er overraskende nok utgitt av Microsoft, men hører egentlig hjemme i eXtreme programming / Domain-Driven Design / Smalltalk-universet, og har potensiale til å totalt endre ditt syn på softwareutvikling.

Dette er en historiebok om utviklingen innen programmeringsspråk. Det er også en politisk diskusjon, og ikke minst et filosofisk studie av hva programmering er, og hvordan det bør gjøres. Hovedtemaet er objektorientering, og forfatteren hevder at på tross av at mange sier at de driver med OO, så gjør de langt fra akkurat det. Han sier at vi har misforstått, eller eventuelt glemt, bakgrunnen for objektorientering. For å få til alt det som OO gjør tilgjengelig for oss så må vi tenke objekter på den riktige måten.

Nesten med en gang jeg startet å lese merket jeg at boken provoserte meg. Den grep tak i noen av mine fundamentale oppfatninger - ikke bare rundt programmering, men i verden generelt - og snudde dem på hodet. Og så merket jeg hvordan teksten begynte å forandre mine egne meninger...!

Det var faktisk ganske skummelt. Men også veldig spennende. Noe av det mest besynderlige var hvordan han klarte å introdusere meg til smidig utviklingsfilosofi på en helt ny måte. Han presenterer en lang avhandling om den skarpe kontrasten mellom Formalisme og Hermeneutikk.

Formalisme er sterkt knyttet til rasjonalisme, et mekanisk og deterministisk verdensbilde. Her følge man formelle metoder og teknikker. Hermeneutikk i den motsatte enden av skalaen er et ikke-deterministisk verdensbilde, og i følge Dr. West i samsvar med ting som eXtreme programming og objekt-tenking. TDD er for eksempel et glimrende eksempel på ikke-formalisme. TDD er en praktisk metode som det viser seg kan gi et veldig bra resultat, uten at det kan bevises rasjonelt.

Desverre, sier han, er det få XP/agile-praktikanter som er klar over dette filosofiske skillet. Og han har helt rett; selv har jeg blitt presentert smidig utvikling i veldig formelle rammer, og det er først nå, etter å ha lest Object Thinking, at jeg begynner å forstå det jeg tidligere bare glimtvis har sett - at smidig utvikling helt grunnleggende er en annen filosofi enn det som råder i softwarebransjen i dag.

Ken Auer sier det slik:

"Too many software professionals who use object-oriented tools aren't object thinkers. Every developer Dave West reaches with this book takes us a step closer to improving software - and the industry."

Jeg merker at det er vanskelig, eller snarere umulig, å formidle denne oppdagelsen på en god måte. Jeg tror dette er en oppdagelse hver og en må gjøre i sitt eget tempo. La meg i stedet fortelle litt mer om boken..

Objekt-tenking går rett og slett ut på å tenke som et objekt. Tradisjonelle utviklere tenker som datamaskiner. De konsentrerer seg om den tekniske løsningen, om implementasjon. OO-programmerere må lære seg å tenke mer som objekter - vi må tenke på problemet, og modellere det i stedet.

Nøkkelordet fra boken for meg er Behaviour - adferd! Vi må designe programvaren vår rundt objekter, som igjen er definert i form av adferd. Dette i sterk kontrast til den data-sentriske modelleringen de fleste normalt bedriver. Rockford Lhotka, utvikleren bak CSLA.NET, anbefaler også Object Thinking, og sier det på denne måten:

"To me that’s the value in West’s book. The philosophy of each object having a single, clear responsibility. Of objects collaborating with other objects to perform complex tasks, without being complex themselves."

Dr. David WestDen andre delen av boken..

Object Thinking har også en praktisk del. Mens den første halvdelen fokuserer på historie, filosofi, og hvordan man skal tenke, presenterer Dr. West i den andre halvdelen en del teknikker - modelleringsteknikker - som er i samsvar med objekt-tenking. Dette falt ikke så godt i smak for meg. Jeg vil foreslå at man hopper over noen av de mest praktiske delene, og i stedet leser noe sånt som Agile Principles, Patterns, and Practices in C# av Robert C. Martin, som har en litt annen tilnærming som er mer kjent for meg, men som fortsatt er i samsvar med det Dr. West sier.

Til slutt et par linker: Boken kan du selvsagt få tak i hos Amazon. Det finnes også et intervju med Dr. West på PolymorphicPodcast.

Knagger: , , , ,


comments powered by Disqus