En omfattande Guide till att bli en självlärd programmerare
del II: Tänk, planera och kör som en programmerare
Nu när du vet hur man löser problem, resonerar om lösningen och kommunicerar dina tankar flytande, är det dags för dig att lägga dessa färdigheter i att träna, som en programmerare gör.
de flesta av ämnena i det här avsnittet behandlas i 2: a året av en undergrad datateknik kurs. Jag har kontaktat dem lite annorlunda för att bäst passa målen för denna guide.
hur skiljer sig detta från en vanlig läroplan? Regelbundna läroplaner är tungt laddade med teori. De kurser jag har föreslagit i avsnittet Resurser har en bra blandning av teori och praktik. Även om detta kan vara bra för blivande ingenjörer, för lekmannen där ute, är det inte särskilt användbart. Du tappar reda på var teorin slutar och övningen börjar. Jag ska påpeka exakt vad du behöver lära dig teorivis så att du kan gå rakt fram och träna. Teori är bara ett verktyg som hjälper dig att skriva bättre kod i detta skede, så bli inte fast av det för tungt.
roligt faktum: i min 2: a termin av teknik hade vi ett ämne som heter DBMS (databashanteringssystem). Jag blev förvånad över att hitta personer som skulle rita de bästa er-diagrammen för sina databasdesigner, men när det gällde att faktiskt utforma en databas för praktiska tillämpningar, skulle de misslyckas eländigt. De var så fokuserade på att få detaljerna i diagrammet rätt, de skulle glömma själva anledningen till att de gjorde det i första hand. Jag klandrar dem inte, för de lärde sig aldrig att diagrammet är där för dem att bygga bättre databaser, inte förbättra sina skissfärdigheter.
Diskret matematik
Du har redan använt diskret matematik omedvetet. Diskret matematik är en kombination av områden inom tillämpad matematik som upprepade gånger användes inom datavetenskap. Experterna på området bestämde sig för att klubba ihop allt och sätta ett namn på det — som vi nu kallar diskret matematik.
När du lär dig diskret matematik, följ samma princip som jag skisserade i del I. tänk i termer av matematiska strukturer och de procedurer som används för att manipulera dem. Diskret matematik ökar helt enkelt antalet verktyg till ditt förfogande för att hantera problem. Om du har övervunnit din rädsla för matematik kommer du att njuta av kursen jag har länkat i avsnittet Resurser.
datastrukturer och algoritmer
detta är ryggraden i hela din resa. Faktum är att du redan har använt datastrukturer och algoritmer hela tiden — igen omedvetet. Nu ska vi formalisera det och studera detta mer i detalj.
som en erfaren programmerare kommer du att använda datastrukturer och algoritmer överallt. Att förstå det tillräckligt bra kommer att utöka dina matematiska färdigheter och verktyg för att bygga effektiva beräkningsstrukturer för att hantera vanliga problem. Du kommer också att lära dig olika algoritmdesigntekniker, som är som ritningar för att lösa vissa teman inom datavetenskap.
många tutorials kommer att berätta för dig att börja lära algoritmer och datastrukturer rakt upp. Anledningen till att jag inte gjorde det här är att du skulle komma in i Einstellung, som har en fast mentalitet och inställning till problem. Lita på mig, som lamslår ditt tänkande eftersom du inte tänker utanför boxen. I slutet av detta kommer du att vara en stor problemlösare och kodare.
bästa praxis
skrivprogramvara handlar inte bara om att slumpmässigt sätta ihop kod för att få saker gjorda. I de flesta professionella miljöer är du inte den enda programmeraren som arbetar med en kodbas. Det är viktigt för dig att följa vissa riktlinjer och konventioner för att underlätta programmeringen av kodbasen för alla i teamet. Detta gör det lättare att förstå kod skriven av någon annan och därefter gör det lättare för andra att förstå din kod. Om du är en junior mjukvaruutvecklare, fokusera på det här avsnittet.
vad kan du göra? Spendera tid på att förstå och sätta den torra (upprepa inte dig själv) principen i praktiken. Skriv inte repetitiv kod, eftersom det saktar ner dig och gör dig mer benägen för misstag. Skriv användbara kommentarer och dokumentation var du än kan. När jag började trodde jag att det här var en dum sak att göra tills jag en dag öppnade ett gammalt projekt och insåg att all min kod var oförståelig. Som programmerare behöver du inte memorera mycket. Du memorerar vad som är viktigt och tittar upp vad som behövs.
Version Control (Git)
det här är något jag började göra tidigt och det hjälper enormt att hålla koden organiserad. Du spårar dina ändringar och vet exakt vilka ändringar du behöver för att implementera vissa funktioner. Du lär dig också hur du kan förebygga och åtgärda buggar snabbt. Jag ser många unga ingenjörer som inte ens vet vad Git är, och det är extremt sorgligt. De kommer att spendera hela sin karriär med versionskontroll – om du är en av dem, gå direkt till resurserna nedan.
objektorienterad programmering
en introduktion till ett helt nytt sätt att programmera. Hittills har vi gjort procedurprogrammering. Nu övergår vi till objektorienterad programmering, vilket är ett nytt paradigm helt och hållet. En introduktion till data inkapsling och abstraktion kommer ytterligare att hjälpa dig att uppskatta hur denna guide har utformats. I OOP är allt ett objekt och tanken är att tydligt skilja ditt gränssnitt och implementering. Du kommer också att lära dig klasser och arv. I slutändan börjar du designa objektorienterade lösningar och lära dig att bygga smarta svarta lådor för att lösa problem. Att lära sig Java är ett bra sätt att komma igång med detta nya programmeringsparadigm. Python stöder OOP också, så försök att utforska det!
öva hårt
öva varje färdighet/koncept / algoritm i det här avsnittet genom att skriva kodavsnitt. Skriv om gammal kod med den nya kunskapen du har förvärvat. Fortsätt skriva små program och lära dig något nytt av det i varje steg.
fortsätt lära dig när du går vidare. Jag har byggt räknare, bibliotekshanteringssystem, numeriska beräkningsskript på så många olika sätt, och varje gång lärde jag mig något annat. Du kommer så småningom att inse att det inte finns någon gyllene kula för att fixa allt. Livet är fullt av kompromisser. Det är skönheten i ofullkomlighet.
sammanfattning
Du vet mer än tillräckligt för att bygga spelförändrande programvara. Du måste internalisera allt tills här för att gå till nästa steg. Härifrån kommer mer teori inte att göra dig något bra. Du bör bara investera tid i att öva och bygga användbara projekt. Programmering är en tillämpad vetenskap — följ 80/20-regeln, vilket innebär att spendera 80% av tiden på att öva och 20% av tidsläsningsteorin.
del IV: Det är dags för dig att bygga några coola saker
Om du har följt guiden till här Till T, är du väl rustad att gå vidare och bygga några bra projekt som du kan lägga på ditt CV, visa upp för dina vänner eller till och med generera intäkter från ditt arbete. I det här skedet vill jag lära dig hur man lär sig saker på vägen. Varje nytt projekt du tar upp eller tilldelas kommer att kräva att lära sig något nytt. Det är viktigt att du närmar dig detta med rätt attityd.
jag har alltid inspirerats av Mark Zuckerberg för hans odödliga inställning till upphävande av misslyckande
det finns några riktlinjer du kan följa när du tar upp något projekt. Jag utvecklade denna rubrik för mig själv och insåg att det skulle vara praktiskt för er att ta upp nya projekt.
- identifiera problemet du arbetar med och var mycket specifik om detaljerna. Var tydlig med dina mål och mål.
- leta upp befintliga eller liknande projekt och identifiera var de utmärker sig och var de saknar. Se var din ide passar in, hur projektet anpassar sig till de mål och mål du har i åtanke och notera allt.
- gör en lista över alla färdigheter du behöver för att lära dig att göra projektet och i vilken utsträckning du behöver utveckla färdigheten för att få projektet gjort. Känn dina styrkor och svagheter.
- skapa en plan för att lära sig nödvändiga färdigheter. Identifiera rätt personer för att hjälpa dig och nödvändiga handledning för att komma igång. Fokusera uteslutande på att utveckla färdigheten för att få ditt projekt gjort. Det är lätt att få bäras bort till att gå på djupet. Kom ihåg att du lär dig färdigheten att slutföra projektet och inte skriva en doktorsavhandling om det. Om inte det är ditt mål.
- Kom igång med projektet, uppdatera dina mål och mål och var mycket tydlig om dina styrkor och svagheter. Dela upp projektet i genomförbara deluppgifter och tilldela ett objektivitetsmått för varje. Det betyder att du måste veta när du ska sluta jaga perfektion och fokusera på den stora bilden.
- utför otåligt. Upprepa tills alla dina mål är uppfyllda.
Läs detta för tips och tricks om hur du blir en bättre elev.
Med tanke på din befintliga kunskap kan du lära dig att bygga webbplatser, mobilapplikationer, spel, små skript, Chrome-plugins, stationära appar och dataanalysprogramvara. Jag kommer att ge mer information om detta i nästa inlägg. När du har några avslutade projekt under ditt bälte kommer du att vara en tillräckligt bra utvecklare för att frilansa och tjäna pengar på sidan, vilket är en bra inkomstkälla om du är student. Om du kommer från ett annat område ger detta dig en tillräckligt solid bas för att kunna öka ditt nuvarande arbete med teknik. Vad du kan med din nuvarande uppsättning färdigheter är oändlig, även en hel bloggpost kan inte göra rättvisa åt det.