onsdag 27. oktober 2010 Bøker
Å lese fagbøker er en naturlig del av det å være en software craftsman. I et håp om å inspirere, snakker jeg i denne posten om 3 ganger 3 bøker – tre jeg har lest i løpet av det siste året, tre jeg holder på å lese nå, og tre bøker jeg ønsker å lese.
The Ruby Way er ifølge forfatteren ikke skrevet for å lære folk Ruby fra bunn av, men det hindret ikke meg fra å bruke den til akkurat det. Boken er SVÆR, og inneholder mye om det meste - fra grunnleggende datatyper og syntaks, via filbehandling, databaser, OOP, grafiske biblotek og nettverksprogrammering, til mere avanserte tema som metaprogrammering. Jeg syntes boken var ekstremt lærerik, og passet min måte å studere på. The Ruby Way anbefales dem som er ganske ferske i Ruby (eller ikke kan noen ting), og som har lyst til å lære språket orntlig.
Om ambisjonene dine derimot er å bli en typisk Ruby on Rails-utvikler er The Way sansynligvis feil bok for deg. Den har relativt lite fokus på webutvikling, og det den sier om webrammeverkene er i stor grad utdatert (andreutgaven, som jeg leste, er fra 2006).
Real World Functional Programming (tagline: With examples in F# and C#) var en bok jeg hadde store forhåpninger til. Målet var å lære seg F# og samtidig få en ny forståelse for hva funksjonell programmering er for noe. Som dere kanskje har hørt (eller lest) meg uttrykke andre steder allerede – jeg ble svært skuffet over denne boken!
Hovedproblemet er stilen den er skrevet i; den bruker alt for lang tid til å komme til poengene, og repeterer seg selv hele tiden. Dessuten egner den seg dårlig som en lærebok i F# – den viser deg det grunnleggende, men det går så mange sider mellom hver gang man lærer noe nytt at man i mellomtiden har glemt alt man har sett tidligere.
Når det kommer til det funksjonelle paradigmet oppdaget jeg desverre at jeg hadde lært det meste fra før – bl.a. gjennom å lese Programming Erlang. Real World Functionl Programming gav meg mer bakgrunnsmateriale, og sementerte dermed kunnskapen bedre, men jeg er ikke sikker på at det var verdt det. Det føltes som en ganske stor prestasjon å fullføre boken, men i etterpåklokskapens lys ser jeg at jeg valgte feil bok.
JavaScript: The Good Parts, skrevet av Douglas Crockford, var en annen bok jeg hadde store forhåpninger til. Den er ganske tynn, og var fornøyelig å lese. Problemet var derimot at jeg har ganske lite JavaScript-erfaring. Jeg håpte boken skulle gi meg en god start, gi meg det jeg trengte for å komme igang med "riktig" JavaScript-koding. Det føler jeg derimot ikke at den kunne klare. Hvis jeg hadde vært en bruker av språket tror jeg nok boken kunne gitt meg god støtte i forhold til å følge Crockfords regler og stil, men for meg ble dette (i allefall i denne omgang) bare interessant lesning, ikke noe mer.
The Pragmatic Programmer: From Journeyman to Master, publisert i 1999, er en bok de fleste utviklere har hørt om. Den dekker de fleste tema innen smidig utvikling og software craftsmanship, og er ment å inspirere utviklere til å ta et større ansvar for det de produserer – og måten de utøver faget sitt på. På en måte minner den om en annen, velkjent bok, nemlig Code Complete, bare at den har mye sterkere meninger om hvordan man bør lage software.
The Pragmatic Programmer er en bok alle bør lese, og det burde ligge et eksemplar eller tre i alle utviklingsavdelinger. Personlig føler jeg ikke jeg får så veldig mye ut av den nå – jeg har allerede blitt overbevist om det meste som står der via andre kilder – men innimellom finner også jeg noen gullkorn som inspirerer.
On LISP: Advanced Techniques for Common LISP, Paul Grahams bok fra 1993, regnes som en av de beste kildene til avanserte LISP-teknikker for erfarne utviklere. Den fokuserer på det som gjør LISP unikt – på ting man ikke kan gjøre i andre programmeringsspråk. Den lover mye, og sålangt har den ikke skuffet.
Merk at jeg leser On LISP for å bli bedre i Clojure, ikke Common LISP – og det gjør faktisk boken enda mere spennende, fordi jeg oppdager hvordan disse språkene skiller seg fra hverandre.., bl.a. hvordan Clojure har et sterkere fokus på funskjonell programmering og immutable state.
Code (tagline: The Hidden Language of Computer Hardware and Software) fra Microsoft Press er den siste boken jeg har begynt å lese. Den begynner med ting som morsekode, blindeskrift og elektrisitet, arbeider seg videre inn på tallsystemer og logikk, og skal gi leseren en dyp forståelse av selve essensen innenfor datateknologi. Den er trolig ikke skrevet med tanke på lesere med ti års erfaring som utviklere, men jeg tror likevel det blir en underholdende bok, og at det kan være nyttig å friske litt opp i det helt elementære.
Dessuten er det den fineste boken i bokhylla mi - en helt hvit hardcover med kun fire bokstaver og ikke noe annet på fremsiden: C O D E
Land of Lisp (tagline: Learn to Program in Lisp, One Game at a Time) er en helt nye bok som lærer deg å programmere Common Lisp gjennom å lage og spille spill. Den har til og med sin egen musikkvideo, og boken virker å være svært underholdende for hardbarka geeks. Ta en titt på landoflisp.com – forfatteren har helt klart meget god humor, og denne boken er noe jeg har lyst til å hylle og spre til flest mulig.
Igjen er jeg ikke så interessert i Common Lisp, men håper å tror at det jeg lærer er overførbart til Clojure.
Masterminds of Programming (tagline: Conversations with the Creators of Major Programming Languages) inneholder intervjuer med storheter som Bjarne Stroustrup (C++), James Gosling (Java), Anders Hejlsberg (Delphi, C#), Bertrand Meyer (Eiffel) og Larry Wall (Perl). Jeg likte veldig godt å lese Coders at Work tidligere i år, og denne virker å være i samme stil, men ha enda flere, spennende intervjuobjekter.
Anmeldelsene på Amazon sier at Masterminds of Programming er "packed with thoughtful, geeky quotes and insights" og at den er "an educational AND entertaininig read". Dette må da være en gullgruve for en som er interessert i softwarebransjens røtter og programmeringsspråkenes ulikheter. Jeg klarer nesten ikke vente.
Seven Languages in Seven Weeks (tagline: A Pragmatic Guide to Learning Programming Languages) er også en bok som virker meget spennende. Den lover å gi meg et grundig innblikk i syv veldig forskjellige språk – i hva som er unikt med hvert av dem. Og språkene vi snakker om er Ruby, Io, Prolog, Scala, Erlang, Clojure og Haskell. Gjennom disse vil man få forståelse for konsepter som dynamisk typing, prototype-systemer, mønstergjenkjenning, (ren) funksjonell programmering, actor model, software transactional memory m.m.
Boken er foreløpig i beta, men forventet release er femte november.
So there you have it.., 3 x 3 bøker som jeg har lest, leser eller forhåpentlig vis kommer til å lese. Har du kanskje lest noen andre bøker du synes jeg burde ta en titt på? Eller du har noen titler i kikkerten som du har veldig lyst til å lese en vakker dag? Skriv en kommentar da vel!
Tidligere høydepunkt fra bok-kategorien: Å jobbe effektivt med drittkode | Min nye bibel innen smidig design | Å tenke objekter