Høy IQ-faktor i Oslo akkurat nå!


onsdag 6. juni 2012 NDC Testing Greg Young

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?


comments powered by Disqus