Jag vet inte riktigt vad jag gjort för att förtjäna detta men just nu flyter allt på jobbet på extra bra. Idag när vi hade månadsmöte (det var egentligen något annat än ett månadsmöte men det får heta så här), så undrade Håkon (en överordnad) hur det var med Hasse (mig), varpå jag replikerade: —"utmärkt" och faktiskt menade det. Håkon märkte att jag menade allvar och misstänkte att jag nog hade haft sex med min fru kvällen innan. Det var ju inte så dumt gissat men ack så fel. Saken är bara att på sista tiden har jag gått till jobbet tagit mig an den uppgift som föreligger och gått hem utan att egentligen märka tiden.
Innan jag fortsätter skall jag bara påpeka att jag inte har några konkreta bevis för att jobbet flyter på bättre i meningen att jag får mer gjort eller att kvalitén ökat på det arbete jag utför. De senaste uppgifterna jag tagit mig för har visserligen gått något fortare än vad jag beräknat (vi försöker att tidsuppskatta alla arbetsuppgifter innan vi gör dom) men i praktiken kan detta lika gärna bero på att jag överskattat tiden när jag försökte uppskatta hur lång tid det skulle ta.
När jag sa att jag inte har någon aning om varför jag hamnat i nerdvana så är det en sanning med modifikation. Med risk för att låta som en k.b.t. entusiasten så måste medge att jag medvetet strävat efter att komma hit (undertecknad är vanligen sunt skeptisk till människor som tror att alla problem går att tänka bort med en positiv inställning).
Den största förändringen jag gjort är att jag slutat med att värdera mina arbetsuppgifter.
Skall försöka förklara vad jag menar med detta. Jag tror att de flesta av oss som håller på med programmering vanemässigt tycker att det är roligt med nyutveckling. Det här beror tillstor del på att vid nyutveckling har man inte upptäckt alla sätt som användaren vill använda programmet på.
Det här för med sig att koden blir relativt sett liten. Namn på entiteter (variabler och object) samt funktioner tenderar att vara begripliga. Ett exempel på detta skulle kunna vara en utskrift av till exempel kunder i ett kundregister. När programmeraren införde funktionen så döpte han entiteterna till saker som: printCustomer, CustomerDataCollector, CustomerDataSource, CustomerDataToHtmlConverter, CustomerPrintOut.css, etc.
Vid nästa månadsmöte säger hans chef att användarna är eld och lågor över din nya utskrift men nu vill dom även kunna skriva sina egna anställda på samma sätt. Nu börjar programmeraren skruva på sig. Chefen är ingen dumskalle utan han vet mycket väl att programeraren ärvt ner "class employee" direkt från "class Customer" så nu undrar han om det inte bara är att skriva en liten "if sats" som krävs för att kunna återanvända funktionen som skrevs förra veckan så att det även går att skriva ut anställda. Nu skruvar programeraren på sig ändå mera, antingen kan han försöka förklara för sin chef varför det inte bara är en "if sats" som behövs eller så får han acceptera att han har en massa metoder, object och variabler vars namn helt plötsligt inte ter sig alls lika självklara.
Kod som har överlevt ett antal månadsmöten kommer med hög sannolikhet att vara full av små "if satser".
Vid nyutveckling så tror jag (och många med mig) att den kod jag skriver just nu inte kommer att gå samma öde tillmötes, bländad av den klarhet och pregnans som präglar detta arbete, glömmer jag bort att alla de "if satser" som smutsade ner min gamla kod faktiskt finns där av en anledning.
Det är med andra ord sant att ny kod är lättare att begripa än gammal kod. Men betyder det att det är roligare att göra ny kod en gammal? Jag vill påstå att detta faktiskt till stor del är en inställningsfråga. Man mår bättre om man försöker se på gammal kod som man ser på en gammal moppe som man håller igång med gaffa-tejp, piratdelar, slangklämmor, hårnålar och mycket kärlek, än som på en gammall surdeg. Den kanske inte är skinande blank men den har tagit dig många mil och med lite omvårdnad kan hon ta dig många mil till. När någon del blivit lagad några gånger för mycket behöver lösningen inte vara en splitter ny moppe (betydligt dyrare än du tror) utan förmodligen räcker det med en skinande ny förgasare, ljuddämpare eller vad det nu är som saknas.
Sluta tro det bara är jag som drabbas av dessa sura limpdegar.
Om andras kod ser krånglig ut så beror det förmodligen på att deras kod överlevt ett antal månadsmöten och eller löser ett komplext problem.
Se på tidsestimeringen som just en tidsestimering och inte en deadline. Inget går fortare av att man kollar klockan hela tiden för att se om man kommer att hinna i tid. Om det tog betydligt längre/kortare tid än väntat kan man göra en bättre bedömning nästa gång och eventuellt förklara för berörda parter varför det tog längre/kortare tid än beräknat (det går inte att komma ifrån att tidsestimeringen oftast är nödvändig för att kunna prioritera). Det här liknar lite att missa tunnelbanan, går tåget 08:07 får man försöka vara på plats då men har du redan missat tåget så finns sällan någon annan lösning än att ta nästa tåg. När du väl konstaterat att du måste ta nästa tåg kommer du inte fram fortare för att du oroar dig för att du är försenad.
Skilj på ditt lösningsförslag och lösningen. Ofta när vi ska lösa ett specifikt problem diskuterar vi innan hur man bäst löser detta. Oftast har vi olika åsikter om hur det bör lösas (vilket rimligen är vår uppgift just då), då och då blir man sittande med den grannlaga uppgiften att implementera en lösning som man själv inte tyckte var den bästa (oftast är denna lösning mycket närmare ens egen än vad man tror). Nu kan man antingen sitta och svära i två veckor över att allt blev oändligt mycket krångligare än om man fått lösa uppgiften på sitt eget genial sätt (eftersom man faktiskt inte behöver genomföra den lösning man trodde på själv stöter man ju inte på de oförutsedda problem som ens egen lösning hade bjudit på) eller så låter man bli.
Om det visar sig att du faktiskt hade rätt (halleluja) så är det lätt att fastna i evigt "om jag bara fått göra som jag ville så skulle jag inte behöva göra det här nu" (extra jobbigt eftersom du nu stöter på de oväntade problemen med din egen lösning). Här gäller det att komma ihåg att även om inte behövt göra precis det här så är det högst otroligt att du hade haft två veckors semester istället.
Detta kan vara bra att tänka på hela tiden, att alla problem som kan lösas med en enkel "if sats" eller skinande ny kod plötsligt skulle ta slut och du dessutom får betalt för att rulla tummarna är högst otroligt.
Andas lugnt. Allt ordnar sig. Det är en bugg, inte jordens undergång (om du inte jobbar med avfyrningsmekanismen för interkontinentala atombomber). Ring en kompis. Stäng av TV'n.