lørdag den 6. marts 2021

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?

Devlog #1

Velkommen til den første devlog.

Her vil jeg dele mine tanker omkring udviklingen af mine sites, i dag om handicapguiden.dk. Dels fordi jeg synes at det er skægt at kigge tilbage på om nogle år, men også for at andre kan se, hvilke udfordringer, der er med at bygge et større website. Også for at bryde illusionen om, at det at bygge og drive et website er venstrehåndsarbejde.

On with the show!

Handicapguiden har fået sig en ny forside. Den skulle gerne være lidt mere indbydende, uden dog at være prangende. Jeg synes et stort problem for mange websites i dag er, at der er for meget støj

Det kan man ikke just sige om Handicapguidens design. Ved første øjekast synes designet måske lidt kedeligt, men det er med fuldt overlæg (godt reddet, hva'? ;)). Nej, Simplicity is king. og jeg synes faktisk, i al beskedenhed, at jeg rammer balancen i, at fokuset ligger på informationerne.

Samtidig har jeg været ved at tweake søgemaskinen lidt. Hæ, Ikke twerke, men tweake... Optimere. Jeg er stadig ikke helt tilfreds - og den skal opsættes anderledes end jeg er vant til, så det tager tid. Internt fungerer det sådan, at den søger på sitets navn, beskrivelse og "tags". 

Det vil sige, at hvis jeg opretter et site, der tilbyder ferier - så tagger jeg informationerne med "ferie", og så skulle søgemaskinen gerne samle alt op, der er opmærket med ordet "ferie". Men samtidig skulle den også gerne indeksere, når folk søger på "ferieophold", og det har jeg lidt udfordringer med.

Det løser sig altsammen på et tidspunkt. Planen er klar: Søgemaskinen skal kun tolke en del af ordet, men jeg vælger også at guide brugeren lidt mere i retning af, hvad jeg har tænkt: I øjeblikket består søgefeltet bare af en tom kasse - der skal være en autocompleter - dvs. at Handicapguiden foreslår søgeord i takt med, at folk skriver i søgeboksen. Dermed er der større chance for, at brugeren rammer noget, som jeg har tænkt på. Næste skridt i AI-teknologi kommer måske, når systemerne selv finder afledte ord til søgningerne. Det kunne jeg godt tænke mig at udforske mere på, men jeg tvivler på, websitet har databaseplads nok på nuværende tidspunkt. Og så ved jeg ikke helt, hvad det ellers kræver.

Derudover arbejder jeg på at målrette søgninger lidt mere efter, hvor folk befinder sig. Hvis de har givet mig lov til at få deres omtrentlige lokalitet, så kan jeg præsentere dem for søgeresultater, der ligger i nærheden af hvor de bor. Det er et område, som jeg ville ønske, jeg havde tænkt på, da jeg startede med at oprette links på Handicapguiden, men hvis jeg skal koble postnr og GPS-koordinat på alle links, så er det nok nu, det skal gøres - fremfor når der er oprettet 5000 links i systemet om nogle år ;)

Ovenstående er et glimrende eksempel på, hvordan ens egne krav ændrer sig i takt med at man arbejder mere og mere med tingene.

Til sidst lige et lille opråb:

- Kære website-ejere, bring RSS-feeds'ne tilbage og send mig et tip. De er et glimrende eksempel på en lille ting, der kan have betydning, når man skal eksponere sit indhold og produkter til omverdenen.

Jeg drømmer om at vise mere end blot tekstlinks. Jeg vil vildt gerne være med til at hjælpe butikker og foreninger til at vise nyheder og nye tiltag frem via Handicapguiden, men det kræver, at muligheden er der - og ved at vores kommende webcrawler automatisk trækker nyt indhold, så kan I endda helt selv styre, hvad der skal fremhæves.

Lad os se hvad fremtiden bringer, jeg er i hvert fald spændt. Vi skrives ved i næste devlog.

Devlog #2

Hov! Jeg proklamerede jo tidligere, at jeg ville skrive om mit arbejde med Handicapguiden.dk Der er sket en del - jeg arbejder stadig på at ...