Gå videre til hovedindholdet

Erfaringsvisdom til begynderprogrammøren

Mens jeg sad og skrev på min devlog, slog det mig: "Hvor er det rart egentlig at øse ud af sine erfaringer og give en del af sig selv til lidt af verden". Lad mig give lidt mere. Du kan i øvrigt ikke stoppe mig, for det er mig, der har "Udgiv"-knappen *gnæk, gnæk*

Det følgende er møntet til begynderprogrammøren, og det er generelle råd, som jeg måske selv godt kunne have brugt, da jeg startede med at programmere for over 25 år siden.

Vi lever i en verden fyldt med meninger og ekspertråd. I vores hyperoptimerede performance- og perfekthedskultur, skal det helst fremstå som om vi er fejlfri, men sandheden er jo, at det er umuligt. Og jeg tror, at mennesker, der prøver at opretholde den her perfekthedsillusion, har potentialet til at krakelere totalt, fordi der er områder, hvor de ikke kan leve op til deres egne krav.

Har egentlig aldrig følt, at jeg skulle vide alt, men jeg ville gerne have "styr på mit shit", hvis jeg blev spurgt om noget. Jeg er ikke bleg for at indrømme, at der er områder, jeg ikke har styr på. Ej heller er jeg typen, der kan læse en bog, og så klæber alting bare fast. Nej, jeg skal prøve ting af, før de sidder på "lystavlen".

 Jeg er f.eks en dør til matematik, men det skal satme ikke hindre mig i at programmere. Nøgleordet her er nysgerrighed. 

De fleste barrierer er dem vi sætter i hovedet på os selv. "Nej, det kan jeg nok ikke" - det er den værste, mest vanvittige sætning, du kan fortælle dig selv. Gu' kan du det, hvis du har viljen. Er vi enige? Godt. Ellers skriv "Jeg kan det, jeg sætter mig for" mange gange på en tavle et sted.

Nå.. Nu går det løs.

1. og absolut vigtigste råd: Tro på dig selv. Du kan ikke vide alt. Der vil altid være nogen, der er dygtigere end dig på forskellige områder. Og hvem har egentlig patent på, hvornår man er "god nok"? Ingen. Det er en tilstand, hvor man godt selv kan føle, når niveauet er der, hvor tingene sidder lige i skabet. Lyt til kritik, men lad være med at lade dig gå på af den. Som i nogensinde! Var det informativ kritik eller usaglig kritik? Vend kritikken på hovedet, og se det som en udfordring til dig for at blive klogere.

2. Vær nysgerrig. Måske synes du pointers er megasvært. Og du har ret, der findes en del koncepter, som er svære at forstå. Måske har du læst på stoffet flere gange, og forstår det stadig ikke? Se der er problemet - slip teksten, og kom i gang med at teste problemet af i praksis: Åbn kodeeditoren, tast problemkoden ind, fyr op for debuggeren, og se hvad den gør.

3. Vær en ven. Det lyder banalt, men jeg har set så mange store arrogante røvhuller ude på nettet bruge tid på at skræmme nybegyndere væk. Jeg krummer tæer, når jeg ser RTFM i supportfora ("Read The Fucking Manual"). Jeg ved ikke hvor stort problemet er generelt, men lov mig at du aldrig bliver den type, uanset hvor dygtig du bliver. Det er en uskik at nogle forsøger at skræmme andre væk, og det gavner absolut ikke branchen.

4. Find din egen sti. Elsker du Javascript og PHP, men får at vide af andre programmører, at det ikke er det rigtige, så fuck dem. Ja.. Seriøst. Det vigtigste er, at du har det sjovt, og at du får løst dine opgaver. Længere er den ikke. Jeg har hørt folk hade Javascript lige så længe, som jeg har udviklet websites og selvom sproget har sine whatthefuck-moments, så er det et sjovt sprog, og har vist sit værd gennem mange år. Nu er det praktisk talt livsnerven i WebAssembly, som baner vejen for, at vi kan programmere i andre sprog på klientsiden i browserne. Det er da et sjovt paradoks?!

5. Lad være med at tro, at du skal opfinde alting selv*. Du ender med at brænde ud, inden du kommer i gang med kernen i dit projekt. Brug de åbne kodebiblioteker, der findes på nettet. Skrev Apple MacOS fra bunden? Nej. Det er baseret på åben Unix-kode. Åben kode er virkelig en gave: Du får gennemtestet, ofte hyppigt opdateret kode, og du kan fokusere på andre ting, som er vigtige for dit projekt. (* = Medmindre du altså vil udvikle deciderede libraries)

6. Lav MVP. Minimum Viable Product. Kend dit produkt og din målgruppe. Lav kun akkurat det, der skal til for at få din applikation hurtigt ud af døren. Det lyder dovent, men vi kan ofte bruge så sindsygt meget tid på at håndoptimere kode. Du kan _altid_ vænne tilbage, og optimere senere. Jeg har brugt timer og dage på at prøve at forhåndsoptimere dele af min kode, som aldrig kom i nærheden af at skulle yde det, som jeg prøvede at optimere udfra. Så glem det. Compileren er oftest smartere end os dumme mennesker. Hvis du er uenig i ovenstående, så prøv at tænke på, hvor meget af koden, der har direkte relevans for kunden eller din slutbruger. De ser oftest kun brugerfladen. Hvis verden var indrettet korrekt, så blev der lavet film om Steve Wozniak fremfor Steve Jobs.

7. Erfarne programmører laver også fejl. Jeg laver selv, og har også set andre meget erfarne programmører lave det værste slamkode. Det gør man altså bare indimellem, sådan er det. Jeg har set arkiteturmæssigt lækker kode, som var et helvede at arbejde med, fordi der var så mange abstraktionslag, at man helt glemte, hvad koden egentlig skulle gøre.. Og så var den tilmed langsom og svær at fejlsøge. Er "poleringen" så umagen værd?

Kommentarer

Populære opslag fra denne blog

Brokkeindlæg - om Open Source vs. Closed Source

Jeg er ikke negativ i dag - har bare lige nogle ting der skal ud... :-) Jeg er træt .. træt af at høre om alle kompatiblitetsproblemerne, der er med Open Source-software. Der er så mange artikler på nettet, hvor diverse firmaer/organisationer "disser" Open Source-produkter, fordi det er svært at vende folk til at bruge det nye Open Source-system frem for det de er vant til. Man hører tit om "NU skifter by/afdeling/skole X til Open Source", og så et halvt år senere - så hører man "Jaeh.. vi prøvede, men det viste sig ikke at være en rentabel beslutning". En af årsagerne, tror jeg, er oftest at man glemmer, at hvis man skal indføre Open Source i sin organisation, så skal ALLE være indstillet på at skifte, og være indstillet på at det kræver en indkøringsfase og nogle kompromis'er. Lad os lege du har en virksomhed (måske har du) ... Din kontordame, lad os kalde hende Magda... Hun har måske været vant til Microsoft Word i 14 år, nu skal hun pludselig

Danmark i fare for at blive hægtet af på det semantiske web?

Forleden læste jeg i Randers Amtsavis, en lille artikel om det semantiske web. Det semantiske web er et begreb (og et buzzword) for "et intelligent internet" - altså et internet der kan hjælpe dig med at træffe logiske valg, udfra dine søgninger, og din handlemåde på nettet. Man kan sige, at når du ser Google tilpasse reklamerne efter hvilket søgeord du har skrevet, så er det en slags forsmag på det semantiske web, men det indeholder rigtig meget andet. Det lyder meget abstrakt, så lad os tage et eksempel: Forestil dig, at du sidder og leder efter en billig afgang fra Billund, fordi du skal på forretningsrejse. Når du har valgt en destination, dukker hjemmesiden op og spørger dig, om du også ønsker at leje et hotelværelse under dit ophold, fordi den kan læse i din kalender (som du selvfølgelig har online), at mødet varer fra 18-22 (tænkt eksempel), hvorfor du nok næppe springer ud i din bil for at køre hjem, hvis der er langt. Forestil dig så at du sletter mødet i din ka

Lille morgengrin på Kristi "Flyvdag"

Der skal ikke så frygtelig meget til at more mig, specielt ikke sådan en Kristi Himmelfartsdag. Jeg går med en lille spirende spiludvikler i maven, og derfor har jeg kastet mig over at prøve at udvikle mobilspil til Android. Derfor hentede jeg her til morgen kildekoden til AndEngine, en open source android spilmotor. For ligesom at forstå logikken bag, kigger jeg som regel i koden først. Det er den store force ved Open Source-projekter at man kan det. Stor var morskaben da jeg så en revisionsændring i kildekoden (-// betyder noget er fjernet fra tidligere revisioner, + tilføjet i ny) .. -// case Surface.ROTATION_0: -// /* Nothing? */ -// break; -// } + case Surface.ROTATION_0: + /* Nothing. */ + break; + } Nothing? .. Yes.. Nothing :)