utvikling

Kan måten utviklere skriver kode på, avsløre deres personlighet?

Nederlandsk utvikler har forsøkt å finne det ut.

To tilfeldige utvalgte utviklere kan ha helt forskjellig kodestil, avhengig av deres personlighet.
To tilfeldige utvalgte utviklere kan ha helt forskjellig kodestil, avhengig av deres personlighet.

OSLO SPEKTRUM (digi.no): Under JavaZone-konferansen i forrige uke holdt nederlandske Rosanne Joosten et interessant foredrag om forholdet mellom utvikleres kodestil og deres personlighet. Til daglig er hun først og fremst Java-utvikler, men har også en bachelorgrad i psykologi.

Etter at Joosten for en stund tilbake leste boken «Clean Code» av Robert C. Martin – som kommer med en rekke anbefalinger og retningslinjer om hvordan kode bør skrives, ikke minst for å gjøre koden enklere å lese og vedlikeholde – våknet psykologen i henne.

Hvorfor bruker vi ikke disse retningslinjene overalt, og kan dette knyttes til ulike personlighetstrekk?

Dette er blant spørsmålene Joosten stilte seg, før hun gikk i gang med å finne ut hva som finnes av forskning på dette området, spesielt i tilknytning til Java.

Rosanne Joosten foran en fullsatt sal under JavaZone 2019. Foto: Harald Brombach
Rosanne Joosten foran en fullsatt sal under JavaZone 2019.

Fem overordnede personlighetstrekk

I foredraget tok Joosten utgangspunkt i den psykologiske teorien som på norsk ofte kalles for femfaktormodellen. Den antar at individers personlighet kan forstås og beskrives ved hjelp av fem overordnede, oppsummerende dimensjoner. Se faktaboksen for detaljer.

I foredraget trakk Joosten fram typiske eksempler på hvordan utviklere skriver kode på forskjellig måte.

Femfaktormodellen

  • Åpenhet overfor nye ideer og mennesker. Nysgjerrighet. De som foretrekker Java, scorer høyt her. Java har veldig mange lag å oppdage.
  • Planmessighet, nivå av å være organisert og strukturert. Utviklere scorer ofte høyt her, siden de ofte må kunne strukturere det som i utgangspunktet er temmelig vage ideer. De med høy score er ofte både veldig ansvarlige og sta. Lisa Simpson er ifølge Joosten et godt eksempel. Broren Bart er det motsatte.
  • Ekstroversjon eller utadvendthet. I gjennomsnitt scorer utviklere lavt her. «Hvordan kjenne igjen en utadvendt utvikler? Han ser på dine sko istedenfor sine egne.»
  • Medmenneskelighet. Scorer man lav her, er man mer kritisk. Det er behov for begge deler i et utviklerteam.
  • Nevrotisisme, det motsatte av emosjonell stabilitet og trygghet. De som scorer høyt her er ofte usikre på egne evner. Python-utviklere scorer ofte høyt her. Det er lav terskel for å komme i gang med Python-utvikling, og usikre personer starter ofte med noen som er enkelt.

Ett slik eksempel er bruken av lange navn på slikt som variabler, funksjoner og klasser.

– Utviklere som gjerne bruker lange navn, scorer høyt på planmessighet. Ofte er for eksempel funksjonsnavnene strukturert som et verb og hva dette verbet virker på, sa Joosten.

Et eksempel leggPersonIGruppe(). Slike beskrivende navn kan gjøre det enklere og raskere å forstå hva funksjonen eller variabelen brukes til, men langt fra alle mener at dette er optimalt.

Kompakt eller utflytende?

Et annet eksempel Joosten nevnte, var kompakt kode. Dette kan for eksempel være mye bruk av if-tester som er skrevet på én linje og generelt lite bruk av linjeskift og klammeparenteser.

– Dette er personer som er temmelig sikre på hva de skriver av kode. De scorer typisk lavt på nevrotisme, sa Joosten.

Nå er det ikke nødvendigvis slik at de som bruker mye blanke linjer i koden, scorer veldig høyt på nevrotisme. Men de scorer typisk høyt på åpenhet.

Ifølge Joosten anses både veldig kompakt og veldig utflytende kodestil som «litt dårlig», dersom man skal følge «Clean Code»-retningslinjene.

Import

Et tredje eksempel Joosten nevnte, handlet om import av biblioteker i kode. Mens noen velger å importere alle klassene i en pakke ved å bruke jokertegn, for eksempel:

import java.util.*

velger andre å importere selektivt ved å spesifisere enn liste med nøyaktig de klassene det er behov for:

import java.util.ArrayList;

import java.util.Collections;

java.util.Stream;

Ifølge Joosten er de som importerer selektivt emosjonelt stabile, det vil si at de scorer lavt på nevrotisme.

Kommentarer

Et annet aktivitet som kan fortelle mye om personligheten til utviklere, er hvordan de kommenterer koden sin. Kommentarer er nødvendig for at andre (og en selv) skal forstå hvordan koden er bygd opp og fungerer.

// it was hard to write

// so it should be hard to read

Kilde: Loudprogrammer.net.

Ifølge Joosten er det ikke overraskende en tydelig sammenheng mellom de som scorer høyt på ekstroversjon og de som kommenterer mye.

– Utviklere sitter ofte i hver sin «celle» med støykansellerende hodetelefoner på hodet. Da er det med kommentarer i koden at de utadvendte utviklere kan få utløp for sine behov for å være nettopp utadvendte. Det er slik de får energi, sa Joosten.

Mange utviklere bruker GitHub og legger igjen kommentarer og meldinger der. Statistikk viser at det er mange som banner eller kommer med andre negative uttrykk i kommentarene. Men dette er på ingen måte jevnt fordelt mellom språkene. Joosten viste fram de følgende diagrammene.

Diagram som viser hyppigheten av banneord i kildekode skrevet på ulike språk. Foto: Harald Brombach
Diagram som viser hyppigheten av banneord i kildekode skrevet på ulike språk.

Som bildet over viser, er det aller mest banning i kommentarene til PHP- og JavaScript-kode. Matematica og Visual Basic er i motsatt ende av skalaen.

Statistikken omfatter også bruken av positive uttrykk.

Diagram som viser utbredelsen av positive uttrykk i kildekode skrevet på ulike språk. Foto: Harald Brombach
Diagram som viser utbredelsen av positive uttrykk i kildekode skrevet på ulike språk.

Dette er mest brukt i kommentarer om Clojure og Lisp, og lite i kommentarer som SQL og Visual Basic.

Om noe, så antyder statistikken i alle fall at det er få som har særlig sterke følelser for Visual Basic.

Powered by Labrador CMS