Hvordan ansette Ops i DevOps?

Puristene hevder det ikke går an å være en DevOp, DevOps-utvikler, DevOps-drifter, DevOps-teknolog, DevOps-ingeniør eller lignende. DevOps er ikke en jobb, det er en filosofi. Vel og bra, men i og med at jeg tror på denne filosofien så ønsker jeg også å jobbe med mennesker som i likhet med meg ønsker å leve etter denne filosofien. Hvilke egenskaper skal jeg se etter?

Carlos Bueno i Facebook beskriver i artikkelen full stack hva en full-stack utvikler er.

A “full-stack programmer” is a generalist, someone who can create a non-trivial application by themselves.

Facebook skal vistnok ha ansatt kun denne typen utviklere i en periode. Hva en full-stack utvikler er har siden vært diskutert i et antall bloggposter og forum. De fleste hevder at dette er enhjørninger. Laurence Gellert har laget en liste over hva en slik utvikler må kunne, men den er neppe uttømmende om man skal ta hele stacken i betraktning. Generalister som har bred ekspertise i hele stacken og som enkelt kan sette seg inn i nye ting er definitivt verdifulle, men det er ikke denne typen teknologer jeg ser etter. Jeg har mye større tro på riktig sammensetning av mennesker som utfyller hverandre i kryssfunksjonelle team.

En god definisjon av DevOps kommer fra Jez Humble via en bloggpost skrevet av en gruppe mennesker under pseudonymet The Agile Admin.

[DevOps is] a cross-disciplinary community of practice dedicated to the study of building, evolving and operating rapidly-changing resilient systems at scale

Denne definisjonen forteller meg at det handler om å se etter folk som mestrer praksiser som bidrar til å kunne bygge, videreutvikle og drifte fleksible systemer i stor skala fort. Den forteller meg også at det er en kryssfunksjonell disiplin. Vi ser ikke etter en type mennesker, men heller folk med ulike egenskaper som utfyller hverandre.

Ser jeg da etter “tradisjonelle” driftere og utviklere som samarbeider om å lage systemene? Jeg tror ikke det. De kan gjerne ha jobbet som det, men kompetansen som kreves for å jobbe etter DevOps-filosofien har endret seg betydelig. I kjølvannet av DevOps-bevegelsen har det oppstått en rekke nye praksiser og verktøy som endrer måten vi bygger, videreutvikler og drifter fleksible systemer i stor skala på.

De fleste endringene er knyttet til hvordan vi designer og drifter systemene vi lager. Det er nødvendig at “tradisjonelle” utviklere lærer seg mer om drift. Med distribuerte systemer i skyen som kommuniserer over nettverk er det viktig å forstå hvordan for eksempel dns, brannvegger, subnett, lastbalansering og så videre fungerer. Enda viktigere er det at det er personer på teamet som virkelig kan drift. Drift har blitt en disiplin som har tatt til seg mange av de samme teknikkene utviklere bruker. Eksempler er versjonskontroll, kontinuerlig integrasjon og automatisering av bygg, testing og utrulling. Det er denne typen mennesker jeg ser etter. Hva må de så kunne? Her er min liste.

1. Basis driftskompetanse

Kompetanse om basisdrift er fremdeles viktig selv om engangsinfrastruktur (engelsk: immutable infrastructure), containere og skyinfrastruktur blir normen. Fornuftig bruk av filsystemer, os, lagring, nettverk, brannvegger, backup, patching, databaser, virtualisering og feilsøking er nødvendig kompetanse å ha på et team som har ansvar for hele stacken. Du må også kunne sette opp dine egne web-servere, dns-servere, epost-servere og så videre.

2. Utvikler-skills

Som nevnt over har moderne drift utvidet sin verktøykasse med verktøy og teknikker vi kjenner igjen fra utviklerverdenen. Automatisert testing, kontinuerlig integrasjon, bygging, utrulling, konfigurasjon og dokumentasjon som kode og versjonskontroll er alle eksempler på dette. Man må kunne anvende disse også for infrastruktur.

3. Infrastruktur som kode

Oppsett av infrastruktur fra hardware og opp skal være automatisert, definert i programkode og versjonskontrollert. Det er mange provisjoneringsrammeverk å velge mellom.

4. Koding

Man må kunne skrive kode for å automatisere repeterende oppgaver. Man må også kunne kode mot RESTful APIer — konfigurasjon gjennom trykking i GUI er ut! Ulike språk har forskjellige egenskaper som passer for forskjellige oppgaver. Du må kunne flere enn ett språk. Å forstå applikasjonskode er viktig og du bør ha erfaring med å ha laget egne applikasjoner.

5. Offentlig Nettsky

Erfaring med offentlig nettsky er essensielt. Virtualisering av servere med VMware eller lignende er ikke tilstrekkelig (selv om det er viktig å forstå hvordan virtualisering fungerer). Erfaring med privat nettsky er heller ikke nok. Josh Stella sin bloggpost Minimum Viable Cloud beskriver forskjellene godt. Offentlig nettsky er i ferd med å bli industristandard og det blir dermed viktig å ha denne typen kompetanse.

6. Smidige metoder

DevOps-filosofien er kraftig inspirert av Smidig og Lean. Evnen til å jobbe innenfor organisasjoner som har adoptert disse metodikkene må således være på plass.

7. Soft-skills

Jobber man Smidig er samarbeid med personer med andre roller veldig viktig. Tett kontakt med reelle brukere likeså. Samarbeid med forretningsfolk, UX-eksperter, selgere, markedsfolk, andre utviklere og mange flere krever at man må kunne kommunisere godt og samarbeide med disse på daglig basis.

Oppsummert

Det kan kanskje virke som om dette er alt for mye å be om. Det tror jeg ikke om man sammenligner det med hva andre teknologer generelt kan. Om du ber en utvikler eller drifter om å sette seg ned og skrive om alt hun kan, så vil hun sitte lenge. Listen er ikke en sammenslåing av alt utviklere kan og alt driftere kan. Vi snakker om en ny type teknolog som kan mye om det beste fra to verdener. Det er dessuten slik at man jobber i kryssfunksjonelle team hvor det finnes flere spesialister som har spisskompetanse på ulike områder som utfyller hverandre. Teknologen jeg ser etter har spisskompetansen jeg har beskrevet i denne bloggposten.


Forsidebilde av Lovelorn Poets er lisensiert under CC BY 2.0 og modifisert av forfatteren av bloggposten.

Like what you read? Give Stein Inge Morisbak a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.