Stefan Pettersson

Så lär du dig att programmera

Det är fantastiskt kul med det programmeringsintresse som finns idag - att så många fler har fått upp ögonen för vad som är möjligt. Hur man med små medel och lite kreativitet kan bygga fantastiska saker. Detta är även påtagligt här hos oss på Rebel & Bird, inte minst via våra kopplingar till initiativet Tjejer Kodar.

Jag som själv har programmerat ett tag ser ofta någon som kämpar med att själv komma igång och jag får ofta frågan "Jag vill lära mig att programmera, hur skall jag gå till väga?".

Här kommer några konkreta tips på hur du lär dig att programmera.

Emotionellt svårt - inte kunskapsmässigt svårt

Acceptera att det största hindret som står mellan dig och att kunna programmera är dina egna känslor - det kommer inte vara bristande kunskap, talang, "fel" programmeringsspråk, eller något liknande.

Här är några tips på saker att ta ställning för som kommer att underlätta för dig.

  • Inställning. Att gå från ingen kunskap alls till "en hel del" går snabbt, men kan vara väldigt frustrerande. Speciellt som att lära sig att programmera i väldigt stor grad är en fråga om att misslyckas och att lära sig förstå varför du misslyckats. Det är när du tar dig förbi ett fel, eller ännu hellre ställs inför frågan "hur sjutton skall jag göra det här?", som du verkligen lär dig. Var inställd på detta, ja – t.o.m. sträva efter det – istället för att bli frustrerad.

  • Mål. Målet är att lära sig - inte att direkt bygga din fullfjädrade app/tjänst/webbsajt. Acceptera att du inte kommer sätta igång att bygga din drömtjänst dag ett. Istället kommer du börja lära dig de små delarna din tjänst kommer att bestå av, utan att veta det själv. På samma sätt som du när du bygger ett hus behöver du dela upp ditt mål i beståndsdelar. Grund, väggar och tak. Väggar i stomme, fasad och fönster. På samma sätt består en webbsajt av en klientdel och en serverdel. Klientdelen består av HTML, CSS och JavaScript. Serverdelen kanske använder Python med ett ramverk som Django eller JavaScript via Node.js och Express. Och så vidare. Att greppa alla dessa teknologier direkt kan bli överväldigande.

  • Finn din drivkraft. Hitta kärnan i det som du tycker är kul. Är din motivation endast "jag skall tjäna pengar" eller "jag skall lansera nästa unicorn-tjänst" kommer du inte orka. Precis som en konstnär som finner det givande att utveckla sin förmåga med olika material och förfina sin teknik behöver även du hitta glädjen i hantverket. Det är en fantastisk känsla att göra något och se resultatet. Får du en känsla av eufori och tänker "Jag har skapat detta - från ingenting!" eller "Wow! Detta kom ur min hjärna!"? Grattis – du är på rätt väg!

  • Var inte perfektionist. Det finns inte bara en lösning på ett problem. Släpp behovet av att hitta "det slutgiltiga sättet" att bygga något. Det finns inte. Att göra något "good enough" är rätt och i detta läge är "good enough" att du lär dig. Med mer kunskap kommer du sen bättre kunna avgöra vilka för- och nackdelar en viss lösning har.

Mängden av saker du inte vet att du inte vet är väldigt mycket större än du anar. Detta är inget att oroa sig över. Med tiden kommer du förstå fler och fler delar och det är först när du vet vad du inte vet som du kan lära dig dem också.

Att sätta igång

Sätt igång så har du lyckats bättre än 90% av alla andra! Baserat på alla personer som jag talat med är det absolut svåraste att faktiskt komma igång. Sanningen är den att det inte ger dig något att bara prata om att börja programmera.
Att vänta på "rätt tillfälle" resulterar att du aldrig börjar. Att vela mellan vad som är "rätt" programmeringsspråk gör att du aldrig börjar med något. Så – sätt igång!

När du accepterat att det största hindret mellan dig och att tillägna dig kunskap är de emotionella hindrena är det just dessa du proaktivt skall tackla.

När något är okonkret är det väldigt svårt att "sätta sig ner och göra det". Red ut att luddigheter, tveksamheter och allt annat som står mellan dig och att att sätta dig ner och skriva kod.

  • Ta bort hinder. För varje konkret hinder du tar bort som står mellan dig och att sätta dig ner och programmera så ökar du sannolikheten att du faktiskt gör det. Ta bort distraktioner, se till att datorn funkar, sätt dig på en plats där du kan vara produktiv.

  • Inget händer av sig själv. Allt hänger på hur dedikerad och beslutsam du är att faktiskt göra något. Gör det du måste för att det skall bli av under dina omständigheter och din levnadssituation. Ett sätt kan vara att boka in 2 timmar i din kalender var tredje dag, se till att den tiden är fri från distraktioner och att du klarar av att fokusera.

  • Ha tålamod. Det finns inget slut på lärandet. Ju mer du lär dig desto mer kommer du förstå att du inte kan. Sträva inte efter att kunna allt utan se varje steg på vägen som en vinst. Räkna med att du kommer behöva 20 timmar av fokuserad tid innan det börjar lossna. Då kommer du ha tillräckligt många kunskapsbaserade klossar som du helt plötsligt ser hur du kan kombinera till något större. Boka in dessa 20 timmar i din kalender och ta ansvar för att de blir av.

  • Se upp för prokrastinering. Känner du igen tankar som "Jag skall bara läsa 5 böcker om det här innan jag sätter igång med det här"? Eller "Jag måste bara vet vilket är rätt programmeringsspråk"? Det är oftast en variant av prokrastinering - negativt uppskjutande. Sätt dig ner, sätt igång, hitta inte på fler anledningar till att inte sätta igång just här och nu. Det är långt mycket viktigare att du göra något än exakt vad det är.

  • Fokusera på att du lär dig, snarare än vad. Känn inte en stress över att hinna ett visst kapitel i en bok eller en viss del av kurs inom en given tid. Det viktiga är att du lär dig, och lär gör du när du gräver djupare, experimenterar, bygger vidare och testar. Lär dig i din egen takt men se till att de timmar du skrivit i din kalender blir av.

Men vad skall jag välja då?

Att lära sig något handlar oftast om att ta isär något i beståndsdelar och lära sig delarna. När man börjar se de olika delarna börjar man också se hur de kan kombineras till något större.

  • Programmeringsspråk. Det spelar ingen roll! Det finns inget "rätt" programmeringsspråk. Välj istället ett språk som är så lättillgängligt som möjligt för just dig. Något du med minsta krångel kan köra på din dator. Kanske det också kan vara så att det är det språket som någon du känner kan, som du kan rådfråga. Så fort du lärt dig mer kan du med lätthet byta programmeringsspråk, så vad du börjar med kvittar. Ett förslag är JavaScript som går att köra direkt i din webbläsare eller på datorn med hjälp av Node.js. Ett annat är Python. Har du en Mac och vill lära dig göra appar så finns Swift.

  • Läromedel. Välj något som funkar för dig. En bok, en onlinekurs eller en artikelserie. Något anpassat att ta dig från den nivå du är på just nu.

    Några boktips:

    Onlineresurser:

  • Fokusera på språket, inte allt omkring. Det kan vara väldigt lockande att direkt sätta igång med något som har en databas, en webbserver, använder 3D-grafik eller använder det där häftiga ramverket allt pratar om - men undvik det i början. Fokusera istället på själva programmeringsspråket i början så kommer alla de andra bitarna att vara mycket lättare att förstå sen. Börja istället med att göra något som på enklast möjliga sätt ger ett resultat, t.ex. i ett terminalfönster. Med jämförelsen för att bygga hus kan man säga att det är en god idé att börja med att lära sig hur man gör en grund och stabil stomme innan man testar den mest tekniskt avancerade arkitekturen med exotiska byggmaterial.

  • Sätt upp din utvecklingsmiljö. Speciellt en del onlinekurser låter dig programmera direkt i din webbläsare. Det är väldigt smidigt men kan potentiellt förhindra dig att experimentera på egen hand. Se alltid till att du vet hur du skriver och kör kod på din egen dator. Du behöver installera något som kan köra din kod och en editor för att skriva din kod i (t.ex. Atom eller Sublime Text). Programmerare hjälper gärna till med sådant här – fråga en!

  • Lär dig hitta hjälp. När du stöter på ett problem är Google din vän. För ännu bättre hjälp och mindre skräp kan du gå direkt till hjälpsamma källor som StackOverflow eller MDN (för JavaScript).

Sätt igång!

Du är redo att sätta igång. Avsätt tid i din kalender och låt inget komma i vägen, bestäm vilken väg du skall ta (spelar ingen roll vilken), undanröj alla hinder och sätt igång.