Applikasjonsgartner
Joel Spolsky skriver om hvordan man kan bruke menneskers innebygde instinkt for å irritere seg over selv den minste detalj, til noe positivt. Ihvertfall når det gjelder å lage fantastisk programvare. Det gjelder å bygge 2,54-centimeter for 2,54-centimeter (han er imperialist av avstamning, den gode Spolsky) og når man har rettet nok 2,54-centimetere så oppnår man en mile med fremdrift. Til dette behøves en svært velutviklet evne til å finne feil overalt, og aldri aldri gi seg med å fikse de tusenvisene av småting som egentlig skulle vært tatt. Man blir en slags gartner som går og luker i bedet helt til alle feil er funnet, alle hjørner er rundet av og alle gradienter går fra øverst til nederst, eller omvendt… Prisen er selvfølgelig at ens nærmeste omgivelser av og til blir offer for umenneskelig detaljfokusert kritikk når man glemmer å legge igjen dette tankesettet på jobben. Så det må man ikke. Les og lær, det er viktig å prøve å opprettholde en sånn pasjon for det man holder på med som Joel skriver om. Først da kan man bygge fantastisk programvare.
Hvordan passer dette sammen med en mer Pragmatic innstilling som tilsier at man bør stoppe når det er “godt nok”?
Personlig er jeg enig med Spolsky og pirker gjerne på både egen og andres kode. Det kan bli litt pinlig når man skal sjekke inn koden i CVS og må oppgi en kommentar på hva som er endret, hvis man har endret f.eks. stavefeil i kommentarer. Fra nå av skal jeg bare skrive “Application gardening: Picked some weeds”.
Godt spørsmål! På den ene siden skal man ha applikasjonen fri for feil og så perfekt som mulig, og på den andre skal man få noe ut av døra fra tid til annen.. Så det gjelder å finne balansen og å prøve å definere seg et mål på når applikasjonen er klar for release. Jeg har lest at de som skriver Intellij releaser betaversjoner når typ 80% av testene fungerer, så det er jo ett mål.. Fullverdige versjoner skal selvfølgelig ha 100% av testene OK.
Jeg synes forsåvidt ikke det er pinlig å sjekke inn skrivefeil heller.. Det kan faktisk fungere som en liten, velment påminnelse til den som lagde feilen om at man holder øye med hverandre så det er best å henge i stroppen :-). Det er på en måte akkurat dette saken dreier seg om, å ta alle de bitte bitte små detaljene som man bruker en eller to hjernsykluser på å irritere seg over; strømlinjeforme prosessen (og koden) så mye som mulig og gjøre det lett å jobbe på full fart forover…
Hvis du spør meg er svaret på spørsmålet ditt Fredrik, å bli en hensiktsmessig perfeksjonist.
Slik jeg ser det er det å strebe etter ideal, ikke ensbetydende med å henge seg opp i alle detaljer. Å ha fokus på å bli bedre derimot er noe vi alle kan søke, både som medmennesker og som utviklere. Som med mye annet handler det om kontekst. Målet med “game of inches” forandrer seg ut fra hva man vil oppnå. Ønsker man kodekommentarer uten noen skrivefeil, kan jeg anbefale å installere spellcheck for ditt IDE (kanskje en idè til Eclipse plug-in),
men samtidig kan man spørre seg om det er hensiksmessig. Og det er nettopp det spørsmålet bør være for oss utviklere når vi skriver kode eller designer. Er det jeg gjør nå hensiksmessig? Ønsker kunden dette? Min mening er at et system skal oppfylle de funksjonelle kravene og de ikke-funksjonelle kravene. Ingenting mer! Det kan en del ganger være vanskelig når vi synes at kunden burde ønske seg x og y. Men gjør man mer ender man med å bruke kundens ressurser ‘features’ som kunden ikke ber om.
Etter en nærmere titt på Eclipse viser det seg at det finnes støtte for spellcheck (Window->Preferences->General->Editors->Text Editors->Spelling)