I den första delen av vår serie visade vi att jobbet som utvecklare är mycket mer än att bara skriva kod.
Vi pratade om de första dagarna på ett software house, om skillnaden mellan studier och verkliga projekt och om varför erfarenhet främst skapas genom praktik.
Idag går vi vidare till frågan som nästan varje junior ställer sig. Vad borde jag egentligen lära mig?
Internet ger alla möjliga svar. Vissa säger att du måste kunna React. Andra hävdar att framtiden tillhör Rust. Ytterligare andra övertygar om att utan Docker, Kubernetes och fem certifikat är det ingen idé att skicka CV.
Sanningen ser mycket lugnare ut...
Lär dig inte ramverk. Lär dig programmering.
Den meningen kan verka märklig.
Företag annonserar ju om rekryteringar för React-utvecklare, Java-utvecklare eller PHP-utvecklare.
Varför säger vi då att man inte bör börja med ramverk? - För att ett ramverk är ett verktyg. Och verktyg förändras väldigt snabbt.
För bara några år sedan var många övertygade om att AngularJS skulle dominera i årtionden. Idag ser det helt annorlunda ut.
Du kommer att lära dig ramverk under hela din karriär. Däremot förblir sättet att tänka som utvecklare med dig för alltid.
Därför lär dig först att:
- lösa problem,
- analysera krav,
- designa lösningar,
- läsa andras kod,
- skriva läsbar kod.
Teknologi är bara ett medel för att nå målet.
Behärska ett språk riktigt väl
Detta är nog det vanligaste misstaget bland nybörjare.
Idag JavaScript. Imorgon Python. På fredag Go. Om en vecka Rust. Efter en månad C#...
Efter två månader visar det sig att inget av dem är bemästrat på en god nivå. Det är mycket bättre att välja ett språk och verkligen lära känna det.
Förstå:
- hur minnet fungerar,
- vad referenser är,
- hur undantag hanteras,
- hur kollektioner fungerar,
- vad skillnaden är mellan synkront och asynkront programmerande,
- hur debugging fungerar.
När du lärt dig ett språk riktigt väl kommer du att lära dig nya språk mycket snabbare.
Lär dig läsa dokumentation
Inte särskilt glamouröst? Mycket.
Extremt användbart? Ännu mer.
En bra utvecklare kommer inte ihåg allt. En bra utvecklare vet var man hittar ett pålitligt svar.
Tillverkarens dokumentation för ett ramverk eller en bibliotek är nästan alltid en bättre kunskapskälla än en slumpmässig forumtråd från för sex år sedan.
Det är just förmågan att söka information som skiljer de som verkligen utvecklas från de som ständigt kopierar lösningar hittade på internet.
Git är inte en "Skicka"-knapp
Om vi skulle peka ut en färdighet att lära sig så tidigt som möjligt skulle det vara Git. Inte för att det är trendigt. Utan för att i praktiken använder varje utvecklingsteam det.
Git är inte bara att spara ändringar. Det är ett sätt att samarbeta. Branching. Pull Request. Merge. Konflikthantering. Historik över ändringar.
Utan detta är det svårt att föreställa sig arbete i ett professionellt team.
Och ett råd till. Skicka aldrig ett projekt i en ZIP-fil. På riktigt.
SQL - även om du inte vill bli databasadmin
Många juniorer undviker SQL. Det är ett misstag.
De flesta affärsapplikationer använder databaser. Du behöver inte bli expert på frågeoptimering.
Men du bör förstå:
- vad en relationsdatabas är,
- hur relationer fungerar,
- vad en index är,
- vad skillnaden är mellan LEFT JOIN och INNER JOIN,
- varför en dåligt skriven fråga kan sakta ner hela applikationen.
Detta är kunskap som är användbar i nästan varje projekt.
Linux bits inte
Du behöver inte överge Windows direkt. Men det är värt att lära sig grunderna i att arbeta i terminalen.
Majoriteten av servrar kör Linux.
Kännedom om grundläggande kommandon:
- ls,
- cd,
- grep,
- cat,
- chmod,
- ssh,
kan spara massor av tid.
I början känns det konstigt. Efter några månader är det svårt att föreställa sig arbete utan terminalen.
Docker - varför pratar alla om det?
För bara några år sedan kunde konfigurationen av en utvecklingsmiljö ta hela dagen.
Alla hade olika PHP-version. Olika databas. Olika bibliotek.
Docker förenklade detta problem mycket. Det låter dig köra applikationer i identiska miljöer oberoende av dator.
Bör en junior bli expert på containerisering direkt? - Nej.
Men det är värt att förstå vad en container är och varför nästan varje modernt projekt använder Docker.
AI är en utmärkt mentor. Inte den bästa utvecklaren.
Det här är ett ämne man inte kan förbise idag.
ChatGPT, GitHub Copilot och andra AI-verktyg kan kraftigt påskynda inlärning. Under en förutsättning. Kopiera inte kod utan att förstå den.
Det är mycket bättre att fråga:
- Varför är den här lösningen bättre?
- Hur fungerar denna algoritm?
- Hur kan detta optimeras?
- Vilka är nackdelarna med detta tillvägagångssätt?
AI förklarar väldigt bra.
Men det bör inte ersätta eget tänkande.
Debuggern är din vän
I början gör de flesta utvecklare detta: var_dump($variabel);
Sedan: echo $variabel;
Och lite senare: console.log(data);
console.log(data2);
console.log(data3);
console.log(data4);
Var och en av oss började så. Men det är värt att så snabbt som möjligt lära sig använda en debugger.
Den låter dig stoppa programmet var som helst, inspektera variabler och förstå vad som verkligen händer när koden körs.
Det är en av de färdigheter som påskyndar utvecklingen mycket.
Vilken hårdvara ska man välja?
Här förväntar sig många en lista med datorer för tiotusentals kronor. Onödigt.
I början är följande viktigare än den senaste processorn:
- ett bekvämt tangentbord,
- snabb SSD-disk,
- tillräckligt med RAM,
- en stabil arbetsmiljö.
RGB-belysning får inte kompileringen att gå snabbare. Tre skärmar gör inte koden bättre heller.
Bra hårdvara ska hjälpa dig arbeta. Inte imponera på bilder (även om utseendet också spelar roll ;))
Ordlista
Ramverk
Ett färdigt paket med verktyg och bibliotek som underlättar att skapa applikationer enligt vissa regler.
Git
Versionshanteringssystem som låter dig spåra ändringar i kod och samarbeta flera utvecklare på ett projekt.
Docker
Plattform som möjliggör att köra applikationer i isolerade containrar, vilket gör att miljön fungerar identiskt på olika datorer.
Debugger
Verktyg för att analysera programkörning steg för steg och hitta buggar.
SQL
Språk för att kommunicera med relationsdatabaser.
Sammanfattning
En bra utvecklare kan inte alla teknologier. Inte alla ramverk. Inte hela dokumentationen.
En bra utvecklare har solida grundkunskaper.
Vet hur man analyserar problem.
Kan hitta information.
Förstår hur teknologier fungerar.
Och just därför kan hen snabbt lära sig nya verktyg.
Ramverk kommer att förändras.
Språk kommer att utvecklas.
Sättet att tänka kommer att förbli den mest värdefulla färdigheten genom hela karriären.
I nästa del visar vi hur en senior utvecklares vardag ser ut, varför code review är den bästa skolan för programmering, vad Clean Code egentligen är och varför frasen "det funkar hos mig" framkallar ett nervöst leende hos många utvecklare.
