fredag 2. januar 2009 .net ninja
En viktig del av planen min for å bli en ekte .net ninja er å lage en god strategi for hva jeg skal lære meg og bruke tid på. God planlegging er halve jobben sier man - la oss håpe det.
Så nå har jeg skriblet ned alle de ulike tingene jeg har lyst til å se på fremover, og forsøkt å prioritere dem. Dette er en liste med teknologier og ting som konkret dreier seg om programmering (i motsetning til life-hacks, teknikker får gjennomføring av prosjekter o.l.). Her er min første "ønskeliste" for 2009.
Førsteprioriteten styres mest av Contiki Center-prosjektet jeg har satt igang på jobben. Her bruker jeg WPF, og jeg vil bruke litt tid på å lære meg best practises rundt presentasjonslogikk for WPF (og Silverlight). Her har jeg mye og hente, samtidig som det at jeg faktisk har et reelt prosjekt gjør det litt enklere å komme igang.
I tillegg har jeg gått rundt og tenkt på å bruke nHibernate en stund. Jeg har lest endel, men enda ikke skrevet en linje kode. Generelt føler jeg at jeg ligger minst fem år etter utviklingen i bruk av ORM, og er nødt til å gjøre noe med dette. Jeg tenker at jeg kan kombinere også dette sammen med Contiki Center. Og så vil jeg bruke SQLite - det er ikke et veldig viktig punkt, men noe jeg har lyst til, og det bør fungere fint med nHibernate, så da er det jo greit.
PS: Her er en samling med nHibernate video-leksjoner jeg skal sjekke ut.
Jeg har også laget meg en liste med sesjoner fra PDC som jeg har lyst til å se. Her er det mye bra om hva som kommer i VSTS 2010, TFS 2010 og .net 4.0, men også om "Oslo", programmeringsspråkenes fremtid, Live Services og Azure, ASP.NET og mye mer. Disse sesjonene går noe mer i dybden enn de fleste podcastene jeg hører på til daglig, og vil hjelpe til å holde inspirasjonen oppe og tankene i gang.
Prioritet 2 inneholder mye gøy. Her er det stort sett snakk om å jobbe videre med ting som ikke er totalt ukjente. Test-Driven Development har jeg forsøkt meg på flere ganger, men behøver å gå litt mere seriøst til verks. Jeg har også lyst til å bli kjent med RhinoMocks - selvsagt som et vektøy til å hjelpe meg å skrive enhetstester, men også som et hjelpemiddel under utvikling; mocke ting underveis for å få løsninger rask opp å gå, uten å måtte implementere alle servicer etc.
Domain-Driven Development har jeg lest endel om og forsøkt litt - nå vil jeg praktisere det mer slik at jeg blir komfortabel med det.
Det eneste jeg føler meg helt grønn på i denne listen er faktisk lamda-utrykk. Jeg klarer de helt enkle tingene, men aner ingen ting om hva som er den store styrken, og hvordan jeg kan utnytte denne.
Når jeg oppnår de tingene som står på 2. prioritetslisten skal jeg være veldig fornøyd - da synes jeg at jeg har tatt et langt steg videre.
I kategori 3 ligger det et par teknologier som begynner å bli godt voksne, uten at jeg har rukket å sett orntlig på dem. Det er over to år siden jeg fikk presentert .net 3.0 på MSDN Live, og siden den gang har det klødd i fingrene etter å få tatt dette i bruk - men ingen ting har skjedd.
jQuery og CSLA.NET er et par konkrete teknologier jeg også har lyst til å se nærmere på. jQuery er noe jeg garantert kommer til å benytte fremover, mens CSLA.NET er noe jeg vil sjekke ut (etter at jeg er komfortabel med DDD) for å se om det vil gjøre meg mer effektiv som utvikler.
Til slutt har jeg fått skikkelig sansen for meldingsarkitektur (etter å ha hørt på Pat Helland på TeckEd 2007, Anders Norås på MSDN Live og John St. Clair på NNUG i Bergen), og har lyst til å eksperimentere med det.
Den siste kategorien - backburners - inneholder ting som (1) ikke er så velig viktige og (2) krever mye innsats, men som (3) jeg har veldig lyst til å gjøre. Jeg tror jeg kan lære mye av å sette meg inn i Enterprise Library, selv om Microsofts måte å gjøre ting på ikke alltid er den beste.
Jeg har også veldig lyst til å lære meg noen nye språk, og selv om jeg nettopp konkluderte med at jeg må la det vente, så har jeg faktisk lastet ned DLR'en og så smått begynt å friske opp gamle Ruby-kunnskaper. Kanskje dukker det opp et problem som best lar seg løse med IronRuby, og da ser jeg ingen grunn til å la være.
(Det er ikke helt u-typisk meg å begynne i feil ende av en prioritert liste)
Live Framework / Live Services er også en nisje som jeg kunne tenke meg å se nærmere på. Jeg vet ikke hvilken nytte det vil ha, men jeg har nå tenkt såpass mye på det at det har havnet på backloggen min.
Hva skjer videre?
Så nå er lista på plass og prioritert. Det var utrolig deilig bare det å få dumput ut disse tankene. Men nå har jeg altså også en plan for hvor jeg vil hen, og så får vi se hvor fort jeg kan klare å komme dit.
Jeg er derimot helt åpen for at mine prioriteringer kan (og helt sikkert vil) endre seg, og derfor vil jeg også oppdatere listen (overskriften antyder hvert kvartal).
Har du noen bemerkninger til listen jeg har kommet opp med er jeg veldig interessert i å høre fra deg. For ambisiøs? Eller helt banal? Ting som bør inn, eller som bør gå ut? Er ikke dette måten å gjøre det på kanskje?