Wednesday, June 6th, 2012
Skriv en kommentar

Nå er NDC2012 pre-conference workshop-dagene vel gjennomført, og i morgen braker det løs med selve konferansen i Oslo Spektrum. Geeks fra hele verden har flydd inn, og utviklerne som deltar vil kunne velge blant over 160 foredrag av høyeste kvalitet.young_mccoy_battle

I går og i dag deltok jeg på Greg Youngs workshop. Han er skummelt intelligent, men samtidig en dyktig pedagog. Det han fikk oss til å kode disse dagene var egenlig ganske enkle greier, men de inneholdt noen fundamentale og spennende budskap. Han hjalp oss å se hvordan man kan redusere noen problemer som virker vanskelige til noe som blir helt trivielt.

Hva jeg har lært av Greg

Første dag lagde vi et testrammeverk som genererer detaljert dokumentasjon om koden som testes. Vi lekte med Lambda Calculus og funksjonelle pipelines, og jeg fikk parprogrammert i både C# og Clojure.

For noen år siden deltok jeg på en workshop med Scott Bellware. Han lærte oss å skrive context specifications – tester som dokumenterer koden bedre, får deg til å tenke på hvilken adferd du ønsker at systemet skal ha, og som også kan generere dokumentasjon. Siden har jeg blant annet brukt ting som Gherkin og SpecFlow til å skrive akseptansetester som tar dette enda lengre.

Men Greg har fått meg til å innse hva som er problemet med det jeg har gjort til nå; SpecFlow-testene og koden som kjører under dem henger ikke sammen. Det blir det samme problemet som man har med kommentarer i kode – etterhvert begynner de å divergere, og slutter å fortelle sannheten.

Testrammeverket vi lagde med Greg produserer dokumentasjon som er tettere koblet sammen med koden som faktisk kjører i testene.

Læresetning å huske: Alle tester kan modelleres som en komposisjon av fem funksjoner!

For eksempel i Clojure:

(-> given
    transition-to-when
    when
    transition-to-then
    then)

Det er det at det er en funksjons-komposisjon, en pipeline, som er det viktige. Og at output fra hvert av disse stegene kan bli til dokumentasjon som forretningsfolk kan forstå.

Andre dag av workshopen dreide seg om Pi Calculus, Actor Model og message based finite state machines. Greg illustrerte noen av fordelene med å modellere problemer med disse teknikkene, og hvordan problemer som i utgangspunktet kan virke vanskelige plutselig blir ganske enkle. Som å skrive enhetstestet kode som er avhengig av tid.

Hjerne er nå full av ideer, og disse to dagene har gitt meg ting jeg helt sikkert kommer til å jobbe og eksperimentere med i mange måneder fremover. Noen flere blogposter blir det nok også…

GeekBeer etc.

Det sosiale aspektet ved en konferanse som dette må ikke undervurderes. Det er som sagt mange spennende utviklere som har tatt turen til Oslo denne uken. Diskusjonene og læringsprosessen har begge dagene fortsatt til langt ut på kvelden.

Og nå i kveld var det GeekBeer utenfor Østbanehallen. Det virket som om de fleste foreleserne som allerede var ankommet tok turen ut for å møte sitt publikum, og stemningen var upåklagelig..

På bildet lengre oppe ser du (fra høyre) Greg Young, IL Ninja Philip Laureano og .NET-hacker John McCoy. Det utartet seg nesten til en “battle” mellom Greg og John da de diskuterte avanserte finurligheter rundt hvordan man kan analysere og endre kjørende .NET-kode. Jeg er fortsatt svimmel av å forsøke å henge med på hva de to snakket om!

I mine øyne har NDC 2012 allerede vært en stor suksess. Og konferansen har ikke begynt engang! Hvor skal dette ende?

Kategorier: NDC, Testing / TDD.
RSS feed for kommentarene. Tilbaketråkk.

Skriv en kommentar

Tillatte tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Siste kommentarer

Torbjørn
PS: Takk til Børge Hansen, som delte SCARF-modellen med meg!...
Børge Hansen
Denne likte jeg veldig godt. Du skriver godt og har gode betraktninger  Keep it up – flere trenger å tørre å lære mer om ledelse – du l...
Tormod
Er egentlig ikke overrasket. F# sin fortè er programmererens produktivitet/kvalitet og anledning til parallell kjøring. Men kjøremotoren har ...
Stian
Ville også prøvd med et større problem (x100 eller x1000 f.eks). Når man snakker så små brøkdeler av et sekund som her så kan tiden for en ell...
Torbjørn
Har ikke sjekket - tar en titt i morgen hvis tid :)...
Einar W. Høst
Mhp tco: hva sier ILSpy?...
Torbjørn
Har ikke sett noe på PSeq før, men kjenner til den typen funksjoner fra blant annet Clojure. Og problemet med slike funksjoner i sammenhenger som de...
Håvard
Veldig bra sammenligning! Har du sett på ytelsen av PSeq.* fra powerpakken? Tipper den vil gi performancehit på små mengder, men kan kanskje resul...
Torbjørn
Jeg kom på en demonstrasjon-variant til jeg burde inkludere, nemlig bruk av list comprehension (en type computation expression (også kalt monads)). ...
Einar W. Høst
Interessant, det blir en trade-off mellom eleganse og fart på en måte. Den funksjonelle løsningen med vanlig filter er ren og pen, mens den imperat...
Creative Commons-lisens
Innholdet på denne bloggen er tilgjengelig under Creative Commons Navngivelse-Ikkekommersiell-DelPåSammeVilkår 3.0 Norge lisens.

Programmeringsbloggen
Kjempekjekt.com

© 2006-2013 Torbjørn Marø

Jeg har vært en profesjonell programmerer siden 1999, og dette er min blogg. Målet med bloggen er å stimulere meg selv og alle andre til kontinuerlig eksperimentering og læring.

Jeg forsøker å være allsidig, og programmerer blant annet i C#, Ruby, Erlang og Clojure.

Jeg praktiserer TDD og andre smidige utviklingspraksiser. Jeg er opptatt av kvalitet og ren kode.

Dette og ganske mye mer kan du lese om på denne bloggen!