noun_Email_707352 noun_917542_cc Map point Play Untitled Retweet Group 3 Fill 1

Sindre og Kent Inge har forslag til hvordan du løser kodeproblemene dine.

Tre mulige planer for ditt neste programmeringsproblem

Kent Inge Fargerland Simonsen / september 09, 2022

Tre planer for ditt neste programmeringsproblem

«For problemløserne og skøyerne blant oss, kan Plan B være en favoritt»

Synes du at det er mer enn nok metodikker, strategier, mønstre og inndelinger å holde rede på som utvikler? Her er tre planer å følge når du støter på et programmeringsproblem.

Når man har støtt på et problem som en programmerer så er der ingen mangel på mulige strategier, mønstre, taktikker, organiseringer eller andre måter man kan bruke for å løse problemet.

Problemet med dette, er at det kan være vanskelig nok å velge rett metode, om man da i det hele tatt kjenner til den “rette” metoden i det hele tatt.

Siden er ikke er noen problem i programmering som (fritt etter D.J. Wheeler) ikke kan løses med et nytt lag av abstraksjon, så her følger tre generelle planer som kan brukes når man vil finne rette løsning på neste problem.

 

Plan A: Finn en enkel og åpenbar løsning på problemet

Ikke alle problem har en enkel og åpenbar løsning. Men, for de som har det, så er denne løsningen oftes ganske så god. Måten man ser en sånn løsning på er at man ser på problemet, ser på konteksten og ser, oftest etter utallige timer, umiddelbart at problemet enkelt kan løses med noen få steg på en måte som åpenbart er både korrekt og nær optimal. Det kan også hjelpe å forsøke og feile på alle tre planene i tur og orden et eller annet utall ganger før en slik enkel og åpenbar løsning velger å vise seg.

Enkle løsninger tenderer til å raskt kunne implementeres, de krever relativt lite kode og resulterer i kode som er grei å både lese og vedlikeholde.

Et eksempel her kan være, gitt at problemet er å sortere en relativt kort liste, å bruke sort()-funksjonen som er innebygget i den plattformen man jobber i.

"For every complex problem, there is a solution that is simple, neat, and wrong."  -The Internet.

 

Plan B: Finn en artig, interessant, gøyal, fiks eller nifty løsning på problemet

For problemløserne og skøyerne blant oss kan Plan B være en favoritt. Her gjelder det å finne en løsning som muligens kan være korrekt og som samtidig er litt moro eller artig på et eller annet vis.

Denne typen løsninger er gjerne noen man selv, i øyeblikket er veldig elegante og kan gi en god slump mestringsfølelse.

Når nyhetsverdien etter hvert svinner, dog, er det en fare for at man ender opp med kode som ikke er helt enkel for andre (eller en selv en ukes tid senere) å forstå. Men, det er ihvertfall moro så lenge det varer, og noen ganger så er alternativene enda verre.

I tillegg så ender man gjerne opp med relativt lite kode i forhold til plan Z, derfor er plan B et godt alternativ når der ikke er noen plan A løsning å finne.

Som et eksempel, gitt at vi skal sortere en stor liste som er distribuert over flere maskiner og programmereren alltid har hatt lyst til å lære litt om map-reduce, å bruke map-reduce.

«Men, det er ihvertfall moro så lenge det varer, og noen ganger så er alternativene enda verre.»

 

Plan Z: Bit tenna sammen og bare løs det på den tungvinte måten

Plan Z er den siste planen i dette arsenalet, men også den mest pålitelige. Her er planen rett og slett å løse problemet på den vanskelig måte. Denne planen brukes når man ikke finner noen enkle løsninger og ikke engang noen nifty-e. Det som gjenstår da er å gjøre det på den tungvinte måten.

Dette kan involvere å dele opp problemet, analysere og modellere for å forstå det bedre, skrive masse tester og begynne med det man klarer å løse først og så ta resten etterpå. Også å hardkode store mengder regler og data havner i denne kategorien.

Et eksempel i denne kategorien er at hvis man skal sortere en liste basert på mange parametre o med kompliserte regler for rekkefølgen internt per parameter og mellom dem så kan det være at man simpelthen må sette seg ned og kode alle disse reglene i et stort og vanskelig predikat med mange tester på flere nivå.

Løsninger som kommer fra denne planen kan være tungvinte, vanskelige å forstå og vedlikeholde. Men av og til har man ikke annet valg.

Og av og til, etter å ha jobbet i plan Z en stund, så ser man at der er en Plan A eller Plan B løsning for hele eller deler av problemet likevel.

 

Artikkelen er også publisert i Kode24

Kent Inge Fargerland Simonsen
Chief Consultant and Competency Excellence lead, PhD, Tietoevry Create
Sindre Haugland Bøyum
Chief Developer and Community Lead for Front-End , Tietoevry Create

Location: Bergen office
Started at Tietoevry: October 2019
Fun Fact: Participated in setting a world record for the most simultaneous participants in a bouncy ball game.

SKREVET AV

Kent Inge Fargerland Simonsen

Chief Consultant and Competency Excellence lead, PhD, Tietoevry Create

Sindre Haugland Bøyum

Chief Developer and Community Lead for Front-End , Tietoevry Create

Del på Facebook Tweet Del på LinkedIn