Bästa svaret
Det verkliga svaret är ”Det beror på det!”. Det beror på vilken skiva som intresserar dig mer – Front-end, Full-stack, Backend, Data-science, etc. Grunden till alla dessa kan dras ut som nedan:
- Välj din favorit programmeringsspråk. Och lär dig varje begrepp i det språket genom att öva dig att använda det i något kodproblem eller det andra. Detta kommer att lägga en bra grund för att lära sig ett annat programmeringsspråk, även om paradigmet är helt annorlunda. För att uppskatta A bör du ha smak för B, för på något sätt är allt relativt. Du skulle börja jämföra språk baserat på hur det löser vissa problem.
- Gör kod Katas. Försök att lösa samma problem på olika sätt. Tänk igenom de olika metoderna du försökt. Gör detta för varje annan kodkata du gör. Det hjälper!
- Gör ett miniprojekt för att lösa några problem. Besök det igen efter en tid och se om du kan lägga till funktioner. Du borde troligen missbruka dig själv för det dåliga jobbet du gjorde. Detta är en bra insikt. Tänk igenom dina misstag, tänk på vad som är det bättre sättet du tog. Lär dig av dina misstag. Det här är vad som är verklig upplevelse. Upplevelsen är inte i antal, utan vad du lär dig när du arbetar igenom saker.
- Välj lite miniprojekt eller bibliotekskod från Github och läs koden för att se hur något problem löses. Att läsa och tänka igenom andra hjälper en.
- Läs böcker, bloggar etc.
- Börja peka på dina tankar via bloggar. Det hjälper dig säkert att lära dig.
- Delta i möten och konferenser för att få kunskap om vad som händer runt omkring. Det kan inducera ditt lärande. När allt kommer omkring behöver vi alla en dos motivation och en känsla av syfte som framkallas då och då.
- Försök att dela dina kunskaper i möten och konferenser. Det verkar magiskt på dig – på allvar.
Specialtips: Nämnde jag, under vägen kommer du troligen att stöta på många skämtare som skulle ta bort din energi och tid och avskräcka dig från vad du gör. Att lära sig skilja kritiker från skämtare är en enorm livräddare.
Det här gjorde jag sedan min karriär började och fortsätter att göra allt även idag.
Svar
Det beror på vad du menar med programvarutekniker. Den bästa resursen för programvaruteknik jag har hittat är erfarenhet. Ha med mig ett ögonblick. De flesta svar här verkar handla om programmering, och det finns verkligen massor av utmärkta resurser för programmering (med många bra exempel i svaren här). Jag har alltid känt att problemet går sönder i tre kategorier:
- Programmering. Välj ett rimligt språk för de typer av problem du vill ta itu med idag. Lär dig det bra. Massor av övning. Massor av läsning av andra respekterade expertkoder. Skriv lite mer. Lägg till ett språk efter behov eller efter intresse.
- Algoritmer, datastrukturer, jämförande språk och den kunskap som allmänt kallas datavetenskap. Detta är vad som höjer spelet från att lösa problem i det lilla till att lösa stora problem, lösa dem effektivt (inte bara effektivt) och att förstå gränserna för lösningarna så att du kan förklara dem.
- “Software engineering ”Är en annan sak för mig än de två ovanstående idéerna. Det är den process genom vilken programvara levereras till ”kunder”. Det är konsekvent repeterbar pålitlig leverans av lösningen. Det är att förstå att ett GUI är bra för att bygga inledande proof-of-concept / prototyplösningar på ditt skrivbord, men otillräckligt för att leverera till ”produktion”. Det är förståelsen för leveransrörledningen vid varje steg och varför varje steg är gjort. Det är all automatisering och disciplin. Utan disciplin kan programvara inte skala. Jag har ännu inte sett en kurs om detta, för det mesta är det utbildning på jobbet. Och många ställen får detta fel. Misstag är kostsamma.
Kanske är den bästa metaforen jag kan ge dig att laga mat. Du kan lära dig att laga mat själv ganska snabbt. Du kan bli bra på en handfull recept och övning gör dig snabb. Steg upp det för att laga en fin måltid för vänner och familj och du kliver lite ur din komfortzon, kanske behöver du nya färdigheter, nya verktyg, nya recept. Ta en klass eller två så kan du dramatiskt öka ditt spel och lektioner spänner över allt från nattklasser på det lokala college till Le Cordon Bleu. Sedan finns det steget till ”restaurang” som ändrar allt. Det handlar nu om en tillförlitligt repeterbar leverans av mat till människor med förväntningar. Du köper, satsar, förstadierar, förbereder och verktyg på olika sätt. Processens ”industrialisering” är ”teknik”. Och du är nu en del av ett team. Och det finns en kund. Det spelar ingen roll om du är en taco-monter eller en restaurang med Michelin-stjärna, det är annorlunda. Inget arbete i klassrummet förbereder dig helt för allt arbete på jobbet.
Och du kan börja lära dig alla tre samtidigt. Förstå bara vilka av de tre färdighetsuppsättningarna du arbetar med och glöm inte de andra två färdighetsuppsättningarna. De två första brukar komma med övning, men den senare kommer med erfarenhet.