Når faglig interesse blir til en hel bok
Det er mange måter å dyrke faginteressen sin på. Christian valgte å skrive en bok.
Resultatet er Elm for React Developers, en fagbok om funksjonell programmering skrevet med React-utviklere i tankene.
Å skrive bok ved siden av jobb er én ting. Å velge å gi den ut selv er noe annet. Christian har stått for hele prosessen, fra de første tankene og strukturen til faglige diskusjoner, tilbakemeldinger og ferdig bok.
Vi tok en prat med ham om veien dit, hva som var vanskeligere enn forventet og hvorfor han mener flere utviklere bør få øynene opp for funksjonell programmering.
Hva var det som gjorde at du bestemte deg for å skrive boken?
Først og fremst ble boka født ut ifra min egen begeistring, blandet med frustrasjon over "hvorfor har ikke flere skjønt fordelene med funksjonell programmering"! Jeg har (som mange andre) vært borti tematikken flere ganger på ulike måter i løpet av karrieren, men har ofte stoppet meg selv før det har tatt skikkelig av; enten fordi jeg ikke har sett relevansen og bruksområdet, eller fordi terskelen for å virkelig "gripe det" har virket så høy. "Hva i alle dager er en monade, og hva angår det meg?" Så det er vel mest der: Jeg ønsket å skrive boka jeg gjerne skulle hatt tilgang på selv tidligere i karrieren, og jeg mente (og mener fortsatt!) bestemt at Elm var og er riktig verktøy for å komme i gang med "skikkelig" funksjonell programmering uten for mange sidespor og for mye styr. Og jeg mener videre at folk som er greit bevandret i React-universet faktisk har et bedre utgangspunkt enn de er klar over!
Jeg har et oppriktig ønske om en liten renessanse for funksjonell programmering, særlig i en tid der man bruker stadig mindre tid på håndverket og problemløsningen, og stadig mer på metodikk for å slippe å skrive kode (ikke minst AI...).
Hvordan gikk du frem da du skulle gjøre idéen om til en bok?
Jeg fant ganske raskt ut at jeg ville gjøre ting på min måte i eget tempo, så da landet jeg på self-published-sporet. Flere venner og bekjente har skrevet bøker, og jeg er ikke imponert over hva man faktisk får ut av samarbeidet med et forlag. Mye av royalties forsvinner underveis, og når det gjelder teknisk feedback stoler jeg uansett mer på Elm-miljøet enn på en redaktør uten kjennskap til feltet. Design og omslag er heller ikke noe stort problem når kona er grafisk designer! Etter at det var landet, brukte jeg ganske mye tid på outline og hovedpremiss. Å lande påstanden om at "Elm er den beste og mest effektive måten å lære ekte funksjonell programmering", samt å snevre inn den primære målgruppen til "React-utviklere" var viktig; etter det ble de mange små valgene som fulgte relativt ukompliserte. Da handlet det bare om å opprettholde framdrift, kontinuitet og kvalitet over tid. Ikke "bare, bare", det heller, ser jeg jo i ettertid!
Hva var den mest krevende delen av skriveprosessen?
Det er mer spennende å starte noe enn å avslutte, syns jeg! Så siste del av boka syns jeg var litt seig å få ferdig. Og så måtte jeg utøve alt jeg hadde og ikke hadde av tålmodighet for å ikke rushe kvalitetskontroll og siste finish. Uten forlag/redaktør er det jo jeg som bestemmer hva som er "godt nok", men det å vente på diverse feedback og innspill fra folk som leste boka (eller enkeltkapitler i boka) var en krevende øvelse. Noen kapitler og deler av boka delte jeg fortløpende på bloggen, det var jo mest av alt en veldig positiv opplevelse, men også det kunne være krevende. Jeg har jo visst fra starten av at målgruppen er begrenset, og at mange foretrekker paradigmet de allerede har i React ("anything goes" er jo lettvint og raskere enn å lære noe nytt, jeg forstår det). Men alt i alt også overraskende mye backing, ikke minst fra Khalil Stemmler, mannen bak Solidbook, som endte opp med å skrive forordet i boka. Hans støtte og input var en viktig og kjærkommen oppmuntring!
Var det noe som overrasket deg underveis?
Jeg hadde et par skisser til kapitler som aldri ble en del av boka, kapitler som forsøkte å sammenligne en React-implementasjon med en Elm-implementasjon. Det jeg fant ut, var at jeg skriver React også veldig annerledes enn jeg gjorde før jeg begynte å bruke Elm på fulltid, så alle de gode poengene om hvor mye renere en Elm-implementasjon er ble litt borte på grunn av det. Det understreker jo et hovedpoeng i boka, nemlig at det er verdt å lære seg å mestre funksjonell programmering enten du ender opp med å jobbe i et fullt funksjonelt språk eller ikke. Litt mengdetrening i FP-verdenen vil for evig og alltid forandre hva og hvordan du tenker på kode, problemløsning, tilstand, arkitektur osv.
Hvilken del av boken er du mest fornøyd med?
Vanskelig å si, men jeg har fått mye god feedback på struktur og disposisjon. Jeg tror pedagogikken og "dramaturgien" fungerer bra som en helhet, og at det er lett å følge læringskurven når man leser kapitlene i rekkefølge. Og så tror og håper jeg at jeg har truffet godt på skalaen enkel vs avansert. Det er selvsagt alltid mer å si om noe, og alltid mulig å forenkle enda mer. Men jeg opplever at den får formidlet det å "tenke funksjonelt" uten å ta for mange omveier eller snarveier. Elm gir jo mye gratis der, tross alt.
Hva håper du leserne sitter igjen med etter å ha lest boken?
Jeg håper leserne får lyst å lage noe eget i et funksjonelt språk, og at de tar med seg det de har lært inn i andre kontekster med mindre funksjonell tilbøyelighet. Mulighetene er jo mange! Hvem vet om ikke F# også får et oppsving, det er mange i .Net-økosystemet som sikkert kunne ha introdusert det i avgrensede deler av kodebasen. Det er definitivt også en spennende tid å være Elm-utvikler nå som det igjen begynner å komme nye versjoner, samt at Acadia (Elm for databaser) har kommet ut i public alpha.
Men uansett: Jeg håper leserne "skjønner greia", og ser verdien av dette, og kaldsvetter litt mindre neste gang noen spør om monader, funktorer eller andre skumle begreper man ofte forbinder med funksjonell programmering.
Nysgjerrig på boka?
Elm for React Developers er tilgjengelig som paperback og ebok.



