Colorful wires going into a circuit board.

On reducing complexity

This is a common challenge once a company has built enough “stuff”. The burden of maintenance and the difficulties in refactoring makes one cry out for “Simplicity, now!’. A common perception of reducing complexity is to “dumb things down”, this is a reaction to the tension of it being difficult to untangle things. It’s often a good idea not to act on this tension, but look a bit further at the issue at hand.

Before even starting to consider doing anything, it is worth while to take a step back and analyse what exactly is complexity. People working together sometimes create established truths and create a shared understanding of how things are. Not based on research or analysis. There are multiple forces at play when a team starts talking about “too much complexity”. It can be a failure to deliver on their promises leading to a sense of failure and a need to place blame outside themselves. In companies with a hierarchy teams often create a lore of complexity as an explanation of why things are not going as planned. In the post The hidden meaning of complexity in the context of software development I talk about how the word complexity can mean something different entirely.

How to go about changing things?

One way to reduce complexity is to have to deal with less. Are there parts of the application which hardly ever changes? Would it make sense to split out isolated behavior from the main build? When doing this you can often get the counter argument of “we don’t want micro services!”. True, splitting out into separate might reduce some complexity and focused services that hardly gets deployed are great! However you can also isolate code which hardly change into libraries you compile in, reducing the number of things to build.

The misconception of thinking that reducing complexity always means removing or reducing things. You might actually reduce complexity by embracing new paradigms and undertake larger changes in your architecture. Doing this might require you to acquire new capabilities and learn new things, however this is not the same as adding complexity. Learning and evolving is always a key part of software development and should be just as natural to do when trying to reduce complexity.

Let’s say you have monolithic API which has grown out of control with long build times and a lack of efficient horizontal scaling, one way of reducing complexity could be to make drastic changes. Perhaps you need to insert a message queue and embrace an event based architecture? This might seem counter intuitive to reducing complexity , as setting this up is not that simple. However I would argue that often is this planned complexity preferable to the accidental complexity of a module which has grown out of control.

The means of production

When rescuing complexity an essential task is to look at the means of production, which is software is the delivery- and runtime infrastructure. Whatever path you choose in order to reduce complexity, it has to start here. If you continuous delivery system is fragile, or non existing, that is a place to start. If your infrastructure isn’t possible to replicate without manual procedures, that’s a thing to fix.

The reason for this is simple, no matter what you’re looking at doing it’ll be a nightmare if these things aren’t running smoothly. It will greatly reduce the types of things you can choose to do and it will also increase the time it will take to dig you out of the hole you are in.

Blocks with letters on them spread out over a table.

On words

I had read the term many times on the Internet from people who’s been vocal on certain topics which for different reasons turn out to be controversial.

Gaslighting

https://en.wikipedia.org/wiki/Gaslighting

I encountered this term for the first time when I was being vocal about an IT conference in Norway which I thoughts had a highly inappropriate name (post in 🇳🇴 Den Norske Dataforening sitt manglende gangsyn) . During this action in trying to get them to change, I was exposed to this behavior for the first time.

When I say first time, that’s a guess, as before this happened I didn’t know there was a word for this. Luckily I had someone by my side who, sadly, had a lot of experience in these sort of things. She helped me develop a vocabulary for what was going on. I didn’t know what it was, just that the situation was very uncomfortable and I didn’t know what to do. Without the guidance and help from someone who had words to describe what was going on I would have been lost and probably made a lot of mistakes and failed to grasp the situation.


Having experienced the meaning of this word, gaslighting, I took it seriously and started reading and digging deeper on this topic of manipulation. Slowly developing a vocabulary and a frame of reference for which to interpret what had happened. This work has been very valuable when I have found myself in similar situations, lost without the words to help me describe what I was experiencing at the time. The technique of gaslighting is not just something which happens during discussions on the Internet. Once you become aware of it you will see it in public discourse and also in your own work place. Using your knowledge, on subjects such as this one, to help others better understand their situation becomes a natural thing. You want them to be empowered to find the best way for them to deal with their situations.

Improved communication with a larger vocabulary

The power of words also applies to the art of engineering. One of the things you will notice as you have spent years in this industry is that your vocabulary grows as you go along. You can choose to use this power for good, such as improve the quality of communication. However, there are also ways to use this newfound power to alienate and put up gates preventing others from participating. It is entirely up to you how you use the power of words.

I remember being introduced to the concept of refactoring early in my career. It was mind blowing at the time as up until that time I would just change things and make random improvements. Going about changing my code using a vocabulary others could relate to and understand helped improve the quality on conversations about code. The word refactoring has been deluded to mean “change random stuff”, however it was defined as this:

Its heart is a series of small behavior preserving transformations. Each transformation (called a “refactoring”) does little, but a sequence of these transformations can produce a significant restructuring. Since each refactoring is small, it’s less likely to go wrong. The system is kept fully working after each refactoring, reducing the chances that a system can get seriously broken during the restructuring.

https://refactoring.com/

By using the terms and words outlined it enables effective and clear communication to those who share this vocabulary. It means you can spend less time describing the intent and the objective outcome, as it is implicit in the name of the refactoring. A senior developer would use this language, but in the presence of less experienced people they would take the learning opportunity to help them learn the words and their meaning. To use the power of words as a tool for education rather than gatekeeping is essentially what separates a mature developer from someone who is in it for their own benefit only.

In closing

Words carry meaning, power and the ability for you to easier grasp your current situation. Establishing a vocabulary is an essential part towards learning more about something. This is the same in all walks of life. Acquiring the words to best describe things within a domain enables you to gain a broader and deeper understanding. It is the first step enabling you to learn more.

Hand holding a white cup with the text "The adventure begins" with a lake and a forrest in the background.

Hvordan forberede deg til neste tur?

Jeg har tidligere skrevet om hvordan du kan se på karrieren din i “Pakk sekken med ting du trenger for turen”. Denne gangen skriver jeg om noe litt annet, nemlig hva du kan gjøre for å komme igang med å planlegge din neste tur i karrieren din. Det er mange ting jeg kan og enda flere jeg ikke kan, men er det noe jeg har dokumentert kompetanse på så er det å flytte meg i arbeidsmarkedet (bare sjekk profilen min om du ikke tror meg). Likevel er jeg kun spesialist på min egen karriere så alt du leser må du selv finne ut hvordan passer deg.

Lag pakkeliste

Alle som skal på tur som skal vare litt trenger å lage en pakkeliste over hva du trenger for turen. Denne pakkelisten er vanskeligere å lage jo lengre du har vært i en jobb. Det er lett å tenke at etter fem, ti eller femten år i samme bedrift så kan en ingenting som er nyttig noe annet sted. Ting du gjør hver dag føles trivielle og enkle. Situasjonene du har vært i, problemene du har løst flere ganger virker enkle og ikke spesielt interessante.

Det som er lett å glemme er at ikke alle steder er som der du jobber. Veldig mange steder har utfordringer nettopp du kan løse. Problemer du har løst et utall ganger er noe de mangler kompetanse til å løse. Ingen steder er perfekte og alle steder har utfordringer. Sjansen for at du etter lang tid i et selskap har noe å tilby vil jeg si er rundt nittiåtte prosent. Ikke undervurder hva du har lært og ikke ta forgitt at alle andre er så fantastiske som det de fremstiller det. Alle jobber og selskaper har sine problemer og gjør sine idiotiske ting. Derfor trenger du ikke være engstelig for om du har noe å tilby, selvsagt har du det. Ingen som har jobbet i fem til ti år er ubrukelige, så ta deg tid og ikke være kritisk når du skal skrive opp pakkelista. Pakkelista inneholder utfordringene du har møtt på, problemene du har løst, situasjonene du har stått i og kommet ut av. Det er tingene som gjør at neste turen din går lettere. Den sekken du har med deg er veldig mye tyngre enn du først tror.

Photo by Julentto Photography on Unsplash

Planlegg turen

Å se på karrieren som en tur, enn som en stige, er befriende på veldig mange måter. Det har derimot den baksiden at du faktisk må planlegge mer når du ikke bare skal oppover en stige. På samme måte som når du skal legge ut på små eller store ekspedisjoner så trenger du planlegge i forveien. Du trenger ikke en ferdig lagt rute som inneholder detaljer som tider, datoer, m.m. Derimot kan det være lurt å ta tida til å reflektere kanskje en gang i kvartalet for å se hvor du er. Lærer du noe? Er det noen andre arbeidsoppgaver som frister mer? Er du frustrert over at du ikke får brukt det du kan eller vist deg fra din beste side? Trenger du mere penger for å få hjulene til å gå rundt? Avhengig av hva du kommer fram til, så kan det hende du trenger å legge inn litt tid til å planlegge hvor turen går videre. Hvilke ting ser du etter i en ny jobb? Er det arbeidsoppgavene du vil endre? Ønsker du å utforske et nytt fagfelt? Trenger du bare miljøskifte? Savner du å jobbe i et internasjonalt miljø? Noter ned hva du ønsker, for det vil hjelpe deg finne veien videre.

I det du har tenkt tanken om at turen kanskje går et litt annet sted enn den er på vei nå, så er det bare å begynne å planlegge. Ikke vent, for i det du har tenkt tanken er alt annet bare instinktet om å søke komfort som slår inn. Start planleggingen med å oppdatere LinkedIn profilen, begynn å følge med på annonser på steder hvor du tror en potensiell arbeidsgiver kan finnes? Kanskje trenger du å snakke med en gammel kollega? Ta en kaffe med noen du har likt å jobbe med? Søk litt impulser og se hva som trigger deg. Planleggingen vil ta tid og jobbsøking kan være ganske mye jobb om du ikke har en plan for hva du vil.

Photo by Nick Abrams on Unsplash

Du trenger ikke gå på tur alene

Hva med alle de gode kollegaene?” spør veldig mange når jeg nevner det med jobbytte. Jo, jeg har hatt veldig mange gode kolleger og noen av dem er mine venner fremdeles (jeg har skrevet om dette i “Du får ikke venner på jobb”). Men, tingen er at det finnes veldig mange som venter på å bli din neste gode kollega. Selv om stedet du jobber nå føles spesielt, så kan jeg med min erfaring si at det finnes mange spesielle steder. Det er ingen grunn til å tro at du ikke vil få gode kolleger andre steder. Du trenger selvsagt å finne ut om et nytt sted vil gi deg nye turkamerater som du har lyst å være med, men sjansen for at det finnes noen er i følge mine beregninger rundt 80%.

Photo by Jakob Owens on Unsplash

Du angrer aldri for at du gikk på tur

Det eneste som er sikkert er at du aldri vil angre på at du bytter. Uansett hvordan det går, så vil du ha lært masse bare av prosessen med å bytte jobb. Du har fått klarhet i hva du ønsker og ikke ønsker i en ny tur. Gjennom intervjuer og prosesser lærer du nye selskap å kjenne og lærer ting om deg selv. Kanskje gjør du et feil valg, men det er jo ingen katastrofe (slik dagens arbeidsmarked er vel å merke) fordi neste jobb er faktisk rett rundt hjørnet. Jeg har aldri jobbet noe sted så kort at jeg ikke har lært noe. Selv om jeg har vært med på en tur på bare noen måneder har jeg lært verdifulle ting som har gitt meg mye som person og gitt meg ny faglig kunnskap. I mine femten pluss jobb bytter har jeg aldri angret på at jeg tok sjansen på å legge ut på en ny tur. Uansett hvordan det har gått, så er jeg en erfaring rikere og kommer bedre ut av det enn om jeg ble værende.

Å bli værende fordi du føler lojalitet eller at du svikter jobben er en vanlig følelse. Spørsmålet er om du egentlig tilfører jobben noe særlig om du er der fordi du tror andre mener du burde? Lojaliteten bør ligge hos deg selv og de viktige personene i livet ditt. En arbeidsgiver er noen som betaler deg for at du skal gi dem din kunnskap, muskelkraft eller lignende. De vil aldri gå det lille ekstra for deg, derfor skal du heller ikke gi det tilbake. Du skylder deg selv å tenke på hva det beste er for deg. Fordi du fortjener det.

A brown cow looking towards the camera with one eye.

Detecting bullshit 🚨

I remember when I first read How To Detect Bullshit by Scott Berkun, I was mesmerized that someone was able to articulate this so well. Throughout my career I have referenced this article to my coworkers. Today, more so than ever before, being able to detect bullshit is one of the most important skills you can have working as a programmer.

An endless stream of bullshit

There is an endless stream of bullshit flowing all over social- and traditional media at any given time. Previously it was not so constant and all consuming, but today you will encounter countless situations where the skill of bullshit detection is required.
If you fail to acquire this skill or do not practice it, you will end up making flawed decisions, make bad choices and maybe you even end up loosing your job over it!

Having a finely tuned bullshit filter is something that requires persistence in this day and age. If you do not force the filter to be applied to all information everything you consume, it will wear you down and you will be one of those people who’s only capable of reiterating something somebody else came up with.

I would argue that in all positions bullshit detection is essential. Obviously it is vital when being in involved in hiring processes. However you need to apply the same filter when working as a programmer and sysadmin. We are all bombarded with trends, hypes and promises of a new silver bullet every single day. A finely tuned bullshit filter is essential to be able to pick out the few important pieces that pass before your eyes during a day. Without it you’ll quickly feel exhausted and get a feeling you are not keeping up.

It only takes one question:

One of the first items in Berkun’s article is this, asking the question:

How do you know what you know❓

It sounds pretty easy, but once you focus upon asking this question every single time someone makes a statement, you will be surprised how often the answer will not be satisfactory.

Always be alert 👀

Let’s say you are visited by someone who’s portrayed as a thought leader in innovation. The first question you should ask yourself should be:
How does this person know what it claims to know?

In an argument with a fellow programmers when someone makes a claim that “X is superior to Y”, your first question should be:
How does this person know this?

Woman holding phone taking picture of a lake

Om digital avhengighet

Jeg bestemte meg på sensommeren at jeg måtte gjøre noe med mitt forbruk av sosialemedier og telefonbruk. Først og fremst for å være et bra forbilde for barna mine, for hvordan kan jeg gi dem faste rammer om de ser jeg ikke klarer det samme?

Lol, jeg er’kke avhengig!

Deg

Du tenker kanskje du har full kontroll, men er du helt sikker? Har du sjekket Screen Time og sett hvor mange timer pr dag du bruker telefonen (og ikke kom med den “jammen jeg bruker den til jobb”, fordi det vet vi begge ikke er sant). Hvor mange pick ups har du pr dag? Blir du varslet 178 ganger om dagen? Svarene på disse spørsmålene vil være ubehaglig, men det er helt greit. Vi har alle vært der og det er veldig mange andre i samme situasjon. Familier, kolleger, venner har alle den samme utfordringen.

Denne teksten handler om hvordan jeg forsøkte jobbe meg gjennom min avhengighet og en del praktiske tips & triks som kan hjelpe.

Først: still en diagnose 👩🏼‍⚕️

A toy ambulance on top of a white wooden bench

Det aller første en bør gjøre er å stille en diagnose. Hvor ille er det egentlig? Dette er ikke noe du selv kan avgjøre, men heldgvis kan telefonen din fortelle deg hvor ille det er. Hvis du ikke har satt på Screen Time (eller tilsvarende på Android) så er det første ting du må gjøre. Den viser deg hvor ditt problem ligger.

Hvis du bruker den mer enn 3 timer om dagen, så har du en utfordring. Tar du opp telefonen mer enn 50 ganger i løpet av en dag har du også noe å jobbe med. Hvor ille det er avhenger av personlighet osv, men det viktigste er at nå har du et vekrtøy til å hjelpe deg.

Nå kommer litt mer praktiske tips, vipp ut telefonen og gjør deg klar til å gjøre det på din telefon.

Ta tilbake makten 💪

Jeg leste en del tips om hva man kan gjøre, mange av de er ganske åpenbare når man først tenker etter:

  • Slå av alle push varsler, utenom meldinger og telefon
  • Slå av “de røde badges” 🔴 som viser uleste meldinger eller lignende på appene dine.
  • Slå av alle Siri-greier som gir deg varsler om ting

Du har nå fjernet det som tvinger deg til å ta opp telefonen selv om den er i lomma eller ligger langt vekk. Dette gjør at du har, i teorien, makten over telefonen og ikke omvendt.

🎉Gjør telefonen kjedelig 🎉

Du har nå slått av en del av tingene som forsøker lokke deg til å ta opp telefonen, men det er bare starten. Du kan finne på å ta opp telefonen likevel, så da kan du gjøre følgende for å gjøre den opplevelsen litt mindre bra. Det handler om å ikke gi deg selv positive opplevelser eller assiosasjoner når du plukker den opp. Derfor må du gjøre opplevelsen av mindre morsom og innbydende.

  • Sett bakgrunn på lock og wallpaper til et bilde av en solid farge. Du ønsker ingen assiosasjoner som kan føre til at du kommer på noe.
  • Flytt alle applikasjoner vekk fra første skjerm. Ingenting skal firste når du åpner telefonen
  • På skjerm to skal du bare ha de aller viktigste appene som f.eks Yr, Google Maps, kalender, kanskje nettleser
  • Alle andre apper putter du i grupper og stuer sammen i en haug

“Jammen Espen, da finner jeg jo ikke appene?” Joda, du swiper ned også søker du de opp. Du finner alt du skal, men det gjør terskelen litt høyere og at du kanskje rekker tenke: “Nei, jeg skal ikke inn å sjekke katte videoer nå”.

Det er ikke den, det er deg!

Å gjøre alle tingene over hjelper deg til å ta kontroll og det gjør telefonen mindre attraktiv. Likevel gjenstår ett problem, som kanskje er det største problemet av alle: deg!

Du er det største problemet

E.Dalløkken

Gjennom langtids bruk av smarttelenfon har du programmert hjernen din til å søke belønning hver eneste gang du: venter, kjeder deg, lurer på noe. Hver gang hjernen din merker du er i disse situasjonene ber den armen din om å fiske opp telefonen.

Du vil merke det, dersom du forsøker kjenne etter, når du venter på kollektivtransport. Hvor vanskelig er det ikke å la telefonen være? Hva gjorde du før når du ventet på bussen?

Du venter i bilen på at noen er inn å handler. Ungene er på trening og du venter på at de skal bli ferdig. Du skal på dass også tar du med deg telefonen (ikke nekt, vi gjør det alle sammen). Alle disse situasjonene må omprogrammeres i hodet ditt slik at det ikke er dopamin tid.

Gå drastisk til verks

Ingen av tingene over hjalp meg bli helt kvitt min avhengighet, jeg fikk relapser og jeg merket at hjernen min fremdeles tenkte: “kanskje sjekke Twitter?”. Jeg tok å fjernet appen fra telefonen min, så når jeg nå søkte den opp eller flyttet til gruppa der den pleide ligge. INGENTING DER!!

Det hjalp, så nå er jeg nede i kanskje et par ganger i en arbeidsdag hvor jeg sjekker Twitter. Jeg merker at det gir meg stadig mindre å være der, fordi uten jevnlig bruk så forsvinner verdien og magien.

Du la kanskje merke til på min homescreen at jeg bruker Firefox Focus, “hvorfor det?” tenkte du kanskje? Det er fordi det er en nettleser med ekstremt lite funksjonalitet! Det er ingen favoritter, ingen shortcut screen og ingen lagring av passord etc. D fleste operasjoner er litt krunglete og tar tid. Det er genialt fordi jeg må skrive inn adresser til nettsider jeg skal besøke (du får litt hjelp om du vil, men du må opp med tastaturet), hvilket betyr at terskelen for å bare surre rundt er litt høyere. Det skader heller ikke at du surfer med litt mer beskyttelse av privatlivet ditt i den nettleseren.

Vær oppmerksom👀

Hva mer kan du gjøre, vel det handler om å være litt bevist også ha en plan for hva du skal gjøre når du er i situasjoner hvor du vanligvis ville vippet opp telefonen.
Ha en plan for hva du skal gjøre når du venter eller kjeder deg. Tenk over hvilke ting du kan gjøre som likevel får tiden til å gå.

Lykke til 💪🔥✅