Arkiv

Arkiv for mars 2010

Egoet skal lande

9. mars 2010

Det har vært stille her på Code Camp-bloggen en stund nå. Det skyldes delvis at jeg den senere tiden har jobbet mye med et web-rammeverk for Java, der jeg prøver å innarbeide tanker og idéer som har oppstått som følge av samarbeidet med Kent.

Det er snart et halvt år siden Code Camp med Kent Beck i Oregon, og jeg har nå ukentlig coaching med Kent over Skype, iChat og andre medier for deling av skjerm, utviklingsmiljø, lyd, bilde, mm.

Mye av det Kent sier er sunn fornuft, og poengene hans kan fremstå nesten banale. Men følelse av banalitet forsvinner like fort som den kommer: En av Kent sine styrker er å sette det han sier, de almengyldige, generelle prinsippene, inn i en sammenheng som gjør at mottageren forstår. Det gjør han til en mester i å skape positiv endring.

Jeg har sett mange prosjektledere som forteller utviklerne sine at de skal gjøre tingene “godt nok”. Som juniorprogrammerer mislikte jeg denne beskjeden sterkt. Senere har jeg begynt å forstå hva de egentlig prøver å formidle. Godt ingeniørarbeid er drevet av behov, og ikke løsning. Overdesignede systemer oppstår når behovene glemmes. Prosjektlederene kaller dette “godt nok”, et uttrykk som svært lett kan misforstås.

Behovsdrevet utvikling er essensielt og uavhengig av metodikk. Agile og lean dreier seg i all hovedsak om å bli enda bedre på dette området. Det er noe vi alle vet. Allikevel er det er noe vi alle hele tiden glemmer. Iallefall gjør jeg det.

Kent sitt rammeverk for testdrevet utvikling, JUnit, er en god studie i hva som skjer når behov står i fokus. Han har millioner av brukere, noe som i seg selv gjør rammeverket og tankene bak interessante. Selv har jeg brukt JUnit lenge, men jeg ble enda mer interessert i tankene bak etter Code Camp med Kent. “Vårt mål for rammeverket er å gjøre det så enkelt som mulig for en programmerer å skrive sin første automatiserte enhetstest”, fortalte Kent oss den gang.

Vi systemutviklere lager mange løsninger med web-baserte brukergrensesnitt. Det finnes mange web-rammeverk som skal gjøre oss mer produktive, og i norske IT-bransjen er nok  Java og .Net, de “profesjonelle plattformene”, mest brukt i dag. De er omfattende, og konkurrerer fortløpende om å ha best ytelse, mest funksjonalitet og mest innbydende utviklingsmiljø.

Med prosjekterfaring fra begge leire har jeg allikevel lenge gått med en følelse av overdesign av dagens “enterprise”-rammeverk. For mye fokus på løsning, for lite fokus på behov. Hva gjør en utvikler produktiv? Er det hensiktsmessig å kontinuerlig hoppe mellom forskjellige programmeringsparadigmer, lese dokumentasjon, Google feilmeldinger og finne på stadig mer kreative former for å løse automatisert testing? Listen over mine frustrasjoner er lenger, og kunne sikkert blitt et eget blogg-innlegg.

Med enkelheten og renheten til Kent Beck sitt JUnit-rammeverk som inspirasjonskilde begynte jeg for en stund tilbake å fundere på hvordan et behovsdrevet rammeverk for å lage web-applikasjoner kunne være. Dårlig vær, et par inneklemte fridager, en solid mengde morgenkaffe og noen andre tilfeldigheter satte meg igang med et eksperiment.

Min ukentlige coaching med Kent dreier seg nå stadig mer om Snowflake, mitt eksperiment for hvordan anerkjenne behovene til utviklere av web-applikasjoner. I mine møter om dette med Kent, møter jeg først og fremst meg selv – i døren – fra første stund.

Kort og greit mener Kent at jeg antageligvis har overdesignet deler av systemet allerede, til tross for at det etter mitt skjønn er så enkelt at jeg vil få problemer med å skaffe brukere. Men Kent mestrer nok en gang å sette sin grunnleggende, ingeniørmessige fornuft inn i sammenheng.

Ærlig og brutalt forteller han meg at mitt ingeniør-ego vil at jeg skal lage noe som er usannsynlig imponerende før noen som helst får høre om det. Jeg vegrer meg for å skaffe brukere tidlig i prosessen, fordi dette er det samme som å legge hodet på blokken og risikere at noen kaller meg en idiot.

“Dersom du får noen til å kalle deg en idiot, har du kommet langt”, mener Kent. Jeg har skapt engasjement, og fått et bevis for at jeg er inne på noe. Kanskje har jeg funnet det viktigste behovet – den verste smerten – som jeg skal fokusere på å løse?

Coachingen fremover vil nok dreie seg om både design av rammeverk, og hvordan lande sitt ego i møte med markedet. Fortsettelse følger :)

Anders Extreme Programming, Kent Beck, Snowflake