Paul Graham sin klassiker Beating The Averages forteller at Lisp er et hemmelig våpen, hvor konkurrentene dine blir stående igjen i støvet som legger seg etter din enorme effektivitet og produktivitet.
Kanskje tidlig på 2000-tallet. Men i dag må språkene se seg slått av plattformene.
Koden vår renner nå over med tredjeparts avhengigheter, fra et gedigent økosystem av tidsbesparende hjelpemidler.
Men er disse avhengighetene egenkapital, eller er de gjeld?
¶Assets and liabilities
I regnskap snakker man om “assets” og “liabilities”, altså egenkapital og gjeld.
Med 1 000 i egenkapital og 2 000 i gjeld, så har du -1 000 på bok.
¶Luksusfella
Det er deilig å dra inn tredjepartskode.
Vi har jo ekte problemer å løse.
Vi skal ikke sitte her og mekke med tekniske detaljer, vi skal dra Trello-kort mot høyre. Vi skal levere.
Oooh, vi slipper å fikse state-håndtering selv
Ah, så digg å ikke måtte manuelt mekke masse forms hele tiden
Smuuud, vi kan betale regningene senere, og bare **få** masse penger, helt gratis?
Jeg fryser. La meg tisse litt i buksa.
¶Om romskip
Hvis du har to brukere, skal du lage hele stacken din selv, fra bunnen av?
Ja, noen ganger så skal du faktisk det.
Her, her og her kan du lese om hvordan software-utviklerene hos SpaceX har laget sitt eget “reactive framework” og har gjort alt fra bunnen av.
For SpaceX er tredjepartskode gjeld. De lever helt på kanten av hva som er mulig å få til, og trenger full kontroll på miljøet sitt.
Men.
De bruker jo Chromium. Og de bruker Linux. De har riktignok sin egen Linux-distro. Men de lener seg på et helt hav av tredjepartskode.
Så hva er det de egentlig driver med på SpaceX?
¶Wait a moment
Moment.js var lenge de facto tredjepartsavhengighet for å jobbe med tid og dato i nettlesere.
Prosjektet er nå på vei inn i en annen fase, og i sin “project status” forteller de nå:
- We will not be changing Moment’s API to be immutable.
- We will not be making any major changes (no version 3).
- We may choose to not fix bugs or behavioral quirks, especially if they are long-standing known issues.
- We will address critical security concerns as they arise.
Med andre ord: Moment.js var tidligere gjeld, men nå er det egenkapital.
¶Noe tredjepartskode er ren egenkapital
Linux-kernelen drar det så langt at hvis de har shippa en bug, og det finnes kode der ute som lener seg på den buggen, ja så fikser de den ikke.
Hvis du lener deg på Chromium, kan du glede deg over at Google har som ansvar at masse gammal drit-kode på internett skal fortsette å fungere.
Microsoft hoppet fra Windows 8 til Windows 10, for å ikke generere gjeld i all den gamle koden der ute som sjekket etter Windows 95 og 98 med osVersion.startSwith("Windows 9")
.
Hvis du bruker Moment.js i sin nåværende form, er det helt trygt å oppdatere når det kommer nye versjoner.
Sier jeg at du fra nå av skal lage alt selv?
Niks.
Men neste gang du drar inn tredjepartskode i prosjektet ditt:
Tenk nøye igjennom om du øker egenkapitalen eller gjelda di.