Som utviklere lever vi under et konstant press for å levere, men hva gjør du for å sørge for å levere? Denne lyntalen vil inneholde noen enkle tips & triks for å øke din egen leveransehastighet.
Slides fra presentasjon for NNUG Trondheim 28.februar 2013.
13. Beskytt din Prime Time
Vit hva du skal gjøre
Kom raskt i gang
Automatiser det kjedelige
KJETIL.KLAUSSEN@GMAIL.COM | @KJETILKL | KJETILK.COM
18. If you really want to do
something, you’ll find a way;
if you don’t, you’ll find an excuse
- Frank Banks
KJETIL.KLAUSSEN@GMAIL.COM | @KJETILKL | KJETILK.COM
19. …and thanks for all the fish
kjetil.klaussen@gmail.com
@kjetilkl
kjetilk.com
KJETIL.KLAUSSEN@GMAIL.COM | @KJETILKL | KJETILK.COM
Editor's Notes
Jeg husker den første jobben jeg hadde som programmerer. Der hadde jeg en sjef som alltid spurte dette spørsmålet; Ferdig snart? Han visste ikke nødvendigs hva vi drev på med, men han spurte alltid det samme spørsmålet – flere ganger om dagen; Ferdig snart?Som utviklere sitter vi i en lukket, liten verden som få andre har noe innblikk i og det er ingen andre enn en selv som kan svare på dette spørsmålet. Så da er det også naturlig at man får dette spørsmåletDen enkleste måten å svare på er å faktisk bli ferdig snart. Og det jeg tenkte å ta for meg her i dag er noen triks som jeg har erfart og som fungerer for meg. Med andre ord; ingen garanti for de samme triksene vil hjelpe for deg.
Prime Time er den tida på jobb som du er mest effektiv og mest produktiv. Dette kan variere fra person til person, men for min del er det gjerne starten av dagen.
Jeg har et par småttiser som liker å stå opp ganske tidlig, hvilket betyr at jeg må stå opp ganske tidlig, og dermed er jeg gjerne på jobb ganske tidlig ettersom det er madammen som tar seg levering i barnehage for tiden.
Når jeg kommer på jobb er jeg derfor ofte alene i en times tid og det tar gjerne en halvtime til time før jeg blir forstyrret. Denne tida - når hjernen er fullt uthvilt og kaffen har begynt å virke – er min Prime Time. Da er jeg mest produktiv.Og denne tida prøver jeg å beskytte.
Mye av kommunikasjonen mellom meg og omverden er asynkron – både på jobb og privat; Epost, sms, twitter, lynmeldinger, etc.
Og asynkront betyr at du bestemmer når du skal svare. Man skal ikke forvente et svar med en gang dersom man sender epost eller sms. Hvis man trenger svar med en gang, bruker man synkrone metoder; ring eller skype.
Når du er på ditt mest produktive ønsker du ikke at asynkrone henvendelser skal få deg ut av sonen. Slå av alle notifikasjoner som kan få deg ut av denne modusen. Slå av epost- og twitter-notifikasjoner. Sett status til ‘opptatt’ på lynmeldingstjenesten du bruker. Slå av lyden på telefonen. Lukk deg inne. Har du f.eks. 2 eller 3 skjermer, kan du ha alt av epost, skype, twitter, osv på den sekundære skjermen. Når du virkelig trenger å konsentrere deg, slår du av denne skjermen. Når du bestemmer deg for å ta et avbrekk, slår du på igjen.Det viktige er at det er du som er sjefen over din egen tidsbruk. Sett heller av faste tidspunkter på dagen hvor du svarer på epost og sjekker twitter.
For å vite når man er ferdig, må man vite hva man skal gjøre. En enkel måte å gjøre det på er å sette opp en liste over ting du har tenkt å gjøre. Bryt oppgavene opp slik at de er små nok til å kunne gjøres i løpet av en dag.
Todo-lista mi er inndelt i 4 faser: I dag, i morgen, i overmorgen og en eller annen gang i fremtiden. Det 3 første kategoriene er ganske finkornet, dvs typisk 1-4 timers jobbing, mens fremtidige oppgaver er større og gjerne bare noen stikkord. Jeg starter dagen med å se over oppgavene jeg har planlagt for i dag og avslutter med å stryke ut alt jeg har gjort og flytter morgendagens oppgaver til i dag. I tillegg krysser jeg gjerne av underveis i løpet av dagen også. Det å sette en strek over noe og vite at man er ferdig, gir en god følelse.
For å komme raskt i gang om morgenen liker jeg å ha en feilende test som ligger og venter på meg. Når jeg kommer på jobb kjøres alle testene, hvis det dukker opp en rød test går jeg til den og da er jeg i gang med å kode i løpet av noen få minutter. Dermed er oppstartstiden min veldig kort; Den består i hovedsak i å vekke pc’en, starte visual studio, åpne solution, hente en kopp kaffe, og når jeg kommer tilbake har NCrunch kjørt test-suiten og vist meg hvor jeg skal starte opp.
Sentinel Software som jeg jobber hos har levert inn en søknad til Skattefunn. Blant annet ble det søkt om refusjon for en del jobb som ble gjort i 2012 hvilket for oss utviklere betød at alle timene vi hadde ført i Target Process måtte overføres til et regneark som skulle sendes med søknaden til Skattefunn. Høres ut som en morsom oppgave? Nei, ikke akkurat. Nå fikk jeg dratt ut alle timene jeg hadde ført i ei tekstfil med ei rad for hver timeføring. Men fortsatt var det ganske mye jobb som gjenstod for å få mappet opp alle timeføringene fra csv-fila til Excel-arket som skulle sendes inn. Så jeg satt der og klaget min nød til min kollega om hvor håpløst dette var og hvor lang tid jeg kom til å sitte å tjone med dette. Og da kommer det; «Dette er enkelt i perl». Dessverre kan ikke jeg Perl og ikke har jeg prioritert å lære meg noe annet script-språk heller, men heldigvis tok kollegaen min på seg jobben. Så i stedet for at jeg måtte sitte og bruke 2-3 dager på å få ført de fordømte timene for hånd, så brukte han 2-3 timer på å lage et perl script som tok inn csv-fila jeg hadde og spyttet ut timer på et format som gjorde at jeg kunne bare copy-paste inn i excel-arket. Så vi brukte da til sammen 4-5 timer på en jobb som jeg lett hadde kommet til å bruke 2-3 dager på alene. Og ikke bare det; timene for 4 andre måtte også inn i samme excel-arket. Så vi sparte da minst ei ukes dritkjedelig jobb på et en halvdag.Så clue’et her er å bruke automatisering for alt det er hvert. Husk at vi er utviklere! Det er dette vi skal kunne; Forvandle dritkjedelig, manuelle, repetitive oppgaver til et knappetrykk.
Og det finnes masse verktøy vi kan bruke. Av mer høy-nivå, makro verktøy på Windows-plattformen har vi for eksempel AutoIt og AutoHotKey. Her kan man scriptet museklikk, åpning av programmer, inntasting av tekst, copy/paste, osv.I visual studio har vi snippets to T4 templates. Eller hvis man har ReSharper har man tilsvarende som heter live og file templates. Alt dette er verktøy som kan autogenere masse kode eller kode-snutter som vi driver og gjentar og gjentar. Jeg antar at dere har hørt om DRY-prinsippet? Don’tRepeatYourself? Det er ment for koden i seg selv – ikke dupliser kode unødvendig – men det kan like gjerne gjelde for kodingen også. Og hvis man ikke har verktøy, så kan man gjøre som kollegaen min gjorde; lage dem selv. Jeg kunne nok sikkert gjort noe tilsvarende som det han gjorde i Perl i C# også, men script-språk som Perl, Ruby, PowerShell og Python er langt bedre egnet til slike typer oppgaver.
Så langt har jeg fortalt dere om det å beskytte prime time’en din, det å ha en enkel todo-liste, om det å komme raskt i gang på og om det å automatisere kjedelige oppgaver.Det siste tipset jeg har til dere er dette;
En dyktig programmerer vil alltid være mer effektiv og ha høyere leveransehastighet over tid enn en middelmådig programmerer.
Så hva gjør jeg for å bli bedre? Jeg bruker ganske mye tid på å lese hva andre og langt dyktigere programmerer har erfart før meg. Det finnes fantastisk mye bra faglitteratur i dag og disse bøkene er uendelig mye bedre enn de tørre, kjipe bøkene dere måtte lese på skolen. Her er noen av de bøkene jeg har lest og hvis dere går inn på ‘shelfari.com/kjetilk’ så kan dere se resten av dem samt hvilke bøker jeg har leser nå og hvilke jeg har tenkt å lese. Dersom dere har lest noen gode bøker vil jeg gjerne ha tips til dem, så lag gjerne en liste her dere også og send meg linken eller friend meg på shelfari.I tillegg leser jeg en del blogger og følger med på twitter, i tillegg til at jeg blogger og twitrer litt selv.
Men man trenger ikke å lese for å lære noe nytt og nyttig. Det finnes ganske mange gode, programmeringsrelaterte podcaster. Her er noen av dem og disse hører jeg gjerne på når jeg har dødtid hvor jeg ikke har hendene fri. Typisk når jeg sykler eller går til jobb, eller er ute og kjører, eller reiser. Eller når jeg trener. Det ser kanskje ikke sånn ut, men jeg faktisk begynt å trene – mest fordi jeg måtte på grunn en kranglete rygg – og da passer det ypperlig med en podcast på øre.
Eller en screencastslashcodecast. Ettersom jeg sitter på en romaskin så har jeg selvfølgelig satt opp en pc som jeg kan bruke til å både se screencasts og høre podcasts. For det meste går det i TekPub og Pluralsight for min del, men som dere ser så er det mye å velge i her også.
Men det viktige er å prioritere tid til egenlæring. Ikke sitt og håp på at arbeidsgiver skal legge alt til rette for deg og bruke arbeidstid på å lese bøker, ta kurs osv. Det kan godt hende dere er heldige og får mye kurs og tid til egenlæring i arbeidstiden også, men husk at det er ditt hodet og det er ditt ansvar å gjøre det bedre. Drit i TV’en, les ei bok!