Man lever så länge man lär

Arkiv för kategorin ‘arbete’

Behåller jobbet med Jfokus i sikte

I år var första gången jag ansökte hos företaget om att få gå på Jfokus, vilket alltså innebär att de betalar avgiften och accepterar att jag deltar, med full lön och utan debitering av min tid till kund. Många sköna tusenlappar blir det nog.

Förra året, minns jag, var jag så övertygad om att jag skulle få nobben, att jag inte ens gjorde mig besväret att försöka. Ni vet hur det kan vara – det finns ett elektroniskt formulär att fylla i, som dock är utformat för externa utbildningar, d.v.s. kurser. Jag upplever de allra flesta formulär som svåra och jobbiga att fylla i och det här blir som att försöka knöla in en val i ett 20-litersakvarium. Det går inte att fylla i rätt, för jag saknar uppgifter till obligatoriska fält och det saknas fält för uppgifter som jag anser viktiga. Vilket gör att jag får fabulera och fantisera ihop något och … tja, det passar inte alls min person. Det blir mentalt jobbigt.

I år såg jag det mer som att det i alla fall var värt att prova, och att om jag skulle få nobben kanske det kunde få vara ett tydligt tecken på att det är dags att byta arbetsgivare. Allt jag gör är nämligen att dra in pengar – under mina dryga 13 år som anställd har jag varken gått på kurs eller konferens av eget val, och heller aldrig suttit på bänken (varit utan uppdrag). Sedan 2009 har jag dessutom suttit permanent ute hos kund och har inte ens en postlåda hos min arbetsgivare. De tillhandahåller dator och telefonabonnemang, samt vpn och applikationer för att registrera debiterbara resp. arbetade timmar. Ungefär så krävande är jag som anställd. De enda utgifter jag orsakat företaget på eget bevåg de senaste åren är 2 tentaresor och 2 inköp av kurslitteratur. Mina 50+ nya högskolepoäng inom datavetenskapen har jag annars skaffat helt och hållet på min fritid, under 2 års tid och vid sidan av det vanliga arbetet på heltid. Shit, vad jag måste vara bra!

Ja, i och för sig var vi några som gick på Gradle Groovy-seminarium för några år sedan, under en arbetsdag på promenadavstånd från kontoret, men jag tror faktiskt att det var kostnadsfritt vilket innebär att det företaget bidrog med var en dags utebliven debitering för var och en. Som ren kuriosa kan jag för övrigt berätta att den enda av oss som deltog och fortfarande jobbar kvar är… jag.

För dem av er som hört om varslet hos min arbetsgivare: jag är inte uppsagd och har heller inte fått något erbjudande om att sluta frivilligt mot ersättning. Jag ser det som att jag inte behöver fatta några omedelbara beslut kring min framtid och därför kan köra på som vanligt tills jag själv känner att det är dags. Gott så.

Och för att göra en lång historia något kortare: jag anmälde mig till Jfokus 2017 (med en tanke om att eventuellt betala själv om företaget satte sig på tvären), diskuterade saken med min chef (som ställde sig positiv), fyllde i formuläret efter bästa förmåga och skickade in ansökan. Därefter väntade jag några veckor och så plötsligt, en dag i slutet av november, var ansökan godkänd – jag kommer att vara med på Jfokus, i Stockholm den 7-8 februari 2017. Whee! See you there?

Semesterslut

Du kan välja att se det som att semestern slutar eller att arbetet börjar igen.

Själv önskar jag att jag kunde se den här övergången som enbart positiv, men så här i arla morgonstunden känns det bara… onödigt. Varför kan jag inte bara få fortsätta vara ledig och ha tid att ägna åt välmående, kultur och studier? Tid att sätta några av alla dessa planer i verket, att verkligen komma ikapp och till rätta med allt det där som ligger uppköat i min stackars hjärna. Tänk att få bli klar med saker, och känna att horisonten är öppen och att JAG HAR TID!

(nu är det bara den sista labben kvar innan jag är helt klar med kursen!)

Blygsam framgång, men 75% kursklar

Det går framåt, om än inte med några stormsteg precis. Av någon anledning går det nämligen åt mycket semestertid för att göra ingenting. Eller prokrastinera, om man så vill. Jag har sett en mängd tv-serieavsnitt och läst en pappersbok (antologin På denna grund) samt påbörjat en av dem jag fick med mig hem från förra årets Swecon, ConFuse 2015 – den känns oväntat lovande så här långt! Jag lär väl återkomma med någon reflektion när jag läst färdigt, tänker jag.

Sedan har jag också tränat nästan varje dag. Ingen avancerat, men ändå. Jag letade reda på ett sådant där sjuminutersprogram (med övningar för hela kroppen) som inte kräver någon direkt utrustning och därmed kan köras ungefär var som helst. Och när som helst. Vi kan ju säga som så att det krävs mycket lite ansträngning för att jag ska flåsa lungorna ur mig, och jag klarar inte av att göra alla övningarna fullt ut, men jag anpassar och försöker och gör så gott jag kan. Och det gör skillnad. Ryggen mår t.ex. i vissa avseenden mycket bättre. Återstår att se hur det går att passa in programmet i vardagen. Men senare…

Prokrastineringen till trots har jag i alla fall lyckats färdigställa och lämna in alla uppgifter rörande tredje delen av höstens kurs och sålunda återstår den sista fjärdedelen. Den borde jag absolut fixa på de två veckor som återstår av min semester. Eventuellt tar jag med datorn upp till norr och försöker bli klar där.

Förra veckan jobbade jag och det var inte roligt. Påminn mig gärna framöver om att inte offra mig och jobba för att någon måste göra det. Det var en mycket dålig idé att försöka vrida tillbaka hjärnan till jobb mitt i avslappnad semester.

Ja, det var väl det, det. Härmed återgår jag till tystnaden och börjar då med att kolla hur Windows 10-installationen på min gamla fönsterkärra fortskrider…

Semesterstart

Årets sommarsemester har börjat. Fast den blir i två omgångar – först tre och sedan två veckor, med jobbvecka mitt i. Tjänstgörande utvecklare saknades så mitt allra mest ansvarsfulla jag kastade sig på svärdet och erbjöd mig att arbeta. Jag tror inte att jobbet kommer att bli så betungande eftersom de flesta av våra användare liksom den absoluta majoriteten av mina kollegor lär semestra då.

Tänk, när de svettas på någon överbefolkad strand kan jag sitta ”ensam” på ett svalt kontor och arbeta ostört. Så mycket jag kommer att få gjort den veckan! Ja, jag citerar ordet ensam eftersom kollegan vid bordet bredvid också kommer att jobba då. Men jag antar att hen kommer att fokusera på sina egna uppgifter och lämna mig ifred. Och om inte… tja, då kanske vi bara får det trevligt i stället.

Semesterplaner då? Nja, inte många konkreta sådana i år heller – förutom att jag ska färdigställa höstens kurs och det i vanlig ordning blir en tripp norröver. Utöver det får vi se vad det blir. Jag orkar faktiskt inte tänka bortom kursen, för det är bara den och att hälsa på familjen som är prioriterat denna sommar. Allt utöver det är enligt min egen uppfattning att betrakta som ren och skär bonus.

Efter förra helgens kongress behövde jag naturligtvis skaffa fler böcker och det resulterade i en beställning från SF-bokhandeln (svenska böcker i döda träd-form) och utnyttjande av krediter hos Audible (engelskspråkiga ljudböcker).

De svenska böckerna är främst antologier, men också ett par romaner och en novellsamling. Skyddsrummet Luxgatan (novellsamling av Jerker Virdborg), Odinsbarn (Siri Pettersen) och 1007 (Johannes Pinter) – för vem kan motstå en beskrivning som den nedan (i kombo med tips från andra)? Inte jag i alla fall.

Du har just blivit biten och smittad av någon form av… virus. Du kan inte äta vanlig mat. Silver bränner mot din hud. Dagsljus är direkt dödligt.

Du bor i Gällivare. Ovanför polcirkeln. Samtidigt som du blev smittad så inträdde sommarsolståndet.

Nu är du fånge i din lilla lägenhet. Du kan inte jaga efter mat. Det frätande dagsljuset blir alltmer outhärdligt.

Det enda du behöver göra är att överleva en dag.

Problemet är att dagen är 1007 timmar lång…

De engelskspråkiga ljudböckerna är The Aeronaut’s Windlass (Jim Butcher), som läses av Euan Morton – en röst jag genast fastnade för – och ännu en antologi (delvis läst av samme Morton) med historier utvalda av Neil Gaiman och Al Sarrantonio. Antologin heter Stories: All-New Tales. Jag hoppas verkligen att det i sommar kommer att finnas tid och lust att läsa en bok eller två. Minst.

Refaktoriseringsjunkie

Dags att färdigställa det mer yrkesrelaterade av blogginläggen för dagen. Jag hade gärna gjort det tidigare, men hade trevliga, sociala aktiviteter inbokade. För en stund sedan kom jag hem och eftersom jag drack kaffe efter oplanerad söndagmiddag med vänner föreligger viss risk för att det blir svårt att somna.

Idag är det alltså Sveriges nationaldag och jag är först och främst ganska trött, behöver vila lite också. Om jag nu vet hur man gör. Sent igår kväll lämnade jag in den avslutande uppgiften för vårens högst prioriterade kurs (se studierapport i föregående inlägg) och håller så smått på att varva ned. Jag har kört rätt hårt på jobbet under våren vilket bl.a. bidragit till att studierna hamnat lite på undantag.

Om jobbet, ja. Jag kör som sagt hårt, inte ens alltid för att jag måste utan för att jag inte kan låta bli (hjälp, jag behöver avgiftning!), men innan någon ringer efter hjälp vill jag påpeka att parentesen var humoristisk. Läget är under kontroll och när det närmar sig för mycket ser jag till att få den återhämtning jag behöver.

Icke desto mindre är jag nog lite av en junkie när det gäller ordning och reda, data och programmering, och för det sistnämnda inte minst refaktorisering.

Det är få saker som är så tillfredsställande som att få städa upp i mossbelupen och mögelangripen gammal bortglömd och försummad kod så att den blir klar, tydlig, begriplig och lätt att uppdatera när ny eller ändrad funktionalitet ska in. Att t.ex. eliminera krångliga språkliga konstruktioner eller vända på villkor, i syfte att förenkla koden och därigenom öka förståelsen, liksom skala av lager efter lager av plack som samlats genom åren och vid mindre uppdateringar. Fantastiskt!

Jag blir ständigt överraskad och förundrad över hur effektivt det är just att vrida och vända och plocka isär och sedan återuppbygga programkod. Buggar gör sig plötsligt uppenbart påminda, död kod rullar ut över bordskanten eller bara blåser bort i en uppfriskande bris när jag jonglerar eller kastar upp alla delar i luften. Det som kommer ner igen är det som behövs, och det som får vara kvar. Typ.

Ett av mina favoritverktyg just nu är visualisering, eller mer specifikt: diagram. Normalt sett ritar jag diagram i huvudet för att hålla reda på och förstå flödet i koden och vad den gör, men vissa saker är för stora för att riktigt få plats eller så behöver jag kommunicera med andra och då kan det underlätta med diagram. I datorn, thank you very much – jag fixar inte att rita för hand på en whiteboard. Avundas lite grann dem som kan, om jag ska vara ärlig. Det är en bra förmåga som gör det enklare för olika människor att kommunicera och förstå varandra.

I min senaste refaktoriseringsuppgift ingick det att dokumentera flödet genom systemet via ett sekvensdiagram och det var ritandet av diagrammet (givetvis med tillhörande noggrann analys) som tog den allra största delen av tiden.

Jag gick grundligt till väga genom att först rita in vartenda litet metodanrop, både inom tjänsten och utåt mot andra tjänster, genom hela flödet och det var banne mig tur att jag jobbade hemifrån, för det resulterande diagrammet var gigantiskt! Min (dock är den inköpt av sambon, så rent tekniskt hans, men det är främst jag som använder den) 27-tumsskärm räckte inte långt, och på jobbet har jag bara två mindre skärmar på 21 eller 22 tum… det hade inte alls funkat särskilt bra.

Eftersom diagrammet blev så stort slog jag isär det och analyserade delarna av flödet var för sig och samtidigt lärde jag mig att man i PlantUML kan använda include-filer. Notera att jag ur ett utifrånperspektiv ritade diagram, medan jag i själva verket analyserade kodens funktion med hjälp av denna visualisering.

Analysen resulterade i en väldigt mycket bättre förståelse för vad som görs, samt ett ifrågasättande av en hel mängd olika anrop till angränsande tjänster.

Varför hämtas Objekt A i ett separat anrop när samma objekt faktiskt kommer in via hämtning av en bunt Objekt B, som alltid måste göras? Den koden försvann.

Och ja, detta är en designförändring som potentiellt kan ge ändrat beteende och därför har jag nogsamt tänkt igenom eventuella följder. Teoretiskt kan det bli fel, men jag kan inte se att det bör kunna bli det i praktiken. Famous last words…

Varför hämtas en bunt Objekt C för att eventuellt läggas in i bunten med Objekt B, när detta redan gjordes när Objekt B-bunten hämtades. Hela denna sista del av initialflödet visade sig alltså också vara överflödig. Även den koden försvann.

Ni ser vart vi är på väg, va? Flera delar av flödet är redan bortstädade och mitt diagram börjar bli hanterbart i storlek. Dags att titta närmare på den egentliga funktionaliteten i flödet, koden där det som ska göras också är det som görs.

Här flyttar jag omkring kodrader och ändrar villkor så att saker står för sig själva så mycket det går och bara det som verkligen hör ihop står tillsammans. Detta uppenbarar en struktur som gör flödet lättare att förstå, men det kan bli bättre.

Jag bryter ut den kod som förbereder och utför hämtningen av ett antal Objekt B till en egen, separat metod (som dessutom blir lätt att testa). Denna får heta just ”hämta Objekt B”. Det blir tydligt för läsaren att grunden är en bunt Objekt B.

På liknande sätt strukturerar jag om så att koden som gör det egentliga jobbet ligger i en klunga och kan brytas ut till en egen metod vid namn ”gör jobbet”. Detta tydliggör uppgiften (förutsatt att man bryter ut rätt saker!) och lämnar utrymme att fokusera på de förberedande åtgärder som måste vidtas innan.

Några kontroller som kan avbryta flödet flyttas upp för att undvika situationen att det vid ett avbrott utförts onödigt arbete. Det är en bra princip, det där att göra så lite så möjligt så sent som möjligt, och som en följd därav kanske inte behöva göra något alls. Prokrastinering som princip. Hm… det tål att tänkas på.

När jag tittade på sekvensdiagrammet undrade jag också varför det gjordes två anrop, direkt efter varandra, mot en viss tjänst. Kunde man inte lika gärna göra bara ett anrop och låta den anropade metoden utföra båda uppgifterna? Efter att ha undersökt hur de två metoderna i övrigt användes i systemet (svar: inte alls) slog jag ihop dem till en enda, givetvis med ett tydligt beskrivande namn.

Och där någonstans kunde jag inte hitta något mer att ta bort och ansåg mig därmed vara klar. Nu är koden luftigt lätt och ledig. Den doftar sommaräng!

Nästa fråga: var och när ska jag få min nästa fix? Jag längtar redan…

Studierapport hösten 2015

Ja, det har gått ovanligt länge sedan senaste inlägget. Främst beror det på min oförmåga att ta mig an studierna, lämna in uppgifterna i tid och få tid till annat. Min främsta sysselsättning under hösten (förutom onödigt mycket arbete) var prokrastinering, oftast i form av tv-serietittande. Pretty Little Liars, tror jag. Som jag upplever det var det helt enkelt sommarens ambitioner som tog knäcken på min studiekraft. Jag försökte läsa två halvtidskurser under sommarterminen, och kände mig därefter rejält sliten när det blev dags att ta sig an höstens kurser.

Under den långa ledigheten över jul och nyår, som för min del sträckte sig från 23 december till 10 januari, hade jag planerat att ta igen det jag under hösten skjutit framför mig. Det gick så där. Jag blev klar med JavaScript-kursen, med en hel veckas marginal, men det var också allt. Övriga kurser förblev ofärdiga.

Låt oss ta en liten genomgång av de kurser som på olika sätt är aktuella.

ST 2015: Förberedande kurs i matematik

Den här kursen kallas även Sommarmatte och jag blev faktiskt nästan klar med den, men så blev de sista två uppgifterna liggande och nu är kursen helt stängd. Jag tror att det finns chans att ta upp den igen vid en annan tidpunkt och det vill jag nog också göra. Matte är roligt, men den här kursen får vara tills vidare.

Att göra: inget just nu.

ST 2015: Programmeringsteknik

Den här kursen körde jag enligt plan större delen av sommaren, fick tag på en granskningspartner och sedan drog höstterminen igång – varken han eller jag ville prioritera denna kurs framför alla de nya kurserna. Det dröjde ända tills mitten av november innan vi båda lyckats hitta tid att utföra våra uppgifter, och efter det har jag varit alltför stressad för att ens kolla upp om/när/hur jag kan göra färdigt det sista – har alltså inte gjort ett skit mer på den kursen sedan i november. Nu i veckan har jag dock tagit tag i frågan och tack vare detta blivit omregistrerad på kursen för vårterminen, så det är bara för mig att köra på.

Att göra: justera (och lämna in) koden samt boka tid för redovisning öga mot öga (hu!). Det borde jag kunna fixa utan alltför mycket besvär, tycker jag.

HT 2015: Programmering med JavaScript, HTML och CSS

Denna kurs har jag som sagt lyckats avsluta, nästan helt enligt rekommenderad studieplan. Anledningen är förstås att det var den av kurserna jag prioriterade, för klarar jag inte det så får jag nog inte gå vidare med nästa kurs i paketet.

De två första uppgifterna blev klara och inlämnade i tid, men de två följande blev några dagar sena. Sedan gav jag mig den på att få ordning på disciplinen, vilket resulterade i en inlämning av den femte uppgiften kl. 04:20, några timmar sent. På den sjätte hade jag 4 minuters marginal och på den sista… flera dagar.

Att göra: njuta av mitt A (högsta möjliga betyg). Hurra, vad jag är bra!

HT 2015: Datavetenskaplig introduktionskurs

Här lyckades jag få ihop två inlämningsuppgifter (som gav positiva omdömen), men sedan kom jag liksom inte vidare – jag prioriterade ju JavaScript-kursen och orkade inte tillräckligt för att hinna fram till denna, som då alltså var andra prio på min lista. Dock har jag fått besked om att det bara är att fortsätta göra uppgifterna under vårterminen, så det här får bli min andra riktiga vårkurs.

Det finns också en möjlighet att begära omregistrering till nästa kurstillfälle, d.v.s. hösten, men då hamnar man sist i kön och det brukar visst inte bli några platser över, så det verkar rätt kört. Bara att köra på under våren, alltså. Jag vill/behöver ha den här kursen för behörighet till vidare studier inom området.

Att göra: tuffa på med kursen ungefär som om inget hade hänt.

HT 2015: Objektorienterad programmering i Java

Min ”no brainer”, som ska ge behörighet till mer utmanande kurser framöver. Här har jag inte lämnat in en enda uppgift, även om jag i alla fall skrivit ett helt program. Det fastnade på att jag inte kunde välja om jag skulle satsa på högt betyg (kräver en rapport om programmet) eller nöja mig med bara godkänt.

Min möjlighet att slutföra den kursen innebär att omregistrera mig och då får jag förmodligen nya uppgifter att utföra. Alternativen där är att göra det nu till våren eller vänta och omregistrera mig först till hösten. Det lutar åt hösten, för jag har ju visat rätt tydligt att jag inte orkar läsa tre kurser och samtidigt jobba full tid.

Att göra: avvakta tills vidare. Ta upp frågeställningen igen i höst.

Jag har tackat nej till alla kurser jag sökte och blev antagen till för vårterminen. Det jag ska läsa är tredje kursen i kurspaketet och utöver det vill jag bara bli klar med de kurser jag påbörjat. Summa summarum fokuserar jag på följande i vår:

En sak som roar mig lite är att JavaScript är något jag inte använt i tjänsten på ganska många år, men nu under hösten fick jag konkret användning för kursens kunskaper i mitt nuvarande kunduppdrag. Lite belöning för allt mitt slit, kanske.

Också roligt att Node.js (nästkommande lärdom) är så vanligt förekommande i den sortens cloud-tjänster jag fick bekanta mig med under torsdag och fredag.

Det känns som om mina studier faktiskt har en koppling till jobbet. Lyckträff?

To-fre: jag gick i sällskap av nästan 200 andra europeiska konsulter en av företaget arrangerad mingelutbildning i London. Eller rättare sagt: Stansted. Visste ni att det tar flera timmar att åka mellan Heathrow och Stansted?

Det blev långa, intensiva dagar med massor att göra på kort tid och inte ens fem minuter över någonstans. Jag blir vansinnigt trött och faktiskt i längden rätt tjurig av sådant. I need my precious downtime! Och sedan var folk så trevliga att jag fastnade i baren och drack Boddingtons i stället för att gå och lägga mig direkt efter middagen som jag hade planerat. Kom i säng först vid halv två och var igång igen klockan åtta. Kanske inte så konstigt att jag var seg i bollen.

Hem till hemmet i Stockholm kom jag inatt omkring halv ett och sov sedan i morse till halv elva – brukar annars alltid vakna vid sex eller sju. Det kommer nog att ta några dagar innan jag känner mig i fas igen. Sådant här borde jag egentligen inte utsätta mig för. I alla fall inte ofta. I’m too old for this shit.

Frustrerande uppstartsperiod

Jag har säkert bara förträngt hur det brukar vara att börja nytt uppdrag, men jag känner mig frustrerad och undrar hur lång tid det ska behöva ta att finna sig till rätta i den miljö jag ska jobba i. Och då menar jag inte så mycket den fysiska miljön som den programmeringstekniska. Jag är hyfsat obekant med mycket, som t.ex. applikationen och upplägget såväl som de tekniker som används.

Visst, jag har allmän kunskap när det gäller liknande tekniker, men saknar (för min bekvämlighet) alldeles för mycket detaljerad kunskap och erfarenhet av just dessa specifika. Och i utvecklingsteamet är det lite för ofta främst konsulter och nyanställda på plats, d.v.s. vi saknar någon som kan guida oss rätt i djungeln. Det blir lätt så att en blind leder andra blinda – inget vet riktigt vad som är rätt.

Man kan lugnt säga att det krävs en rejäl dos av tålamod från min sida – jag vill ju som vanligt kunna och behärska allt på en gång. Jag trivs verkligen inte med att vara någon som är osäker och behöver fråga om (känns det som) allt, jämt. Jag får bita ihop och dra några extra djupa andetag och sen bara köra vidare.

Och samtidigt vet jag ju ändå att det bara är i början det känns så här jobbigt. Det går över. Jag kommer att med tiden lära mig allt jag behöver kunna och hitta lämpliga sätt att förhålla mig till arbetet och mina med- och motarbetare.

Så här långt har jag bl.a. bekantat mig lite mer med SLF4J, JPA och Mockito.

Etikettmoln