FagdagFagdag med state management og Deep Work
Tirsdag 12. februar gikk årets første fagdag i gang på Skatten i Hagegata, og har du sett på makan, den var vellykket denne også. I tillegg var maten veldig god (#ikkespons #mentarimottilbud), så generelt så itVerkerne ut til å ha en strålende dag. Først ut på det faglige var en presentasjon om Javascript State Management av vår ultrafront-ender Hazar. Han påpekte at ved out-of-the-box-løsninger i front-end-verden er det mye direkte kommunikasjon mellom de forskjellige komponentene i løsningen din. Dette kan fungere helt fint dersom prosjektet ditt er lite, men dersom det begynner å vokse blir dette dårlig praksis. Ting spinner ut av kontroll, hvilken komponent skal denne dataen deles med, og hvilken komponent kom denne dataen fra.
Hva kan være løsningen på dette, spør du deg utvilsomt. State management! Å bruke state går mer eller mindre ut på å samle all denne dataen som skal kommuniseres på ett sted (kalt store), altså får vi en "single source of truth". Alle komponenter som skal kommunisere informasjon sender (dispatcher) den hit, og alle komponenter som skal motta informasjon kan lytte (subscribe) til hele eller deler av den. So smart.
På denne måten ser vi at state management gir flere fordeler, ved blandt annet å sikre at informasjonen til komponentene er til å stole på, ettersom datakilden er eneste sted informasjonen endres, og den derfor alltid vil være oppdatert. Det gjør det også lettere for utviklerne å jobbe sammen og introdusere nye personer til prosjektet, fordi alle vet hvor de skal sende og hente data. Dette endrer seg jo tross alt ikke! Da blir det ikke like krise når en hypotetisk Joar, som jobber alene med en komponent, har dratt på ferie uten mobil.
Vi fikk en flott demo av Hazar også, hvor han viste oss hvordan man kunne bruke state management i en enkel kontaktlisteapplikasjon, der vi legger til og/eller fjerner kontakter og state sørger for at oppdateringer skjer der det trengs. Orginalt hørte jeg rykter om at han skulle presentere en hitman-applikasjon hvor store dramatiske kryss over bildekort skulle dukke opp dersom du indikerte at du hadde "tatt hånd om" personen avbildet på dem. Stilig. Jeg kan forstå hvorfor dette ble sett som for aggressivt for en fagpresentasjon, men jeg vil nevne det fordi jeg setter pris på kreativitet.
Ikke bare fungerte applikasjonen som den skulle, men vi fikk se noen av de tilsynelatende mangfoldige plugins som du kan leke deg med dersom du tar i bruk state management-verktøy, eksemplifisert av Hazar gjennom NGXS. Det var en ganske stilig en som brukes til debugging. Visstnok kan den lage de beste grafene for å illustrere elementer ved applikasjonen din og greier.
Hazars take-aways: Kan appen din vokse? Bruk state management. Skal komponentene dine kommuniserer med hverandre? Bruk state management. Er appen din større en knøttliten? Bruk state management. Jeg legger til min egen: Er du opptatt av kule plugins, over middels begeistret for grafmuligheter, eller bare vil lage en dramatisk hitman-app? Bruk state management (og NGXS).
Nestemann ut på presentasjonslisten var Arild, med en presentasjon om Deep Work. Det hele begynner ganske teatralsk. Et spørsmål til publikum: "Hvor setter du deg når du skal konsentrere deg og jobbe med noe viktig?" Oooo, du bare vet dette kommer til å bli bra. "Bibloteket!", kommer det fra en. "Hjemme!", skyter en annen inn. Arild påpeker at et mønster i svarene ser ut til å være "ikke på jobb". Publikum nikker betenkt. For er ikke dette noe det er meningen at man skulle kunne jobbe med nettopp på jobb? Arild har lest en bok. "Deep Work" av Cal Newport. Den handler om Deep Work (nei, sier du det), som jeg velger å oversette til konsentrasjonsarbeid, og om hvordan man kan ha suksess og effektivitet i en verden full av distraksjoner og forstyrrelser.
Man har Deep Work, og man har motparten Shallow Work. For å illustrere konseptene blir to bilder av en fantastisk vakker kvinne, som tilfeldigvis også muligens er forfatter av dette innlegget, brukt. Det første, som skal illustrere Deep Work, viser meg, sittende inne på et lite privat kontor, med pulten (og derfor synslinje) rettet inn mot veggen, støydempende hodetelefoner, foran to store skjermer der vi ikke ser spor til noen andre åpne applikasjoner eller vinduer enn de som er relaterte til programmeringsarbeidet jeg jobber så (angivelig) iherdig med. Ikke noe Outlook. Ikke noe Slack. Mobilen på lydløs og pakket ned i bagen. Her ser man tydelig at jeg har tatt ansvar selv og passet på så godt jeg kan at jeg ikke kommer til å bli distrahert eller forstyrret. Slik får man gjort arbeid effektivt. Slik får man konsentrert seg og sluppet unna å måtte konstant innstille hodet på andre ting enn arbeidsoppgaven, fordi man på denne måten unngår å se mail om andre saker tikke inn, og kollegaer som stiller deg en haug med spørsmål. Arild og jeg jobber hos samme kunde. Rimelig sikker på at han referer til meg. Rude.
I det andre bildet sitter jeg derimot i åpent kontorlandskap på laptopen, mobilen ligger ved siden av på bordet og jeg er midt i en samtale med en kollega. I slike omstendigheter kan du få unnagjort Shallow Work: svare på henvendelser, gjøre litt analyse rundt egne oppgaver, den type ting. Her er det liten sjanse for konsentrasjon.
Det er et poeng at man som utvikler kunne trengt mer tid til Deep Work. Ikke bare er det liten mulighet til dette fordi hverdagen hele tiden byr på forstyrrelser, men også fordi vi generelt har innfunnet oss med det, til og med oppmuntret det. Vi gamer hjernen (som er en klassisk Arild-ting å si) til konstant å være mottakelige for distraksjoner. Man ser mail tikke inn ved at det piper på mobilen, eller dukker opp en varsel på PC-skjermen, sjekker snapchat, går inn på VG, får en facebook-melding. Konstant input, og vi er avhengige av det. OMG han har rett, dere. Samfunnskritiske greier dette her, men Arild tøyler det inn i fokus igjen. Han bestemte seg for å finne ut om han kunne skape forhold for Deep Work for seg selv, selv i denne hverdagen der man ikke bare blir forstyrret hele tiden (igjen, Arild, ouch), men hvor det også forventes at du skal svare og være tilgjengelig. Han fant bortgjemte steder å jobbe på, skrudde på støydempende hodetelefoner, og skrudde av alle varslinger på telefon og PC fra slack, mail og andre forstyrrende elementer. Konsekvensene? Ikke bare fikk han mulighet og tid til Deep Work når han trengte det, men folk rundt ham (ikke meg) tilpasset seg ham. De sluttet å forvente at han skulle være tilgjengelig hele tiden, og til alles overraskelse så gikk verden videre likevel.
Men hvis alle gjør dette, da fungerer jo ingenting. Man må jo være tilgjengelige og snakke sammen, dele sin kunnskap og skaffe ny. Gode løsninger krever tross alt samarbeid! Ja, sier Arild, men dersom alle hadde innstilt seg på Deep Work som utgangspunkt og heller tatt pauser fra dette med Shallow Work, så kunne det kanskje tvunget alle til å planlegge bedre. Tenke mer over om dette møtet faktisk er nødvendig, eller om dette spørsmålet er noe en kan finne løsningen på selv (Arild, serr, jeg tar poenget). Egentlig må jeg si jeg fikk en veldig "logg på livet"-vibe av denne presentasjonen, med en liten tvist om at man burde kunne "logge på arbeid" også.
Presentasjonen rundes av med at dersom du skal kunne praktisere Deep Work, må du også kunne stille deg inn på Deep Relaxation. Å jobbe konsentrert og tidvis isolert kan ta mye energi, og for å kunne opprettholde denne typen arbeid, må du sette klare grenser når du har fri. Ikke svar på jobbmail eller sjekk på slack om noen har ikke-brennende spørsmål. Jobb er jobb og fri er fri. Vakkert. Presentasjonen ble fulgt opp med den kanskje lengste runden med spørsmål og diskusjon i publikum vi har hatt etter et faginnlegg, så det var tydelig at folk fattet interesse. I alle fall for Deep Relaxation.
God helg!