
Innen programvareutvikling finnes det en utbredt idé om at en ingeniør kun bør bruke et rammeverk når han eller hun forstår de interne mekanismene. Dette er en feilslutning.
Hvorfor må vi kjenne til de interne mekanismene — spiller detaljene så stor rolle? Noen vil kanskje si at uvitenhet er lykke.
Bilmotor
La oss undersøke motoren i en bil:
Hvor mange vet egentlig hvordan motoren fungerer?
Kan du fortelle meg hvorfor den kalles en 4-taktsmotor?
Hva gjør hvert takt?
Hva er forskjellen mellom en 4-taktsmotor og en 2-taktsmotor?
Noen?
Og likevel kjører vi bilene våre uten å tenke på “hvordan” bilen får oss til destinasjonen.
Vi kommuniserer med bilen ved hjelp av rattet, girspaken, gasspedalen og bremsene.
Hvem bryr seg om hvordan det fungerer, så lenge det får oss til destinasjonen. Når bilen går i stykker tar vi den til en ekspert.
Kjernevirksomheten til en bedrift
I næringslivet har et selskap spesialisert kunnskap som gjør det konkurransedyktig. Dette omtales som selskapets kjernevirksomhet.
En kjernevirksomhet kan være en prosess eller et produkt.
For å forbli konkurransedyktig må et selskap utrettelig forbedre sin kjernevirksomhet. Å bruke ressurser på aktiviteter som ikke støtter selskapets kjernevirksomhet svekker selskapets konkurransefortrinn. Dette åpner mulighetsvinduet for konkurrenter til å overta selskapets konkurransefortrinn.
Denne ideen illustreres best med et eksempel.
Apple
Apple er kjent for sin enkelhet og sine vakre produkter. Du skulle tro dette ville være lett å kopiere, men det er det ikke, bare spør Samsung, HTC og Microsoft.
Hvorfor har disse selskapene mislyktes? Fordi enkelt er vanskelig og Apple er ekspert på enkelt.
Kjernevirksomheten til en person
Kjernevirksomhet kan også gjelde for mennesker.
Hva skiller deg fra andre?
For å ha utviklet din kjernevirksomhet har du måttet fokusere strengt på ett område, noen ganger i årevis, og oppnå innsikt og kunnskap som skiller deg fra andre.
Som i en bedrift må du kontinuerlig finpusse kjernevirksomheten din for å opprettholde konkurransefortrinnet ditt.
Bruke små deler
En programvareingeniør er ikke annerledes enn et selskap eller enhver annen profesjonell. Vi må velge og vrake hva vi lærer for å holde oss i tråd med vår kjernevirksomhet.
Å forstå det interne i hvert rammeverk vi bruker er ikke praktisk og er tidkrevende. Jeg forventer at rammeverksforfatterens er en ekspert innen rammeverksets domene, derfor trenger jeg ikke å kjenne til dets interne mekanismer.
Er ikke dette poenget med programvare — å bruke sorte bokser med funksjonalitet for å produsere et større og mer komplekst verk? Jeg tror det er det.
Til slutt kommer det ned til fokus og tid, som begge er begrenset.
Forfatter: Chuck Conway spesialiserer seg på programvareutvikling og Generativ AI. Koble til ham på sosiale medier: X (@chuckconway) eller besøk ham på YouTube.