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.

Donald Knuth: händerna ner, en av de största datavetenskaparna som fältet någonsin har sett.

i den här delen finns det tre saker du behöver lära dig. För det första kommer du att lära dig C++ som andraspråk, vilket är närmare beskrivningar på maskinnivå jämfört med Python. Python är närmare spektrumet av vanlig engelska, medan C++ är närmare slutet av spektrumet 0s och 1s. Learning C++ kommer att göra dig bekant med fler programmeringskonstruktioner som pekare. För det andra kommer du att förbättra din kodningshastighet genom att öva intensivt, läsa dokumentation och ytterligare finjustera dina felsökningsfärdigheter. Slutligen kommer du att lära dig rekursion, vilket är de magiska programmerarna och datavetenskaparna som använder för att utnyttja beräkningskraften.

lär dig C++ och börja skriva enkla program

Du har redan lärt dig Python i föregående del. Python är ett programmeringsvänligt språk, eftersom det döljer många detaljer på låg nivå från programmeraren för enkel användning. Men om du vill gå vidare är det absolut nödvändigt att lära dig grunderna i programmering i C++.

vad ska man fokusera på: Att skriva kod i C++ får dig att känna dig mer programmerarliknande, eftersom du går mer mot maskinbeskrivningar. Lär dig skillnaden mellan syntax och semantik. Spendera tid på att lära sig statisk och dynamisk typning, minneshantering och pekare. Lär dig att implementera villkor, loopar, funktioner, datatyper och saker du lärde dig i Python igen i C++. Om allt detta verkar som grekiska och Latin, oroa dig inte. Avsnittet Resurser kommer att göra allt klart för dig.

hanteringsfel: när du får ett fel, bli inte avskräckt. Även de mest erfarna programmerarna har fel och buggar i sina program. Allt du behöver göra är att läsa felet, göra en snabb Google-sökning och åtgärda problemet i din kod. Medan du gör det, förstå var du gjorde ett misstag, korrigera din förståelse och fortsätt. Ibland kan du behöva läsa lite dokumentation. Kontrollera nästa avsnitt.

Läsdokumentation bör vara andra natur för dig

precis som att göra en Google-sökning bestäms en programmerares skicklighet av hur bra han kan förstå dokumentation och skriva användbara program. När du lär dig att läsa dokumentation lär du dig också att kommentera din kod, skriva läsbar kod och skriva dokumentation för koden du skriver.

varför ska du lära dig detta? Många människor kämpar med att lära sig ny teknik och letar efter färdiga kurser att lära av. Även om detta är bra i de inledande stadierna, när din kunskap fördjupas, hittar du inte färdiga handledning för att skedmata dig själv med. Du måste läsa igenom dokumentationen och hämta vad du behöver. Återigen, lära sig att filtrera bort information och ta exakt vad du behöver för att få jobbet gjort.

öva. Upprepa. Utöva.

nu måste du bara fortsätta träna. Gå över till Hackerrank och lösa alla enkla problem i avsnittet uppvärmning och implementering där. Om det finns ett problem du inte kan lösa, läs diskussionerna, Läs redaktionen och se hur du kan lösa det själv. Om det är något du inte förstår, använd Google.

om du har gjort avläsningarna i föregående del borde du inte ha något problem här. Om du kämpar, föreslår jag att du går tillbaka och besöker dessa avsnitt. Du måste bli bra på att skriva kod, så hoppa inte över den här delen. Tanken är att vara flytande i att uttrycka dina vanliga engelska lösningar i sina programmeringsekvivalenter. När du inte har fastnat av språkspecifikationer kan du fortsätta. Ta alla program du skrev i Python och koda dem i C++.

Du kan komma över hype kring konkurrenskraftig Programmering, Jag rekommenderar dig att hålla dig borta från det i detta skede eftersom det kommer att göra mer skada än bra. När du är klar med del III kan du experimentera med det och om det görs rätt kan det förbättra dina problemlösningsförmåga enormt.

förstå rekursion väl

detta hjälper dig att förstå rekursion bättre. Haha.

en datavetenskapares hjärta ligger i förmågan att förstå rekursion. Att återkomma betyder att uttrycka något i sig själv. Allt du kan göra med loopar kan göras rekursivt och på mycket eleganta sätt. Försök att förstå detta intuitivt och titta på de videor jag har tillhandahållit i resurserna. Om du är en mjukvaruutvecklare som inte förstår rekursion tillräckligt bra, rekommenderar jag att du gör det direkt.

sammanfattning

hittills kan du ett språk på låg nivå och hög nivå och kan tillräckligt uppskatta skillnaderna i ”kontrollen” som du har över dina program. Nu borde du kunna skriva enkla program med Python och C++ och uppskatta skillnaden mellan båda språken.

härifrån går många människor in i rutan för att lära sig fler språk, vilket bara är en värdelös övning i sig. En av de vanligaste frågorna jag får av nybörjare är ” hur många språk kan du?”, vilket får mig att inse hur missriktade nybörjare i allmänhet är när de relaterar programmeringsförmåga till att veta fler språk. Programmering handlar inte om att känna till många språk. Språket du använder är bara ett sätt för dig att uttrycka och lösa ditt problem effektivt. I detta skede är du en ”programmerare”, men det räcker inte. Du behöver nu lära dig datavetenskap för att ta din skicklighet till nästa nivå.

del III: Din Tryst med datavetenskap

en gedigen förståelse för resurserna i detta skede kommer att göra dig bättre än de flesta programmerare i din grupp. Du kan till och med bli bättre än de flesta 2: a/3: e åringenjörsstudenter i Indien. Dina framsteg härifrån beror på din törst efter materialet i det här avsnittet. Så fokusera.

för att lägga till några av mina filosofiska touch, djupdykning i datorn vetenskap är som att öppna Pandoras ask.

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.

oroa dig inte flickor, hon skrev det första programmet

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.

Linus Torvalds byggde Linux — kärnan-något utan vilket Android inte skulle ha varit vad det är idag

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.

Bruce Lee: den övermänskliga människan. R. I.P legend

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.

  1. identifiera problemet du arbetar med och var mycket specifik om detaljerna. Var tydlig med dina mål och mål.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.



Lämna ett svar

Din e-postadress kommer inte publiceras.