Fem utraditionelle råd til nybegynderprogrammører

Python, F# eller Java? Og hvad skal jeg kaste mig over efter 'Hello World'? For nybegyndere i programmering er der et par råd, som ikke står i lærebøgerne.

Måske er du ung og kigger frem mod studievalget, eller måske vil du gerne lære et nyt fag. Eller måske er du bare nysgerrig. Der findes mange gode lærebøger og online-vejledninger, der kan hjælpe nybegyndere i gang med at lære at programmere, men især for dem, der går i gang på egen hånd uden en mentor, så her er en håndfuld råd, som du ikke finder i lærebøgerne.

Hvad skal jeg programmere?

Du har skrevet 'Hello world' og har måske også gennemført et par programmeringsøvelser. Nu har du styr på grundlæggende syntaks og kender dit udviklingsværktøj, men føler måske, at du har brug for at lave noget, der kan noget rigtigt, før du bare øver videre.

Her er det let at gå i stå, fordi du tænker, at dit program skal kunne ét eller andet nyt. Men det behøver det slet ikke. Som dette blogindlæg påpeger, så er det helt i orden at genopfinde den dybe tallerken, hvis man er ved at øve sig på at blive keramiker.

Denne journalist, som selv er i færd med at genopfriske sine særdeles rustne programmeringsfærdigheder, skriver eksempelvis forskellige udgaver af en simpel terningrulsapplikation, hver gang et nyt sprog skal læres. En simpel lommeregner er også et godt eksempel.

Ingen af disse applikationer er noget, verden har brug for, men det er enkle projekter, der giver mulighed for at prøve sine spæde færdigheder af på at bygge en færdig applikation, der er et vigtigt skridt videre fra programmeringsøvelserne.

Sprog bliver forældede

Valget af programmeringssprog er nærmest religion blandt udviklere, og det gælder ikke mindst, når spørgsmålet lyder, hvilket sprog der egner sig til nybegyndere. Men det er vigtigt at være opmærksom på, at der kan være mange forskellige grunde til, at man begynder at programmere.

Ligesom nogle kaster sig over faget, fordi de gerne vil have et job som softwareudvikler, så ender andre med at blive selvlærte programmører, fordi programmering er et nødvendigt gør-det-selv-redskab i et andet projekt - som eksempelvis at få en hjemmeside op at stå.

Det vigtigste er imidlertid ikke, om du begynder med C++ eller PHP, men at du lærer de grundlæggende principper, for hvis du står foran 30-40 års softwareudvikling, så skal du være klar til at sadle om undervejs.

Sprog og værktøjer bliver nemlig forældede eller går af mode, som det påpeges i dette blogindlæg om Ruby on Rails.

Derfor er dit valg lige nu ikke så vigtigt, som at du senere er parat til at lægge sproget bag dig og gå videre med noget nyt, når det er dét, der er brug for. I gør-det-selv-verdenen kan et svingbor stadig bore fine huller, men hvis du vil være tømrer, så vil kunderne nok foretrække, at du stiller op med en elektrisk boremaskine.

Læs også: Her er læsernes 20 bud på programmeringssprog, de gerne vil lære

Så lær hvad som helst

Af samme grund er det heller ikke vigtigt, om du vælger lige det ene eller det andet sprog. Det vigtigste er, at du vælger et sprog, hvor vejledninger, dokumentation, værktøjer og muligheden for at få hjælp passer til dit temperament.

Hvis du vil ud og arbejde med softwareudvikling, så er der nemlig ikke ét eller to gyldne programmeringssprog, der sikrer dig beskæftigelse. Det skifter hele tiden, og sprogene går ofte gennem et forløb fra up-and-coming til mainstream dominans videre til løbende vedligeholdelse og endelig til obskur 'vi håber, det virker længe nok til, at vi har noget nyt klar'.

Som sagt handler det at være udvikler ikke om at kunne C++ eller C#. Det vigtige er eksempelvis at kunne finde ud af, hvordan en problemstilling i den virkelige verden kan løses med objektorienteret programmering, og hvordan det vil se ud med et funktionelt sprog i stedet.

Læs dette blogindlæg for et godt argument for, at dit valg af sprog ikke er vigtigt, men at der selvfølgelig er sprog, der lige her og nu kan give bedre chancer for at begynde en karriere som softwareudvikler.

Læs også: Funktionelle sprog er tilbage efter års automatisk brug af objektorientet programmering

Selv de dårlige sprog

Bortset fra nogle få sprog, der udelukkende er skabt for at frustrere dataloger, så er der ingen sprog, der er rigtigt dårlige. I dette blogindlæg argumenteres for, at QBASIC stadig holder.

BASIC var ét af 80'ernes mest populære begyndersprog, men det er også et sprog, som virkelig indeholder nogle af de ting, der er decideret fy-fy i dag. Man kan endda argumentere for, at BASIC lærer dig at programmere på en forkert måde.

Men det vigtigste er at komme i gang og kunne holde begejstringen ved lige. Det kan være svært, hvis hver ny idé kræver et mindre slagsmål med at oprette en grafisk brugerflade. Så hvis BASIC er dét, der får dig i gang med at skrive mere end 'Hello world', så er det ikke et rigtig dårligt sprog, hvis man ser det som et skridt på en længere rejse.

Læs også: Hvor mange sikkerhedshuller forsvinder med mere sikre programmeringssprog?

Ignorér dem, der siger, dit valg er forkert

Der findes mange softwareudviklere, der er tålmodige og gerne vil lære fra sig på forummer eller code camps. Men der findes også mange, der ikke orker endnu en nybegynder, der spørger om noget, der blev besvaret i femte lektion på første semester af datalogistudiet.

På Reddits underforum for nybegynderprogrammører dukker trådene med jævne mellemrum op om tonen, visse erfarne programmører bruger over for nybegyndere. Det er især dem, der søger hjælp online på forummer som Stack Overflow, der oplever at blive irettesat på en knapt så pædagogisk vis.

Det skal man ikke tage så tungt. Ja, det er en god idé at stikke en finger i jorden og prøve at blive fortrolig med søgefunktioner på disse forummer og lige læse retningslinjerne igennem. Ofte er der særlige underforummer for spørgsmål fra begyndere. Og lad være med at bede om svaret på de opgaver, du får udleveret på studiet.

En klassisk trigger for de erfarne programmører, er valget af sprog (se ovenfor). Det er de erfarne programmører, der bør lære at tale pænt, for begynderen er slet ikke nået dertil i sin læreproces, hvor valget af sprog eller platform er baseret på erfaring, men snarere på tilfældigheder. Så til de erfarne: Bid sprogdebatten i jer og giv en hjælpende hånd eller find på en undskyldning for at lade være. Ingen får noget ud af at skræmme en begynder væk med en lang rant om, hvorfor PHP er det helt forkerte valg.

Eller lad helt vær!

Der er stor efterspørgsel på softwareudviklere, men bid mærke i, at det handler om at udvikle software, og det omfatter mere end blot at kunne implementere 10 forskellige sorteringsalgoritmer i C++. I denne artikel fra Techcrunch lyder anbefalingen, at man ikke skal lære at programmere.

Der tales ganske vist meget om, at alle burde lære programmering i skolen, og hvordan vi mangler folk til Java, eller hvad der nu lige er efterspørgsel på for tiden.

Men branchen har først og fremmest brug for folk, der - som skrevet oven for - kan omsætte virkelighedens problemer til noget, der kan løses med en computer. Det er dog noget, branchen selv kan have lidt svært ved at indse, og derfor bliver der lige nu mest spurgt efter programmører og ikke problemanalytikere.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (24)
Ditlev Petersen

En eller anden af de store skrev engang, at folk, der var begyndt med BASIC, var ødelagte for livet. Det er ikke rigtigt. Folk, der er begyndt med BASIC, har i den grad lært behovet for struktur at kende.
Til gengæld kan de blive lidt for glade for "bondage-and-disciplin" sprog.

Frithiof Jensen

Tag et eller anden plat Kina ting eller legetøj og få det til at gøre noget sjovt.

http://spritesmods.com/?art=main

Forfærdende* få programmører har nogen ide om hvad det foregår inde bag deres yndlingssprog og alt for mange har masser af intelligens men ikke nok fantasi ;-)

*) Ja, det vil sige - jeg har tjent ret gode penge på Board Support Packages og Linker Options, fordi jeg er fra "dengang der var dinoer" ... men nogen skal jo tage over.

Ivo Santos

Jeg lærte faktisk en hel del ting om både bash programmering og fandt et par gode tricks efter jeg endevendte en meget gammel apache version, altså version 1.3.0.
Så jo, det bedste man kan gøre at kaste sig ud i sindssyge ting.
Det lykkedes mig oven i købet at finde et par fejl, hvilket jeg egentlig ikke havde regnet med for nogle af de fejl jeg fandt eksistere åbenbart også i den seneste version som er 1.3.42, hvilket jeg ikke helt havde regnet med, men sikkert er det at det var en oplevelsesrigt projekt.

Torben Mogensen Blogger

Når man vil lære at programmere, kan det være fristende at bruge nogle af de avancerede biblioteker, der tillader grafik eller interaktion. Men efter min mening, bør man ikke bruge biblioteksfunktioner, som man ikke ved præcis, hvad gør. Så det er f.eks. i orden at bruge funktioner såsom kvadratrod, tekstlæsning/skrivning og sågar funktioner, der indlæser et bitmap i et array eller omvendt. Det kan godt være, at dine programmer ikke er specielt sexede, men du skal kunne forklare præcis, hvad der sker i hver linje i din kode. Ellers har du ikke lært at programmere, men blot at kopiere og mutere.

Carsten Hansen

Beregning af kvadratrod via programkode var et af mine første programmer. Derefter vidste jeg en del om flydende kommatal og manglende præcision samt uendelige løkker.

Når man har opnået kendskab til den manuelle beregning, så er det eneste rigtige selvfølgelig at bruge en standardfunktion, hvis man kan kende forskel på SQR() og SQRT().

Hvis man har problemer med at beregne SQRT(2), så kan man snyde ved at måle et A4-papir med en lineal: 297/210 = SQRT(2)
https://www.youtube.com/watch?v=5sKah3pJnHI

Esben Nielsen

Jeg tror uddannelserne begår en stor fejl ved at bruge sprog som Java og C# i undervisningen: Da sprogene bruges i virksomhederne, tror de studerende, at de skal blive gode til netop det sprog, og ikke lære programmeringsteknikker generelt.

Derfor bør uddannelsesinstitutionerne vælge sprog, som ikke står i job-opslagene.

Christian Nobel

Og selv om det er politisk ukorrekt, så er Basic faktisk ikke helt tosset, især hvis man holder sig til en simpel Basic og det letter også forståelsen hvis man er tættere på jernet, og ikke omklamret af et framework.

Olimex har denne lille dims, som kan tilsluttes en monitor og keyboard, og så programmeres i Basic - og man kan styre porte og tænde og slukke LEDs, dvs. direkte belønning for indsatsen:

https://www.olimex.com/Products/Duino/Duinomite/DUINOMITE-MINI/open-sour...

Why Johnny can’t code:
http://www.salon.com/2006/09/14/basic_2/

Thomas Nielsen

Synes der er verden til forskel i hvordan du skyder dig selv i foden, om du bruger native-, managed- eller script-sprog. Sjældent at man har uendelig tid til at starte forfra :)


Der menes jo ikke et valg der gøres foran et specifikt projekt, men et valg der gøres foran processen i at lære at programmere. Netop dér har man netop "uendelig" tid. Foran den specifikke opgave, vil jeg tro at få vil være uenige i, at man bør have lært at programmere først og først derefter begynder at kigge på at læse en egentlig opgave. Vælger man imidlertid at lære henad vejen, hvilket bestemt også kan give mening, må man acceptere at starte forfra når den proverbiale hammer ikke længere passer til sømmet eller acceptere det resulterende kompromis, og så i øvrigt være glad for at man jo faktisk lærte at programmere alligevel, selvom produktet ikke blev det man sigtede efter :-).

Daniel Korsgaard

Der er ofte rigtig mange nye som er interesserede i at gøre noget med en computer, men ikke gider "spilde tiden" ved at lære et "forkert" programmerings sprog. Og de bliver tit frustreret når man siger at der ikke er et "forkert" sprog.

Og de kan oftest ikke forklare hvad det rent faktisk er de vil med computeren. De har en masse ideer, men kender ikke ordene der skal bruges til at formidle dem.

Så jeg har efter hånden vendt mig til at sige "Python". Og når først de er kommet igang, så finder de hurtigt ud af hvad der rent faktisk interesserer dem. Og løber i den retning i stedet for.

Og netop fordi Python er så "nemt"/"ligetil" så spilder de ikke tiden med vanvittigt tekniske compiler fejl, som bare er demotiverende for at prøve noget nyt.

Thomas Nielsen

Jeg tror uddannelserne begår en stor fejl ved at bruge sprog som Java og C# i undervisningen: Da sprogene bruges i virksomhederne, tror de studerende, at de skal blive gode til netop det sprog, og ikke lære programmeringsteknikker generelt.


Jeg er ikke enig. Hvis der er nogen som kommer ud fra en uddannelse med den nævnte holdning, er det noget andet de ikke har lært på uddannelsen og ærligt talt synes jeg ikke jeg møder den pågældende form for naivitet ret ofte. Det ville svare til at tvinge danskstuderende til at praktisere grammatik på islandsk for ikke at de lære den danske udenad.

Anne-Marie Krogsbøll

Da min ene søn var 6-7 år, havde han pludseligt på egen hånd via sin commodore64 og en båndstation programmeret sit lille lego-tog til at køre frem og tilbage på skinnerne, hvilket han stolt præsenterede for mig. Triumf!

Ingen hjælp fra mig, for det var langt over mit niveau. Jeg kan intet programmering - jeg aner ikke, hvordan han gjorde :-) Men det siger mig, at Basic (for tror jeg, at det var) må være ret velegnet til at lære grundlæggende programmering (hvis jeg nogensinde skulle få sådanne lyster).

Esben Nielsen

Jeg er ikke enig. Hvis der er nogen som kommer ud fra en uddannelse med den nævnte holdning, er det noget andet de ikke har lært på uddannelsen og ærligt talt synes jeg ikke jeg møder den pågældende form for naivitet ret ofte. Det ville svare til at tvinge danskstuderende til at praktisere grammatik på islandsk for ikke at de lære den danske udenad.

Den forstår jeg ikke:
Det eneste jeg kan se man ikke har lært ved ikke at blive undervist i Java eller C#, er detaljerne i Java eller C#. Og da disse alligevel er forældede om 5-10 år, skal en uddannelse netop ikke spilde studerendes tid med at lære dem den slags, for det skal man alligevel løbende indlære på jobbet. Man skal derimod have værktøjerne til at forstå de nye teknikker og bruge dem rigtigt.

Du kan slet ikke sammenligne programmeringssprog med menneske sprog. Din analogi holder derfor ikke. (Derudover beskæftiger dansk-studerende rent faktisk sig også med de andre nordiske sprog.)

Baldur Norddahl

Det ville svare til at tvinge danskstuderende til at praktisere grammatik på islandsk for ikke at de lære den danske udenad.

Det svarer til at man på sprogstudier lærer lidt latin.

Der er simpelthen ikke tid til at lære et sprog i dybden hvis man også skal lære noget om forskellige sprogtyper. Dem der kun når et sprog ender som håndværkere i stedet for ingeniører på grund af manglende viden og overblik.

Rune Jensen

Det ville svare til at tvinge danskstuderende til at praktisere grammatik på islandsk for ikke at de lære den danske udenad.

Da jeg arbejdede i Island, skulle jeg jo lære Islandsk, og så skal sådan lærdom jo bruges. Så jeg gik ud for at købe smøger og bad om "et packa Prince og et packa eldspytir".

Jeg fik en pakke prince og en dåse Egil's Bitter, som iøvrigt er non alkohol øl.

Islandsk er nu ikke så svært. TV hedder f.eks. sjónvarp og computer hedder tolvu og sådan er det hele vejen igennem.

De har han og hun køn, ved hankøn ender ordene på -ur og hun køn ender de gerne på -ir.

Jeg spurgte for sjov en indlænding om ordet ur var hankøn, så man sagde urur, men det hedder faktisk klocka, og det er så hunkøn. Så røg den joke.

Hvorom alting er, så har jeg lært mig, at det absolut første man skal lære på et nyt sprog er "Hvordan siger man dette på [indsæt sprog]". Det gør det nemmere at arbejde sig op fra intet ordforråd, og man får ordet udtalt også.

Man kan vel for så vidt også gøre det samme med programmeringssprog. F.eks. spørge hvordan man laver en løkke i X-sprog. Syntaksen er meget forskellig fra basic til assembler til javascript her.

Anne-Marie Krogsbøll

Rune Jensen:

Der er intet man ikke kan lave, hvis man har dokumentationen.


Det har du ret i - jeg savner i den grad, at man gør sig umage med manualer og dokumentationer på samme måde, som jeg synes, man gjorde "i gamle dage".
I de gode gamle windows 3.1-dage kunne jeg oven i købet ud fra en på loppemarked indkøbt DOS-manual foretage mindre indgreb i BIOS og partitioning på egen hånd. Den var helt genial i sin opbygning, virkeligt gennemtænkt, logisk og overskuelig.

Ak ja - det var den gang.

Claus Leth Gregersen

Jeg tror ikke at sproget betyder det store, det er nok nærmere vigtigt om man er villig til at bruge tiden det tager at mestre det at programmere.
Uddannelse er en stor hjælp men det kan heller ikke stå alene, det kan dog lede en på den rette sti og lære en at have et øje for de vigtigste aspekter og faldgruber.

Personligt hader jeg når der går "programmerings sprog" i den, fokus forsvinder lynhurtigt fra problemet der skal løses. Jeg vil påstå at en kvaliteten af udvikleren betyder alt og sproget indenfor rimelighedens grænser er sekundært.

Jeg savner absolut ikke trykte dokumentation, stackoverflow er da et af det 21 århundredes nye 7 vidundere :)

Thomas Nielsen

Den forstår jeg ikke: Det eneste jeg kan se man ikke har lært ved ikke at blive undervist i Java eller C#, er detaljerne i Java eller C#. Og da disse alligevel er forældede om 5-10 år, skal en uddannelse netop ikke spilde studerendes tid med at lære dem den slags, for det skal man alligevel løbende indlære på jobbet.


Min pointe er, at uanset hvad man vælger som eksempelsprog, kan man lære at programmere. At tvinge en indsigt igennem hos den studerende; at sproget ikke hverken kan eller skal betragtes som et endeligt valg, finder jeg arrogant, når man kan nøjes med at fortælle dem det. De fleste erkender det temmelig sikkert helt automatisk båret af den samme nysgerrighed som fik dem til at vælge studiet. Da jeg læste var eksempelsprogene C++ og MASM krydret med en håndfuld specialanvendelses-sprog. Det har da ikke fået mig til at hænge fast dér.

Christian Nobel

Derudover plejer jeg at forholde mig til Tiobe indekset - se http://www.tiobe.com/tiobe_index - der over en 15-årig periode har peget på Java.

Uha uha, sidste gang jeg forholdt mig til Tiobe herinde blev jeg hånet helt ned i kælderen af sprogsnobberne - men det var måske fordi at jeg tillod mig at referere til Tiobe omkring at Delphi/Object Pascal stadig bliver brugt i rimeligt omfang.

Log ind eller Opret konto for at kommentere
Pressemeddelelser

Welcome to the Cloud Integration Enablement Day (Bring your own laptop)

On this track, we will give you the chance to become a "Cloud First" data integration specialist.
15. nov 2017

Silicom i Søborg har fået stærk vind i sejlene…

Silicom Denmark arbejder med cutting-edge teknologier og er helt fremme hvad angår FPGA teknologien, som har eksisteret i over 20 år.
22. sep 2017

Conference: How AI and Machine Learning can accelerate your business growth

Can Artificial Intelligence (AI) and Machine Learning bring actual value to your business? Will it supercharge growth? How do other businesses leverage AI and Machine Learning?
13. sep 2017
Jobfinder Logo
Job fra Jobfinder