Bästa svaret
Många människor frågar mig hur att lära sig programmering från grunden. Från detta svar lär du dig hur du gör det. Jag programmerar i 20 år. Jag delar mina erfarenheter och människor som jag har hjälpt till i denna karriärutveckling.
Svaret skrevs ursprungligen på min blogg och fick 30 000 visningar och 1 000 röster på Wykop – polska reddit-liknande webbplats. Njut!
Många människor frågar mig hur man lär mig programmering från grunden. Varje dag läser jag kommentarer av sådana slag. Till exempel arbetar någon inom ett annat område och vill bli programvarutestare. Eller han / hon arbetar inom IT men vill hoppa på en ny nivå och börja programmera. Alla dessa människor har en sak gemensamt. De vill börja programmeringsresan. Men detta område är så brett att de inte vet hur man ska börja. Och alla berättar andra saker om hur man gör det.
Från det här svaret lär du dig hur du börjar programmera från grunden. Du kommer också att få några råd som hjälper dig i framstegen. Så låt oss börja:
För att lära dig hur du kodar måste du följa dessa steg:
1. Titta runt
För närvarande är programmering ett mycket brett område. Så det är bra att titta runt och se i vilka riktningar du kan gå. För om du vet möjliga sätt kan du välja rätt för dig. Det hjälper också att välja teknik du bör lära dig.
Till att börja med kan jag berätta om webbplatsprogrammerare . Det här är människor som använder till exempel WordPress eller annat innehållshanteringssystem (CMS) och med hjälp av sina färdigheter justerar de webbplatsen så att den fungerar som klienten förväntar sig att den ska göra. För att göra det behöver sådana människor mest känna till JavaScript, HTML och CSS.
Webbplatsutvecklare – detta är antagligen den mest populära tolkningen av en “programmerare” i världen.
Men programmering handlar inte bara om WordPress-webbplatser. Det är mycket mycket mer. Programmering är indelad i flera realer. Först kommer jag att ge dig tre exempel på frontend-riken. Frontend-programmering är programmering av något som användaren / klienten ser. Ett gränssnitt. Med korta ord:
Webapp-programmering – bygga onlineapps för företag (till exempel din bankapp eller filmjämförelsesapp). Detta är specifika applikationer som fyller behoven hos en specifik grupp av användare. De tjänar inte för att hantera innehåll (som WordPress) utan för att hantera processer (det vill säga så att människor i korta ord kan slutföra vissa uppgifter). Förutom JavaScript behöver HTML- och CSS-programmerare känna till ytterligare tekniker för webbapp-programmering. Det beror på ett projekt, till exempel: SCSS, TypeScript och någon av följande ramar: Ember, Angular, Vue eller React. (Framework är ett skelett av en applikation med build it-funktioner).
Programmering av stationära appar – som ovan, men det handlar om programmering av applikationer som du kan installera till exempel på ett Windows-system. Denna grupp skiljer sig från den tidigare. Den använder andra tekniker. Till exempel kan programmering för Windows använda C # språk och .NET Framework.
Programmering av mobilappar – det handlar om att skriva appar installerade på mobila enheter . Främst på enheter med Android- och iOS-operativsystem. Programmering för Android använder mestadels Java-programmeringsspråk och för iOS: Snabbt språk. För varje system finns olika ramar. Det finns också ramar för båda systemen.
Dessa var exempel på frontend reals. Nu kan vi gå vidare till backend sfärer. Backend är mer eller mindre programmering av något som klienten / användaren inte ser, men är väsentligt för att systemet ska fungera:
Databasprogrammering – databaser som MySQL och MSSQL. Databasen är mer eller mindre ett avancerat kalkylark. Databasen lagrar därmed mer data och gör det möjligt att manipulera det programatiskt. Lägg till data, ta bort dem, ändra. Dessutom gör det att ställa in olika sätt att hantera data. Till exempel avvisa ofullständig data eller samla in data från olika tabeller. Databassystem använder sina variationer av SQL-språk (till exempel T-SQL för MSSQL). Språket tillåter kodning av olika operationer på data. Det finns också databaser som inte använder SQL-språk. De använder ett mystiskt namn: NoSQL.
Backend-programmering – backend-utvecklare bearbetar data mellan databas och frontend, eller mellan olika system som behöver samarbeta. Nästan alla programmeringsspråk kan användas för backend-ändamål. Men eftersom backend har specifika användningsfall tenderar människor att använda olika språk än för frontend. Till exempel: PHP, Ruby, Python, Java, men också JavaScipt.
De flesta programmerare delar upp i frontend- och backend-utvecklare. Men det finns också fullstack-utvecklare.Fullstack-utvecklaren är en person som känner till frontend- och backend-teknik. Han / hon kan ta hand om allt för att ställa in en applikation: databas, backend och användargränssnitt.
Men det här är inte alla områden. Och i de flesta av sådana översikter utelämnas andra områden. Vi har mer och mer avancerade enheter, sensorer, som tillhandahåller data till informationssystem. Dessa måste också programmeras. Detta kallas inbäddad programmering. Inbäddad programmering görs mestadels på C- och C ++ -språk, eftersom dessa språk ger programmeraren tillgång till abstraktion på låg nivå. Det sparar resurser för dessa små enheter.
Ett annat blomstrande område för programmering är dataanalys. Utvecklare av dataanalys använder stora datamängder i företag och förbereder resultat för att företagsslutsatser ska kunna göras om dem. Sådana programmerare använder olika språkuppsättningar, inklusive Python och R (ja, det här är ett namn på ett programmeringsspråk, bara bokstaven R. Var kommer världen till rätt?).
Ett annat område är arv programmering. Äldre utvecklare känner till tekniker som användes för att bygga system, men som inte är populära längre. De stöder äldre system, som måste fungera, men byggdes för flera år sedan.
Det finns många andra programmeringsreal. Jag kommer inte skriva om alla dessa här. Men det är möjligt att hitta dem.
Detta är slutet på denna punkt. Varför är det så viktigt? Om du vet vilket område du är intresserad av kan du välja teknik, bör du lära dig. Och det är lättare att lära sig några tekniker än 200 av dessa.
Låt oss anta att du redan vet vilket område du är intresserad av, eller hur? Vad är nästa?
2. Välj teknik
För att gå längre måste du fatta ett välgrundat beslut om tekniker som du bör lära dig. Men ärligt talat är det svårt att få ett bra råd om det. Du kan fråga någon eller gå till studier eller en bootcamp. Men på något sätt kommer du att lära dig: a) vad som är populärt b) vad vet den som lär dig c) vad använder personen som svarar. Och ofta är det inte ett bra val. Men jag har goda nyheter. Du kan göra det bättre och göra det bra.
Läs om vilken teknik som används av företag som arbetar i området, du är intresserad av. Sök efter jobbbjudanden, se vilken teknik som återkommer. Tappa inte entusiasmen eftersom det finns 20 tekniker där. Det är en fiktion. Människor skriver saker som inte krävs senare för jobbet.
Jag läser ofta att folk vet lite om detta, lite av det. Och de vet fortfarande inte hur man ska bli programmerare. De är förlorade. Det är helt sant. Programmering är ett mycket brett område, och du kan inte lära dig allt. Du måste välja riktning och hålla fast vid den. På så sätt ökar du chansen att lyckas.
3. Välj inlärningsmetod
Denna punkt är mycket viktig och jag kommer att skriva varför. Alla har sin åsikt hur en utvecklare bör lära sig. Om du letade efter svaret online hittar du många idéer vad som är rätt. Man kommer att ge råd om att använda YouTube-videor. Annan berättar bok är vägen att gå. En annan person kommer att säga att en bootcamp är bäst. Programvaruutvecklare lär sig av en dokumentation! Vissa utvecklare säger också att högskoleutbildning är värdelös. Jag är ledsen över sådana uttalanden.
Du vet inte vad som är bäst. Och det är helt naturligt. Alla berättar olika saker. Personligen kan jag rekommendera e-böcker och videohandledning, för jag gillar dessa. Men detta skulle inte vara ett riktigt eller användbart svar.
I själva verket spelar det ingen roll hur du lär dig. Så länge du lär dig. Och kommer du ihåg hur du lärde dig i skolan? Hur såg det ut? Be en undervisning dig att lära dig lite av detta, lite av det. Saker som inte har någon koppling mellan? Nej. Och i skolan lär du dig komplicerade grejer. Saker som inte spelade någon roll för dig. Men alla kom ihåg lite från detta.
Det beror på att lärande i skolor är systematiskt och metodiskt. Steg efter steg. Systemet utvecklades genom hundratals års erfarenhet. Om du tycker att det inte är tillräckligt bra: fråga dig själv: hur man gör ett potatisbatteri? Det här systemet är så bra!
Du är intresserad av att lära dig programmering. Det bästa du kan göra för dig själv är att välja en metod som är metodisk och systematisk. Så kan vi svara på oss själva, vad är den mest metodiska och systematiska inlärningsmetoden? Uppenbarligen är det en gymnasieutbildning. Gymnasielärare kan metodisk och systematisk utbildning mycket väl. Det blir svårt, men du lär dig programmering.
Ett annat sätt att lära sig är böcker och böcker. Med lite försiktighet hittar du en bok som lär ut saker steg för steg. Från enkla till svåra saker. Från A till Z. Men du måste gilla att läsa.
Videohandledning och online-kurser – det här kan vara bra om författaren förbereder det metodiskt – det hjälper dig att lära dig. Speciellt om du gillar att titta på och lära dig.
Bootcamp – en intensiv programmeringsträning. Du kan också dra nytta av detta. Det är en bra lösning om du gillar att arbeta med människor i en grupp.
Det enda jag vill göra dig medveten om att inte använda icke-metodiska, icke-systematiska och ofullständiga sätt att lära sig programmering. Tänk dig att du lärde dig 50\% av ett ämne från en YouTube-videokurs (eftersom det är gratis). Men det finns ingen senare del. Du söker efter annan kurs. Men i andra fall finns det saker du inte vet. Också några saker du vet. Och ämnet förklaras på ett helt annat sätt. Det är så nedstämd! Så till att börja med: innehåll som täcker ämnet från A till Ö.
När jag snart når slutet på denna punkt ville jag också märka en fråga som är extremt viktig. Jag läste att människor rekommenderar nybörjare att använda engelska innehåll för att lära sig. Dessa människor vet inte vad de gör. När du är nybörjare – gör inte ditt liv svårt. Om du har innehåll på ditt modersmål – använd det. Varför ska du lära dig programmering på främmande språk? Det är ett fullständigt skräp. Du kan också lära dig spanska från tyska bok medan du talar engelska, eller polska från kanadensisk bok medan du talar japan. är det möjligt? Ja. Men varför?
4. Sätt ett mål
Att sätta mål är ofta utelämnat vid planering av en yrkeskarriär. Människor börjar lära sig en kurs än att sluta och gå sedan till en bootcamp medan tiden oundvikligen går. Efter flera månader kommer du inte ihåg vad du har lärt dig tidigare. Det verkar som om du har lärt dig något, men vad har du precis slutfört?
För att förenkla inlärningen är det en bra idé att sätta ett mål. Till exempel kan du svära att du kommer att läsa en 800 sidor lång bok om en månad. Eller så kommer du att sluta med forskarstudier eller hitta ett juniorutvecklarjobb om sex månader.
Allt går bättre om du vill sätta ett mål. Det är något om vår natur att målen gör livet enklare. Inlärning är inte lätt. Programmering jag är inte lätt. Lärande programmering är utanför diagrammen. Det är därför ett mål är så viktigt. Och tillfredsställelse från att nå det ger motivation för vidare arbete.
5. Lär dig systematiskt
När du redan har ett mål är nästa steg att göra ett inlärningsschema. Varje dag en timme. Men varje dag, alltid en timme. Och inte att ta en ny videohandledning eller läsa en artikel utan att lära sig något meningsfullt.
Finns det ett sätt att göra det lättare? Sinnesfokus krävs för att lära sig programmering. Mycket sinnesfokus. Testa detta. Meddela till alla: klockan 18.00 lär jag mig programmering i en timme och snälla stör mig inte. Stäng av telefonen, logga ut från Facebook. Ge barn till svärföräldrar. Ge hund till en granne.
Observera hur mycket du kommer att lära dig! Du måste avskärma dig från världen för att verkligen förstå programmeringen.
6. Kod själv
Jag följer en fantastisk nybörjare mjukvaruutvecklare på LinkedIn. Hon hittade ett bra sätt att öva programmering. Varje dag sätter hon upp ett mål att koda något. Till exempel: en dag: enkel kalkylator. Nästa dag: enkel sida med filmomslag. Hon skapar en animerad GIF med vad hon gjorde och lägger den på LinkedIn. Hon skriver vad hon har lärt sig under dagen. Jag älskar att följa henne. Hon skapar några lysande miniprojekt. Ovanför detta har jag också i början gjort vad hon gör. Vad varje bra programutvecklare jag känner gjorde. Utarbeta uppgifter och programmering. Så här blir du mjukvaruutvecklare.
Det är uppenbart att det är lättare när du studerar, arbetar eller går med i en bootcamp eller har en bok med exempeluppgifter. Eftersom du inte behöver räkna ut uppgifter på egen hand. Detta är också en bra metod. Men ibland är sådana uppgifter tråkiga, tvinga dig inte att gå utanför din komfortzon. Och vad händer om du själv räknar ut en uppgift? Än att du kommer att träffa några hinder som kommer att identifiera vad du bör lära dig att gå längre med din övning.
7. Be om hjälp
Eftersom vi pratar om problem. Det är svårt att formulera vad du har problem under tidiga programmeringsdagar. Till exempel när ett fel uppstår i en applikation. Hur översätter man problemet till ord? Hur ber jag om det? Ibland är det så svårt att folk inte vet vilken fras man ska lägga i en DuckDuckGo-sökning. För många år sedan var det lättare. Det fanns StackOverflow och supportgrupper, där du kunde ställa alla frågor. Du kan lita på hjälp från andra.
Idag kan du möta sådana svar som ”sök på internet”, eller ”detta ställdes tidigare” eller ”igen”. Detta är frustrerande. Tyvärr. Internet är fyllt med svar. Vad avancerade programutvecklare inte förstår är att det är svårt att namnge ett problem om du är nybörjare. Även om de hade exakt samma problem! Jag kan försäkra dig om detta!
Jag uppmanar dig därför att ställa frågor. Hitta en trevlig plats på internet för programutvecklare, eller hitta en mentor. Och fråga fråga fråga.Ibland kommer du att snubbla över ett tvekan. Men det ska inte föra dig ner. Och i så fall, hitta en annan plats som är trevligare.
Ju mer du kommer att fråga, desto lättare blir det att formulera vad du har problem med. Medan tiden kommer att gå kommer dina frågor att bli bättre och bättre, svar kommer att dyka upp snabbare och snabbare. Och senare kommer du att upptäcka att vissa problem kan lösas bara genom att formulera en ordentlig fråga.
8. Hitta jobb snabbt
Jag läser ofta att människor skjuter upp sökandet efter ett jobb tills de lär sig något mer. Och hälften av året passerar. Mjukvaruutveckling är ett område där du behöver förnya din kunskap hela tiden. Låt oss säga att du har lärt dig 3-4 tekniker som du behöver. Du börjar söka efter ett jobb och får problem. Du kan söka jobb i flera månader! Och medan du gör det kommer du att glömma hälften av saker du har lärt dig.
Så mitt råd är att du bör börja söka efter ett jobb mer eller mindre på halvvägen av din inlärningsväg. Av flera goda skäl. Först och främst om du tar en praktikant eller juniorjobb antar din arbetsgivare att du vet nästan ingenting. För det andra tar rekryteringsprocessen tid själv. Innan du finjusterar ditt CV, innan du lär dig förgjord, tillgänglig online, kommer testfrågorna att gå. Det kommer att passera medan du kommer att vässa ditt rekryteringssamtal utan skakningar. Att hitta ett jobb är också något du behöver lära dig.
Så på halvvägen av inlärningsvägen börja leta efter ett jobb. Skicka CV, boka möten, vänja dig vid det. Än din tekniska beredskap kommer att möta rekruteringsberedskap och det kommer inte att finnas några fördröjningar.
9. Be om mer komplicerade uppgifter
Nu har du en arbetsposition. Men den största fällan för programmering ligger framför dig. Eftersom du har ett jobb kan du lägga böcker i hyllorna och bara göra vad du blir ombedd att göra.
Det är inte så här! Var medveten om att praktikanter / juniorer ofta inte uppmanas att göra komplicerade uppgifter, men mycket enkla. Du kommer att märka snart, det tar mindre och mindre tid att slutföra och börjar bli tråkiga. Om du inte gör något åt det, tappar du tid. Du kan lära dig nya saker. Kör inte runt i cirklar.
Utöver det ser din arbetsgivare när praktikant / junior står stilla. Jag är arbetsgivare, det är lika klart som himlen. Och ingen vill ha tidlöst internet / junior.
Så när du ser blir du bättre, be din handledare om mer komplicerade uppgifter. Han / hon borde veta för att ge dig något mer kompletterar. Detta är viktigt för att fortsätta lära dig och utveckla dig själv på jobbet.
Som praktikant / junior behöver du lära dig mycket, mycket mer. Jag är 100\% säker på att du inte vill bli en av dessa killar på internet som säger att praktikant / juniorposition inte gav dem någonting, lärde sig ingenting. De lärde sig inte eftersom de inte ville gå längre. De slösar bort sin och deras arbetsgivares tid.
10. Behärskar ny teknik
Programmering är ett fantastiskt fält, men det förändras hela tiden. Det du har lärt dig idag blir föråldrat på ett år. Och föråldrad i 5. När du hittar ett jobb och känner dig bekväm med det, behärska något nytt. Utöka dina färdigheter. Stå inte still med din professionella utveckling. Om du slutar studera är det kanske värt att gå tillbaka. Delta i en bootcamp, läs en bok, delta i en online-kurs. Oavsett vad som gör att du kan vara uppdaterad med teknologier.
Uppdatering: om du vill memorera programmeringsmetoder letar du efter Summon The JSON-projektet. För närvarande finns det ett kort för JavaScript-programmerare. Du kan läsa mer här: Kalla till JSON: JS Deck
Det är allt du behöver för att lära dig att börja programmera från grunden. Detta var en riktigt lång artikel, och jag är verkligen förvånad över att du har nått slutet på den. Jag är säker på att 99\% av människorna inte gjorde det. Det ser ut som att du bryr dig om att bli programutvecklare. Omsorg är 99\% av en framgång. Jag önskar er all lycka till. Programmering är fantastisk och ger en hel del professionell tillfredsställelse. Tappa inte ditt hjärta för det. Fortsätt. Steg för steg.
Engelska är inte mitt modersmål. Om du hittar något fel i svaret, vänligen korrigera det. Du kommer att nämnas i svaret. Tack!
Svar
En bra start är att ta reda på hur man älskar programmering. För att citera från en ny programmerare som jag hjälpte:
GASP DET FUNGERADE DET FUNGERADE DET FUNGERADE HUR FÅR DU NÅGONSIN NÅGONSIN AV KÄNNAN
Hon hade tillbringat den föregående timmen för att försöka få ett objekt i hennes spel för att ändra färg och dess färg hade just ändrats.
Skrivkod är som att tala magiska ord som faktiskt gör något . Det är engagerande och kanske lite beroendeframkallande.Det är också svårt. Att hitta dessa små ögonblick av motivation är till stor hjälp för tiderna när du behöver lära dig något hårt. Minnet om vad som är möjligt kan hjälpa dig att slå igenom vad som är tråkigt.
Ändå, om du kommer dit måste du ha några roliga, kreativa upplevelser med programmering. Här är några idéer:
- Ta tag i StarCraft (1 eller 2) nivåredigerare och ta reda på hur du använder triggarna. Jag har tillbringat många glada timmar med att hacka bort StarCraft-kartor och du kan skriva några otroligt inblandade spel-inom-spelet med det.
- Ta reda på alla redstone-mekaniker i MineCraft och bygg dig en löjlig maskin. Att göra mods som lägger till nya funktioner i MineCraft är också populärt, men lär dig några grunder innan du försöker; deras tutorials ( Basic Modding – Minecraft Forge ) är mycket lättare att förstå om du redan känner till lite Java.
- Ta reda på hur man bygger något fantastiskt i Factorio (varning: videon nedan är löjlig; förvänta dig inte att göra det direkt). Factorio har också ett ganska komplett modding-API som stöds av utvecklaren ( Modding Tutorial ) men du kanske vill lära dig mer grundläggande innan du försöker.
- Ladda ner Scratch och gör några enkla spel med det (den artikeln nämner också ett antal andra pedagogiska programmeringsspråk längst ner). Scratch behandlar programmering som pusselbitar som du passar ihop för att bygga beteenden, och det är enkelt att yngre barn kan skapa arbetsprogram med liten ansträngning. Det är som att programmera med träningshjul.
Bildkredit: Av Lifelong Kindergarten Group på MIT Media Lab.
- Hitta en av dessa ”lära sig X på 21 dagar” böcker och driva igenom den. Det är varken prickigt eller grundligt, men det kan ge dig tillräckligt med grund för att några av dessa andra idéer kommer att bli möjliga.
- Ta en lektion. OK, booooring, men jag tyckte att trycket att tjäna ett betyg drev mig att arbeta igenom de tuffa koncepten. Jag rekommenderar det bara om du redan är säker på att du vill att lära sig programmering. Klasserna är bra för att spotta information i din hjärna, men är ganska dåliga när det gäller att motivera dig. Det bästa med att ta en lektion är att de kommer att lära dig om saker som du aldrig skulle gissa att det fanns; du kan inte själv lära ut ett koncept som du inte vet existerar.
- Vill du att dina program påverkar den verkliga världen? Överväg att göra några projekt med en mikrokontroller, något liknande: Topp 10 Kickass Arduino-projekt . Om Arduino är för skrämmande kanske du vill prova LEGO Mindstorms först.
Säkerhetssystem? Robotar? Dumma fantastiska julbelysning? Det här är din enhet. Bild från Arduino .
- Game Maker ( Yoyo Games ) är en ganska bra utvecklingsmiljö för enkla videospel; det är mer avancerat än Scratch och djupare än triggerredigerarna i StarCrafts kartredigerare. Det är möjligt att göra en mängd 2d-videospel med det, och det är möjligt att göra något bra för att säljas kommersiellt.
- Om du vill flytta till 3d, Unity ( Unity – Game Engine ) är en anständig kvalitet 3d-spelmotor. Du behöver lite mer programmeringskunskap än Game Maker, och du behöver något sätt att göra tillgångar, men det är tillräckligt kraftfullt för att göra ganska avancerade spel.
- Din stationära eller bärbara dator innehåller redan en halvvägs anständig utvecklingsmiljö: din webbläsare. Om du skapar en webbsida på din egen hårddisk kan du öppna den med din webbläsare. Om den webbsidan innehåller JavaScript kommer webbläsaren att köra den. Du kan börja lära dig utan behöver ladda ner eller installera något annat. HTML5-spelhandledning – Skapa ett ormspel med HTML5 canvas och Jquery är en underhållande genomgång av hur man gör ett grundläggande spel.
- Lär dig hur du spelar RoboZZle online-pusselspel . Av alla programmeringsspel jag har spelat är den här utan tvekan den djupaste. De flesta spel lär dig mycket om variabler och objekt, men det här lär dig att tänka djupt på rekursion. Lambda-beräkning borde känna sig vagt bekant om du ”har slagit några medelstora till hårda Robozzle-pussel.
- Ladda ner communityversionen av Visual Studio a Detta är ett professionellt betygsverktyg och det är svårt att få ditt första program igång. Men när du väl vet det tillräckligt kan du göra vad som helst.Om du är på en Mac är motsvarigheten XCode .
Förhoppningsvis kommer några av dessa idéer att få dig att röra dig. Så småningom, om du vill bli bra på det, kommer du att behöva knäcka läroböckerna och studera formellt, men jag tycker att det fungerar bäst om du hittar din varför först.