Vi i kode24 liker ordet utvikler. Men hver eneste dag snakker vi med folk som har langt mer fancy titler og roller enn det.
Ofte blir vi sittende og tenke: "Hva gjør egentlig en sånn en?" Og nå skal vi faktisk spørre dem om nettopp det, i den nye serien vi passende nok kaller "Hva gjør en..?".
Først ut er en vaskeekte tech lead; Hans Christian Hagen i Ignite Procurement AS.
- Rollen min kan minne om en slags kombinasjon av coach, potet, fullstack-utvikler, DevOps og det mange ofte kaller "en voksen", sier Hagen.
- Dette med en bismak av arkitekt og tech-evangelist.
Hvordan havna du i tech lead-rollen? 📚
Jeg droppa ut av videregående og begynte å jobbe hos Norges nest største ISP da jeg var 18. Der begynte jeg med nettverkssupport for bedrifter, så opplæringsansvarlig, implementasjonstekniker, seniortekniker, storkundeansvarlig, systemsupport og utvikler - med en mindre periode i India. Ingen ferie, skal sies.
Etter det meget lærerike eventyret flytta jeg til Oslo og begynte i en startup som drev med videokonferanse. Rollen min der var devops, sammen med de andre par-tre devsa, og grunnleggeren, som også var devops.
Slik får du bedre lønn og tittel i ny jobb
Det var desto mer lærerikt, ikke minst fordi vi alle led hardt av not-invented-here syndrome, så vi skrev basically all tenkelig platformfunksjonalitet fra scratch, i tillegg til produktet og skytjenestene vi faktisk solgte. Jeg tipper det var siste gang jeg noensinne jobbet et sted hvor vi hostet hardwaren selv, fremfor å bruke en skytilbyder.
Etter at vi ble slukt (fusjonert) med et større selskap, følte jeg min jobb der var gjort og begynte i nok et startup. Vel, scale-up, la oss være ærlige. Det er Ignite, hvor jeg nå jobber som tech lead.
Den strabasiøse ferden fra liten til stor er velkjent for meg, så jeg følte vel jeg var en god fit.
Hva innebærer det for deg å være tech lead? 💪
Heldigvis er Ignite fortsatt ungt nok til at rollene er litt sånn "choose your own adventure", noe jeg setter pris på.
I korte trekk er det vel å være en slags teknisk foregangsfigur. Hva er best practices, hvilke feller må man prøve å ikke gå i, hvilke språk og rammeverk er best egnet til hva, den typen ting.
I tillegg har jeg ukentlige oppfølgingssamtaler og fokuserer mye på å hjelpe andre utviklere med blockers, tooling, bedre kjernefunksjonalitet, sikkerhet, deployment og så videre.
«I korte trekk er det vel å være en slags teknisk foregangsfigur.»
Hvordan ser en vanlig arbeidsdag ut for deg som tech lead? 📅
Vanligvis sover jeg lenge. Som B-menneske fungerer hjernen best på kvelden. Morgenmøtet/stand-up tas gjerne fra bussen på vei til kontoret.
Derfra er hver dag gjerne tatt litt på strak arm. Det er kanskje et sikkerhetsmøte, siden vi nylig har hatt en pen-test. Kanskje skriver jeg en klient for et API vi skal bruke. Kanskje har jeg mange én-til-én med andre utviklere den dagen. Kanskje noen holder på å deploye noe nytt, og har satt seg fast med noe. Kanskje jeg er så heldig at jeg får skrive noe ny kjernefunksjonalitet.
En veldig kjent gjenganger er å bruke tid på debugging, uavhengig av språk eller hvor i stacken issuet har oppstått. Egentlig kunne tech lead blitt omdøpt til "debugger", for det er det man gjerne gjør. Det gjorde min tech lead da jeg selv var dev, og det gjør jeg nå som tech lead selv.
Et av nøkkelpunktene for tech leads er forståelse for hvordan alt henger sammen, gjerne helt fra ende til ende. Denne forståelsen er både nyttig og utnyttbar for alle som debugger.
Hvilke verktøy, språk og programvare bruker du mest tid i som tech lead? 💾
Jeg bruker Sublime Text 4, altså midt mellom barken og veden av old-school som Emacs og Vim og nu-school som VSCode, med et smørgåsbord av plugins:
LSP-er for Go, Python, Typescript og så videre, samt lintere, vettere og formattere over en lav sko.
Sublime pluss terminalen er der jeg trives best. Jeg skriver mest Go, bash og make, men også Python, Typescript, JSX og de andre vanlige.
Jeg er veldig fan av å misbruke make til å automatisere typiske skriptejobber på ens egen maskin - generering av kode, installering av dependencies, oppretting/trusting av keys/certs, oppretting av nye prosjekter med default-filer og så videre.
Tech lead til norske utviklere: - Be om en tittel, nå!
Dette håndteres selvsagt av mer ansvarlig programvare i prod, nemlig Kubernetes. Så kubectl får kjørt seg. Det gjør også git, med GitHub Actions, og en pipeline av ymse tester, helm-generering, healthprobes og alle de godsakene.
Vi prøver etter beste evne å skru sammen en solid mikrotjenestearkitektur, derav tilbøyeligheten til Go. Mellom mikrotjenestene kjører vi gRPC over zero-trust nettverk, og ut mot verdensveven kjører vi en salig blanding av RESTful HTTP og GraphQL, med et par hopp i mellom, som sikkerhet og loadbalancing.
Som gammal not-invented-here-er liker jeg godt å skrive mye funksjonalitet selv, men jeg har all forståelse for at det ofte finnes ferdige verktøy som gjør jobben like godt. Jeg har i det minste klart å karre meg til å skrive loggpakkene for samtlige språk inhouse. Dette blir peisa videre inn i Loki, for vi har seff den kuleste log-/metric-stacken, med Loki/Prometheus/Grafana.
Hva er det beste og verste ved å være tech lead, synes du? 💘
Det beste ved rollen min er nok det menneskelige, at jeg får jobbe med flinke, morsomme devs, og brukt mye tid på å være med dem gjennom forskjellige prosjekter og utviklingsprosesser.
Det jeg implisitt setter pris på er å hele tiden kunne ta i eller skape bleeding edge tech. Det tekniske aspektet er viktig, så tech leads bør nok være litt nørds.
Det kjipeste er kanskje det generelle presset over alt alle ønsker å ha ferdig, som helst skulle vært ferdig i går, som jeg har et slags overordnet ansvar for. Men ting tar den tiden det tar, endog er det vanskelig å ikke la seg stresse - i hvert fall tidvis.
Potet: - Hva betyr det egentlig å være fullstack-utvikler?
Hvorfor trenger tech lead å være en egen rolle? 🤷
Trenger den egentlig det? Ikke for å bli filosofisk, men det er ikke sikkert den trenger det.
Noen ender jo opp i den posisjonen en tech lead har, uavhengig av om hen kalles seniorutvikler, voksen, tech-evangelist, engineering-manager uten personalansvar, coach, Thomas eller "han fyren som kan de deployment-greiene".
Men det er fint å kunne ha litt designert tid til å bruke på andre, uten at det trenger å direkte gå ut over min egen produksjon. Eller det gjør jo det, men det er medregnet på et vis.
Hva bør en UX-designer kunne? "Vi er jo knapt enige om hva UX egentlig innebærer!"
Hvordan er lønna og arbeidsmarkedet for tech leads? 💰
Jeg tipper lønna ligger på omtrent det samme som en seniorutvikler, det er heller fokuset som er marginalt forskjellig. Arbeidet er tilfredsstillende hvis du liker et utgangspunkt hvor "alles" seier er litt din seier også, og har litt meninger og "retning" innen tech.
Ellers er vel lønnsvilkårene like svingende som for resten av utviklerland. Man tjener mer som konsulent enn i startup, men man blir rikere hvis startupen går bra.
Man tjener mer dypt inne i corporate-land, men man har mer frihet i en garasje sammen med godgjengen.