Pakk sekken med ting du trenger for turen

Don’t let yourself get attached to anything you are not willing to walk out on in 30 seconds flat if you feel the heat around the corner

Neil McCauley – from the movie Heat

Sitatet er fra nittitalls filmen Heat med blant andre Pacino og DeNiro, ikke nødvendigvis den beste filmen men sitatet er bra. En skal være forsiktig med metaforer, men jeg mener dette sitatet er noe du bør ha bakhodet når du jobber som programmerer (og trolig også andre roller, men jeg kan bare med sikkerhet snakke om programmerere).

Veldig mange selskaper er veldig gode på å skape gode sosiale- og faglige relasjoner blant sine ansatte. De har lagt til rette for at du får disse behovene dekket der. Det er ikke med onde hensikter nødvendigvis, men for å skape ansatte som trives og vokse sammen med det formål å gjøre best mulig jobb. Selskaper investerer mye penger i på rekruttere riktig folk og de gjør også sitt beste for at de fleste skal bli værende.

Det er ikke noe galt i dette og at selskaper forsøker skape bra miljøer er en god ting. Det er spesielt nyttig tidlig i karrieren. Disse arenaene er gode steder å trene seg på å diskutere, presentere eller på andre måter interagere med likesinnede om faglige tema. Poenget er å forstå hvordan disse skal brukes slik at de hjelper deg vokse videre.

Vær våkne og beviste

Et godt råd som lønnsmottager er å alltid være bevist rundt hva du investerer din tid i og hva det er du eventuelt får ut av det. Det er ikke nødvendigvis snakk om karriere, penger eller lignende. Å få en god følelse eller å ha bidratt til et fellesskap er også verdifulle ting å få ut av en jobb. Uansett hva du velger å bruke din verdifulle tid på, sørg for at den brukes på noe som gir deg noe. Ikke fortell deg selv at du skylder et selskap som betaler deg for å gjøre en jobb for dem noe som helst. Vær bevist og om nødvendig kynisk i alt du gjør slik at du kommer godt ut av det.

Det betyr ikke at du skal være et dårlig menneske og behandle de rundt deg dårlig. Hva jeg mener er at du ikke skal tillegge et selskap egenskaper som andre mennesker har. Et selskap har ingen følelser, lojalitet eller annet til deg. Du er en ressurs som kreves for å gjøre en jobb som igjen er for å nå ett eller annet mål.

Invester i det du kan ta med deg

I context av det å være programmerer så er det noen konkrete ting som er lurt å ha i mente. Invester tid i ting som du på ett eller annet vis kan ta med deg videre (fordi du kommer til å forlate stedet du jobber nå, tro meg).

Hvis du skal holde en presentasjon på en fagdag for selskapet ditt, sørg for at du på ett eller annet vis kan gjøre den tilgjengelig utenfor selskapet. Det vil si at du i utformingen alltid bør ha i bakhodet at budskapet må kunne deles. Hvis det er for mange sensitive ting, så kan du ofte ikke dele det. Er det konkrete erfaringer, forsøk å pakke de på en måte som gjør at det ikke hindrer deg i å spre det.

Åpen kildekode er en mulighet for deg som lønnsmottager til å kunne gjøre nytte for deg i jobben, samtidig som du har noe verdifullt å ta med deg videre i karrieren.

Ikke begrens deg

Veldig mange teknologiselskaper har i dag en eller annen chat løsning som fungerer som faglig- og sosialt lim. Det er effektivt og på mange måter nyttig, men det er viktig å ikke begrense seg i den faglige omgangskretsen (fordi husk på, du vil slutte i jobben du er i nå).

Finn deg arenaer å delta på som ikke er knyttet til ditt arbeidssted. Det finnes både fysiske arenaer som Meetups, konferanser, frokostseminarer, etc. Du kan etablere deg som en autoritet på Stack Overflow innen et emne. Hvis det er spesielle teknologier eller emner du føler er spennende har veldig mange av disse ofte en åpen chat du kan bli med i. Hvis du benytter et åpent kildekode prosjekt mye i jobben din, så er det ofte at disse har arenaer hvor du kan bli del av et større faglig miljø. Det finnes veldig mange måter å knytte faglige relasjoner på i vår tidsalder, ikke la deg begrense til selskapets egne løsninger.

Å forlate en jobb handler ofte om å bryte med noe kjent og trygt, jo mer du har av et faglig- og sosial nettverk som er knyttet til deg selv og ikke jobben jo friere står du til å ta det beste valget for deg.

Moralen er å ikke la deg begrense i hvordan du bygger ditt faglige nettverk, bygg noe som er ditt og som du tar med deg uansett hvor du går.

“Slipp fangene fri det er vår”

Photo by Jed Villejo on Unsplash

Overskriften er også film relatert og referer til filmen med sammen navn. Hittil i min karriere har jeg byttet jobb relativt ofte i følge den norske normen. I løpet av disse byttene har jeg sett altfor mange som bare blir igjen. Enkelte ganger blir folk værende ut av en følelse av at de skylder et selskap eller mennesker i et selskap noe. Andre ganger kan det være fordi det å bytte jobb virker skremmende. Hvis man kommer opp i en viss alder, som meg selv, så er det også en viss frykt at man har blitt for gammel til å bli ansatte noe som helst sted.

Guttene i Kortslutning har en veldig bra episode om dette temaet. De forteller modige sine følelser knyttet til å det å bytte jobb for første gang i episoden Det å bytte jobb. Det kan være skummelt første gang og det å bytte jobb er ikke alltid. Likevel så er det stort sett ikke så skummelt som du en tror.

Ta ansvar, ta sjansen!

Mennesker som jobber med teknologi i 2019 her i Oslo har absolutt ingenting å frykte ved å bytte jobb. Jeg er sikker på at om du stiller deg opp på Oslo S med en plakat og CV i hånda så har du jobb i løpet av morgenrushet. Det er og har vært siden tidlig 2000-tallet en brennhett jobbmarked, så hvorfor i alle dager skal man bli værende om man ikke føler man får noe ut av det?

Lærer du ikke noe eller føler du utvikler deg noe som menneske? Da er det bare å begynne finne seg et nytt sted. Du vil ikke angre, selv de gangene den nye jobben viser seg å være feil. Da vet du, om ikke annet, mer om hva du ikke liker til neste gang du bytter jobb.

Photo by Colton Duke on Unsplash

Hva er fag om det ikke omhandler mer enn 0 og 1?

Jeg har engasjert meg i et tema som for meg er veldig personlig, nemlig anti-rasisme. Helt konkret handler det om å få konferansen Make Data Smart Again til å endre navn. Det begynte med en tweet og et blog innlegg for deretter å blir flere tweets / e-poster og endte med en pressemelding fra arrangøren Den Norske Dataforening (DND). Denne artikkelen er et svar på pressemeldingen om denne saken.

Vi er og var klar over at navnet kan gi assosiasjoner til et mer kontroversielt uttrykk, men vi har alltid følt at navnevalget vårt «Make Data Smart Again» var et ironisk spark mot ignoranse og intoleranse.

https://www.dataforeningen.no/vi-onsker-kun-fokus-pa-fag/

En litt pussig uttalelse som såvidt jeg kan bedømme sier at de visste godt hva de gjorde, men de valgte å prioritere et billig poeng fremfor å tenke på assosiasjonene navnet ga. Etter en slik uttalelse er det underlig å litt lengre ned lese.

Jeg er åpen for at det som for meg oppleves som uskyldig harselas og muligens en smule overdrevet kreativitet av andre kan oppleves støtende. Vi så ikke dette komme, men vil ta denne type reaksjonene på alvor.

https://www.dataforeningen.no/vi-onsker-kun-fokus-pa-fag/

Etter å ha først sagt “vi visste hva vi gjorde” så går man her rett i ansvarsfraskrivelsesmodus ved å si “kan oppleves støtende”. Målet mitt er ikke å henge ut en organisasjon som mange er medlem av, det klarer de fint selv. Det jeg vil er at norsk IT bransje har null toleranse for en hver form for lefling med rasisme. Derfor valgte jeg å ta denne kampen mot en organisasjon med betydelig makt over individer og selskaper i bransjen.

Det er utrolig trist at de takket derimot nei til muligheten til å sette etikk og anti-rasisme på agendaen i den norske IT bransjen. Vi ønsker alle å ha fokus på fag i bransjen, men det er åpenbart at vi har en ulik oppfatning av hva fag er for oss som på en eller annen måte utvikler IT systemer.

Så hva er faget om ikke dette?

Make Data Smart Again er en konferanse som blant annet handler om data og smartness. Hvis det er to fagfelt hvor faget definitivt også handler om å se utenfor sin egen sfære så er det disse to. I programmet er det såvidt jeg kan se rundt 3-4 talks som direkte omhandler dette (her kan jeg selvsagt ta feil og det er langt flere, masse kred til de som setter det på agendaen) og det er veldig bra at temaet er nevnt.

Det er nemlig ikke en konstruert problemstilling at datainnsamling og kunstig intelligens (AI) har utfordringer med tanke på etikk og forutinntatthet i data som samles inn. Det er flere eksempler på hvordan algoritmer som trenes på dårlige data i homogene miljøer slår veldig uheldig ut.
Google’s bildegjenkjenning algoritme er en av de store først kjente skandalene. Til tross for å ha blitt trent på enorme mengder bilder og med et system utviklet med noen av de smarteste hodene‚ klarte de ikke å unngå at systemet oppførte seg uheldig fordi de tenkte ikke at det gikk an.

Hvis du vil vite mer kan du lese VOX har oppsummert hvordan AI systemer kan bli rasistiske i en veldig bra artikkel som bringer opp interessante problemstillinger. Hvis du ønsker å lære mer om hvordan innsamlingen av data påvirker såkalte smarte systemer så hør på podcasten “How will AI change your life? AI Now Institute founders Kate Crawford and Meredith Whittaker explain” hvor mer kunnskapsrike mennesker forklarer viktigheten av fokus på etikk rundt innsamling av data for bruke i smarte systemer. (Her Twitter-tråden dette segmentet er basert på)

faget i denne sammenheng burde definitivt også romme etikk og det å se på hvordan skal vi klare å skape en fremtid hvor teknologien ikke arver eksisterende forutinntattheten.

Er det så viktig da?

Konsekvensene av manglende fokus på etikk har veldig alvorlige konsekvenser. Vi har sett Facebook være med på å gjøre mulig folkemord i Myanmar. Whats App har vært med å spre falske nyheter og vold fordi de har undervurdert konsekvensene av effekten det der har laget har på omgivelsene. Så ja, det er definitivt viktig at vår bransje tenker utover oss selv og ser på hvordan tingene vi lager påvirker verden rundt oss.

En mulighet som glapp

Jeg skulle ønske DND så dette som en anledningen til å sette etikk på dagsorden når muligheten først bød seg i form av reaksjoner på navnet. I stedet for å gå i forsvarsposisjon og fullstendig fraskrive seg alt ansvar kunne de valgt å se på dette som en gylden mulighet til å få noe viktig på agendaen. De valgte noe annet og det er kjipt for dem, alle medlemmer og frivillige.

Foreningene i DND gjør veldig mye bra jobb for mange og de frivillige legger ned timer av egen fritid på å gjøre ting i deres regi. De fortjener bedre enn dette. Slik jeg ser det er de blitt dyttet i front av dette fordi organisasjonen de hjelper syntes det var ubeleilig og ubehagelig at dette temaet kom opp.

NB! Artikkelen er blitt oppdatert med en link til åpen kilde og små endringer i introduksjonen.

Den Norske Dataforening sitt manglende gangsyn

NB! Jeg har ikke noe ønske om å sverte DND eller de som legger ned masse arbeid i å skape denne konferansen. Det jeg vil er at bransjen jeg er en del av skal være for alle og hvor alle føler seg trygge til å kunne bidra på den måten de ønsker. Hvor å tøyse med ting som rasisme ikke på noen måte er greit.

I år arrangerer Den Norske Dataforening (DND) konferansen Make Data Smart Again for andre år på rad.  Jeg reagerte instinktivt på navnet med en gang jeg så det i min twitter feed første gang i 2018. Det var et forsøk på å være morsom / ironisk med slagordet Make America Great Again (MAGA). Problemet med dette slagordet er hva det representerer (mer om det lengre ned) og at det er ladet med negative verdier. Den gangen gjorde jeg ikke noe mye mer med det, og konferansen gikk sin gang. 

I år igjen dukket navnet opp igjen og jeg hadde samme reaksjon. Denne gangen var det flere som reagerte og jeg tenkte i år må de faktisk gjøre noe. Siden første gang det var brukt har MAGA blitt et enda mer potent slagord for høyreekstreme verden over. Det brukes for å ufarliggjøre spredningen av høyreekstreme verdier og brukes aktivt til å provosere i alle tenkelige anledninger. Slagordet brukes av Alliansen og deres “holocausttvilende” leder som en måte å spre deres ideologi, et parti som aktivt forsøker å rekruttere ungdom i årets kommunevalg.  Jeg er ingen politisk analytiker og heldigvis har andre skrevet mye om hvorfor MAGA er et rasistisk slagord. Les denne tråden så kan du lese mer om dette.

Hvordan kan DND forsvare at de tuller med et slagord som er rasistisk? 

Rasisme og fremmedhat er ikke noe du skal tulle med, fordi for mange mennesker er det alvor. Det er å bli fysisk truet, sjikanert, diskriminert, osv. Dette burde komiteen som besluttet dette navnet tenkt på da navnet kom opp. Tilsvarende burde DND erkjenne problemet og umiddelbart endre navnet og beklage. Uavhengig av hvilke praktiske konsekvenser det måtte ha. Hvis de mener alvor med at de er for alle, så ville de gjort det uten å blunke.

Men du kunne jo forsøkt bidra?

DND har blitt gjort oppmerksom på at dette ikke er humor verdig en organisasjon som skal være for alle. De har fått tid til å se på det og har blitt gitt bakgrunnsinformasjon om hvorfor navnet er problematisk. Svaret fra DND er dette:

«Jeg har ikke myndighet til å endre navnet, da vi er en demokratisk organisasjon og ironisk bruk av et navn ikke er noe jeg kan endre uten at det oppfattes som maktmisbruk ovenfor frivillige.

Spesielt så nære datoen for konferansen blir det vanskelig å ta et så dramatisk grep som å endre navnet. Vi har imidlertid kontaktet alle våre partnere rundt navnet før påske, og av de som har svart er det ingen som har oppfattet navnet som et problem. Jeg har lest artiklene dere sendte og skjønner at enkelte finner navnet støtende, og retningslinjer for hvordan vi kan unngå dette er noe vi skal revidere før neste år»

Jeg siterer ikke med formål å henge ut noen enkeltpersoner, men for å vise argumentasjonen som gjør at ting aldri blir bedre dersom vi ikke tvinger frem endring.

Derfor engasjerer jeg meg, fordi jeg vil ha en bransje der alle skal føle seg velkomne og trygge til å kunne bidra. Hvis organisasjoner som påberoper seg å skulle favne alle ikke evner å se at de har fullstendig bæsjet nedover begge beina, så er det opp til oss å skape trykk som tvinger frem endring.

Hva bør DU gjøre?

Jobber du i ett av selskapene som er sponsor av konferansen så har du muligheten til å si fra at du ikke synes dette er greit og at ditt selskap bør si fra.

Skal du snakke på konferansen, så kan du si fra at du ikke er komfortabel med navnet. Selv om du kanskje føler at du har forpliktet deg til å støtte dem, betyr ikke det at du kan si fra.

Skal du delta på konferansen, så kan du også sende en epost til DND eller legge ut en melding på sosiale medier om at du synes de bør endre navnet umiddelbart.

Hvorfor skal du engasjere det?

Hvis ikke du, hvem da? Hvis ikke nå, når da? Uten at noen tvinger frem endring så skjer lite, bli med å gjør en forskjell.

Opprinnelig publisert her https://rebellingrambles.tumblr.com/post/184432851058/den-norske-dataforening-sitt-manglende-gangsyn

3 ting du som mann kan gjøre for å bedre mangfold

Mange ganger ser du det i diskusjoner på nettet når det handler om dette med å få til mangfold: “hva kan en person gjøre?”. Jeg har noen tips som du risikerer ingenting ved å gjennomføre dem.

Ikke jobb på steder uten mangfold

Først vil jeg bare si: dette er om du har muligheten. Noen ganger må man tjene til livets opphold, det har jeg full respekt for og det finnes tilfeller hvor man ikke kan velge. Dersom du er i en posisjon hvor du kan søke flere steder, velg vekk de som ikke har mangfold i ansatte i alle deler av selskapet. Det er ikke nok å kun ha mangfold innenfor støttefunksjoner.
Du kan velge å ikke jobbe der og det vil være en positiv ting!

Ikke snakk på konferanser uten mangfold

Dette er veldig lett å få til og alt du må gjøre er å gjøre et søk på nettet for å finne ut hvordan utvalget av foredragsholdere har vært tidligere. Hvis du blir spurt om å snakke på slike konferanser, gi tilbakemelding om at du ikke vil snakke pga dette. Det er noe som gir direkte tilbakemelding som er vanskelig å ignorere. Hvis alle til slutt har de samme kravene, så vil ikke de som arrangerer lengre kunne ignorere det og ta det på alvor.

Si til head huntere at du ikke vil jobbe i enkelte selskap

Har du LinkedIn profil og jobber med utvikling er sjansen stor for at du ringes opp regelmessig av ulike personer som ønsker å tilby det noe nytt og spennende. I stedet for å be dem ryke og reise (noe som selvsagt er fristende) så la de lever pitchen sine også spør du om hvordan mangfoldet er i selskapet. Er det dårlig, så gi tilbakemelding.
Å gjøre manglende mangfold til et forretningsproblem er en måte å sørge for at mange langt raskere tar det på alvor.

Men jeg forventer mer!

De 3 tingene her kan de aller fleste gjøre uten at det finnes et fnugg av konsekvenser. Dette er et minimum av hva som forventes og er på ingen måte nok, men det er noe alle kan gjøre. Formålet med posten er å fjerne unnskyldningen “men, hva kan lille jeg gjøre?”. Det er selvsagt veldig mange flere ting du kan og bør gjøre. Dette bør ikke være alt du gjør, fordi det er vi med privilegiene som må gå foran og sørge for at andre kan ta del i bransjen sammen med oss.

drawing of computer program

An approach to problem solving with computer programs

When you start learning to code you develop an idea of what people who does it for a living knows. I remember when I started, I was convinced that everyone around me knew everything and was never in doubt about what the correct approach would be. There was little to read about how to approach coding except for academic articles and books.

In this day and age the situation is very different. There are countless resources where you can see how people approach problem solving using computer programs. You can watch live streams of people working on popular Open Source projects or watch tutorial videos. They all give good insight into the process of coding and shows how you can reason about issues you encounter. One thing you don’t get to see in these rehearsed videos is how they come up with the solutions and how they learned to solve it. In short, you don’t get to see their frantic googling, pulling of hair and general frustration which is usually involved. You don’t see the chat messages discussing topics and expressions of doubts about the solutions.

What I’m getting at, is that there are some things related to problem solving with computer programs which we don’t discuss that often and which is not shown in most coding videos. I will try to outline my preferred way of approaching a problem in an attempt to show that even though I have done this for a living in almost two decades, my approach is not one linear process where I know the steps nor the place I want to end up.

Make it visual

Regardless of wether it is coding up an UI component or creating an API endpoint to solve a data access issue, I have to make it visual. What I mean by that is that I got to draw something somewhere. It could be doodling something on a piece of paper, drawing on a white-board or putting some boxes’n things in a Google slide. This visual I try to update as learn more about the problem I’m trying to solve. More often than not I have to start over. Usually my first assumptions where wrong. That is not a problem! It means I’ve learned something and it’s better to “scrap” a drawing or slide than to revert code changes deployed in production. 

I have met programmers who are able to process things like this in their head. They are able to find design flaws etc by visualising what happens it in their head. This is something I struggle with. I can perhaps “run” a couple of steps of a process in my head, but then I loose it. My short term memory is terrible and I’m also not that great at keeping focus when thinking. Therefor I commit my thoughts to paper or some digital tool. One nice side effect of this is that documentation comes pretty easy, as I’ve been doing that throughout the problem solving process. 

The format in which I draw or the tool I use does not matter, it’s proximity and flexibility that matters. I find modelling tools constraining rather than helpful and enabling. Therefor I tend to use generic tools for visualising / drawing / doodling. There are formal approaches on how to modell software processes and create designs. Personally I find just “drawing whatever” is more useful then ensuring it is 100% correct UML syntax. I am not saying you should not seek learning techniques for modelling software. Everything you can learn which can be added to your toolbox is always worth checking out.

Large problems only? 

My process is the same for wether I’m trying to create some distributed architecture or if it is creating a small UI component. Once the issue requires me to think more than a couple of steps ahead, this is my go to approach and it is something I feel comfortable with. I find that there is no problem too small where this does not help. Sometimes my head just isn’t in it and doing some simple drawings works wonders for me.

Solving the problem

Once the design and preparation is done it is time to solve it. I use similar approach when it comes to writing the code for solving the problem. You can visualise the problem to solve with a drawing, but you can also visualise the flow of a program using text. I learned this approach reading the book Code Complete by Steve McConnel. He said that before writing actual programming statements, you can flesh out the details just using code comments. 

someFunction () {

  // if there is an item
    // render delete button
    // if not render the add button
  
    // write the label of the item
  // then add a parenthesis and a number

}

Once you have got some thing written down, read it back and see if it still makes sense. You should refactor the code block until it makes sense and it does what you meant it to. Perhaps you should extract a method or maybe you need to call out to a service and retrieve some more data. Refactoring when all you have is code comments is easy. As opposed fixing written and deployed code. I’m not saying this is something you must do, it is just one approach which I find helpful at times. 

There are other techniques, such as test driven development, which serves the same purpose as writing code comments before coding (I am aware there are more advantages, but this is not the topic of this post). Others use pseudocode to achieve the same thing (check out Thomas’ post on the topic  “I love pseudocode”). Learning multiple ways to solve problems is useful and something that will be beneficial regardless of the technological platform you happen to be working with.

“Kids, stay in school”

This article contains methods which happen to work well for me. Others will have different approaches and techniques. What is important is staying open minded and stay curious. To keep learning is essential to having a long career as a programmer.