Ber deg slutte med pull requests: – Du får ikke til både CI og PR!

Fagsjef Gaute Magnussen i Boitano mener pull requests og kontinuerlig integrasjon jobber mot hverandre.

Gaute Magnussen, fagsjef i Boitano, under årets JavaZone. 📸: Kurt Lekanger
Gaute Magnussen, fagsjef i Boitano, under årets JavaZone. 📸: Kurt Lekanger Vis mer

– Min påstand er at verdien av CI trumfer verdien av PR, sa Gaute Magnussen, fagsjef i Boitano, under et foredrag på JavaZone.

I foredraget snakket han om hvordan pull requests (PR) har nærmest blitt standard i utviklingsteam, samtidig som mange sier de også har Continous Integration (CI) – og at de har eller ønsker å ha Continous Delivery (CD) og Continonous Deployment.

Magnussen mener imidlertid at pull requests og kontinuerlig integrasjon (CI) jobber mot hverandre, og at det i praksis er umulig å ha begge deler.

«CI handler om kort feedbackloop. Jo kortere, jo bedre.»

CI handler om kort feedback-loop

Magnussen fortalte at han har jobbet med CI i de fleste av sine mer enn 20 år som utvikler. I løpet av disse årene har han sett PR komme og CI forsvinne.

– Har mange glemt hva CI er og hvordan det gir verdi? spurte Magnussen.

Definisjonen på CI er ifølge Wikipedia at alle utviklernes arbeid merges inn i en "mainline" flere ganger om dagen.

– CI handler om kort feedbackloop. Jo kortere, jo bedre. PR er asynkront og tiden på feedback-loopen er uforutsigbar.

Det er ifølge Magnussen vanlig i CI å forvente fem-minutters bygg. Det å få igjennom en PR på under fem minutter mener han er urealistisk. Ofte kan det ta mer enn én dag.

Høy fart = høy kvalitet

En ulempe med PR er ifølge Magnussen at siden utviklere ikke ønsker å bruke for mye tid på å vente på at noen skal gjøre code reviews, så gjør de større og mer omfattende endringer av gangen før de sender inn en PR.

– Jo større man bygger, jo lenger tar det å vente. Til slutt lager man bare én PR når man er ferdig med en feature.

Denne måten å jobbe på gjør at refaktorering blir vanskeligere. Kanskje dropper man det, og resultatet er at koden blir dårligere.

Magnussen viste til undersøkelsen DevOps Research and Assessment report (DORA), som viser at høy fart korrelerer med høy kvalitet. For komme i den beste kategorien ("elite performer"), må du deploye flere ganger om dagen og endringer må ta mindre enn én time.

– Det er helt urealistisk å få til med pull requests.

Par-programmering ikke for alle

Magnussen hadde selvfølgelig også noen anbefalinger til utviklingsteam som vil droppe PR for å få til skikkelig CI.

Den åpenbare er parprogrammering, men det er ikke for alle, og i hvert fall ikke for alle alltid.

Men det er mulig å gjøre code reviews etter at man har merget til main.

– Og man kan gjøre en synkron review før innsjekk. Ta tak i kameraten din og be han titte på det du har gjort, oppfordrer Magnussen.

I tillegg nevner han også verktøy som kan gjøre PR overflødig, som lintere og statisk kodeanalyse, god testdekning og "feature toggling".

Hele foredraget er nå lagt ut åpent, du kan se det her: