Kako sam pobjegao iz učionice čistilišta i naučio kodirati - a kako i ti možeš.

Kontekst: Ja sam programer stolnih igara i prodavač digitalnih filmova, a provodeći dugo vremena oko igara i računala, odlučio sam da želim naučiti kodirati prije otprilike 3 godine.

Krenuo sam kao i mnogi tražeći dugotrajno koji jezik bih trebao naučiti i odakle, vraćajući se ovoj temi nekoliko puta tijekom svog putovanja. Naišao sam na nekoliko niti koje sugeriraju jedan jezik ili platformu za učenje u odnosu na drugu i mislio sam podijeliti svoje osobno iskustvo u slučaju da je korisno za nekoga drugog u istom procesu razlučivanja.

Izjava o odricanju odgovornosti: Ja nisam profesionalni programer, i iako koristim svoje vještine kako bih koristila svom radu (o mojoj potrazi za prototipom možete pročitati ovdje), kodiranje je i dalje dodatak mom glavnom radu, a ne izvor prihoda , što god vam to govori.

Također odricanje odgovornosti: Ne pokušavam smjestiti jedan jezik ili platformu za učenje u odnosu na drugu, i sasvim očito nisam pokušao naučiti svaki jezik tamo, na svakoj platformi. Slijedi samo moje iskustvo pokušavajući shvatiti najrazumniji put prema naprijed u doduše zbunjujućem okruženju.

Također možete preskočiti na dno za TL; DR .

Prolog: C ++

Nisam sasvim siguran jesam li već znao da je C ++ bio i nastavlja biti kamen temeljac u razvoju video igara. Možda sam to vidio u jednoj od onih infografika "Koji programski jezik trebam naučiti" koje postoje. Ali želio sam znati više o tome kako nastaju igre i kako razgovarati s računalom. Prilično sam tehnološki orijentiran i izgradio sam ili se poigravao sa svojim osobnim računalima, misleći da bi to moglo biti iskustvo učenja kodiranja.

Sveti dimovi, jesam li izašao iz svoje dubine. Napravio sam nekoliko tutorijala na mreži (mislim kroz learncpp ili slično) i ubrzo sam shvatio da će mi trebati više smjernica da bih razumio osnovne principe objektno orijentiranog programiranja, na možda lakše dostupnom jeziku, nego što sam pronašao u učenju C ++.

HTML, CSS, JavaScript i Python

Prije nego što sam se upustio u ovu avanturu, već sam imao malo HTML iskustva i naišao na Codecademy. Jako mi se svidjela sposobnost izvođenja tutorijala iz preglednika i bez postavljanja IDE-a (to je za C ++ bilo iskušavajuće iskustvo). Brzo sam konzumirao sve lekcije Codecademyja o HTML-u i CSS-u. Prirodni put od te točke bio je pohađanje tečaja JavaScript, u ​​kojem sam uživao. No, ubrzo sam se našao u "učionici za čistilište" (nije moja referenca), radeći kroz Python tečaj i druge.

Također bih trebao spomenuti da sam tečajeve Codecademyja završio kao besplatni korisnik, ne želeći platiti pretplatu za ono što su u to vrijeme nudili, što je uključivalo projekte i mentorsku podršku.

Naučio sam puno osnova iz Codecademy-e i općih principa OOP-a, ali nisam završio njihovu primjenu bez jasnog puta prema naprijed. Vratio sam se svojoj potrazi (koga ja zavaravam, PUNO sam vremena proveo istovremeno istražujući druge jezike, platforme za učenje i bootcampove tijekom cijelog procesa) i zaključio da želim saznati više o razvoju igara kroz tečajeve o Unityju.

C #

Pronašao sam tečaj Unityja Ben Tristema na jednoj od Udemyjevih višegodišnjih 10000% popusta, i marljivo sam radio kroz tutorijale za izgradnju klonova za 2D lomljenje cigle i druge igre. Naučio sam taman toliko C # da se snađem, ali nedovoljno da bih se osjećao sigurnim da sam išta napravio.

Jedinstvo je ovdje vjerojatno bilo više prepreka negoli upute Tristrema i suradnika, koje su zapravo bile prilično dobre. Uređivač Unity je zvjerka s motorom, s puno dobrih alata koji su neprobojni za početnika (opet o ovom mojem iskustvu s Unityjem možete pročitati ovdje).

Još uvijek se osjećam kao da sam puno naučio iz tečajeva i jednostavnog čina izlaganja C # i Unityjevom željenom tijeku rada, ali nisam uspio izvući dovoljno iskustva iz iskustva da bih nastavio. Moj prijatelj dao mi je savjet da pogledam freeCodeCamp, kamo sam dalje krenuo.

Povratak na JavaScript

Na prvom rumenilu, freeCodeCamp ima izgled manje drečave Codecademy ili Treehousea. Ali svidjelo mi se koliko su tutorijali bili neposredni i nije mi bilo potrebno da prođem kroz platni zid da bih napredovao. Nastavio sam tamo gdje sam stao s učenjem HTML-a i CSS-a, dobro napredujući dok nisam došao do projekata Responsive Web Design koji su potrebni za završetak prvog odjeljka i dobivanje certifikata.

Sa sigurnošću mogu reći da je ovo bio trenutak (ili niz trenutaka) mog izbacivanja iz učionice čistilišta. Za novaka bez stvarnog profesionalnog iskustva u web dizajnu i spremnosti da pronađem vlastita rješenja bez guglanja odgovora, projekti su bili teški . Na kraju sam pobijedio i napravio nekoliko glupih web stranica koje su zadovoljile zahtjeve, ali iskustvo me potaknulo na rad kroz još nekoliko besplatnih tutorijala o JavaScript prednjim knjižnicama i pozadinskim okvirima.

Još važnije, počeo sam raditi na vlastitim projektima vezanim za web na CodePenu i projektima igara koristeći hrpu različitih motora. Također sam počeo koristiti Python za obavljanje nekih osnovnih društvenih analitika u svom svakodnevnom poslu i smatrao sam to korisnim.

Čistilište nakon podučavanja

Premotajte unaprijed puno kasnije, i sada radim na nekoliko projekata povezanih s igrama u Phaseru i Unityju (najvažnije, digitalni prototip stolne igre s kartama koji razvijam). Proveo sam puno vremena u okvirnoj dokumentaciji i Stack Overflowu tražeći odgovore i najbolje prakse za stvari (povezivanje ovog posta još jednom za dobru mjeru). Također sam razvio prijateljstva s nekolicinom kolega koji su i sami programeri i bilo je korisno pokrenuti ih kod za savjet i povratne informacije.

Jedna stvar koja mi je pomogla u radu na vlastitim projektima samo je osnovno iskustvo postavljanja tijeka rada. Učenje korištenja naredbenog retka i Git-a u dogovoru s postavljanjem NPM-a i uređivača koda, na primjer, otvorilo je oči (posebno dolazi iz CodePena, koji jednostavno čini sve za vas). U dobru ili u zlu, većina vas tutorijala ne izlaže gnjidi alata koji će vam trebati da obavite svoj posao, a tu se još puno može naučiti.

Ako ovo čitate i tražite "i upravo sam dobio svoj prvi posao programera!" izjava, žao mi je što ću razočarati! To mi nije bio cilj (barem do sada), ali imam nekoliko osnovnih TL; DR učenja koja bih mogao podijeliti, a koja bi mogla biti korisna svima koji su također u potrazi za programskim jezikom ili kako pobjeći iz učionice.

TL; DR

JavaScript:

  • Pro: Vrlo dobra početna točka za učenje objektno orijentiranog programiranja, posebno ako ste zainteresirani za bilo koju vrstu web razvoja (prednji ili stražnji kraj). To možete naučiti na većini platformi, ali moje iskustvo najbolje je poslužio freeCodeCamp.
  • Protiv: Mnoge će vam stranice reći da se "samo pokreće u vašem pregledniku", tako da "ne morate postavljati IDE" i da ga je lakše naučiti, ali ovaj način razmišljanja odvest će vas samo do sada. Ako ćete nešto smisleno razvijati s popularnim JavaScript okvirima (React, Vue, Express, itd.), Završit ćete postavljanjem nečega što je u blizini IDE-a s uređivačem koda, upraviteljem paketa, ovisnostima itd., Bez vrstu podrške koju biste dobili, recimo, postavljanjem .NET-a ili slično.

Piton:

  • Pro: Super prijateljski za novopridošle ako su kovrčave zagrade na drugim jezicima u početku zastrašujuće i dobra točka za ulazak ako vas zanima bavljenje pozadinskim programiranjem ili znanošću o podacima. Imao sam dobro početno iskustvo onboardinga kroz Codecademy.
  • Protiv: Vaše su mogućnosti malo ograničene ako želite ući u front end ili razvoj igara. Postoje okviri, na primjer, koji vam omogućuju stvaranje igara (na primjer, PyGame), ali ako se posebno bavite razvojem igara, bilo bi vam bolje poslužiti negdje drugdje.

C #:

  • Pro: Vrlo ugodan jezik koji dobro podržavaju Microsoft i zajednica otvorenog koda. Pomoću nje možete razviti back end razvoj, izraditi desktop aplikacije, stvarati igre (uglavnom s Unityjem, ali vani postoje i drugi motori poput Monogame). Možda je nepopularno mišljenje, ali preporučio bih da prvo naučite C # putem Microsoftovih vodiča ili negdje drugdje, a zatim naučite Unity kako biste olakšali dio kognitivnog opterećenja nametnutog složenošću urednika.
  • Con: Nije puno govoriti o ovdje, osim ako stvarno ne kao što je Microsoft ili stvarno ne želi raditi na kraj web razvoj prednji (pretpostavljam da bi mogao pogledati u Blazor, ali ja ne bih preporučio počevši ovdje). Mogao bih govoriti o tome kako Unity može poboljšati svoje korisničko iskustvo, na primjer, ali sam C # je sjajan.

Opće misli o učenju i bijegu od udžbenika Čistilište :

  • Jedna od mojih frustracija u mom procesu postavljanja pitanja "koji programski jezik trebam učiti?" bio je ono što sam osjećao kao nedovoljan odgovor "pa, što želiš izgraditi?" Puno sam se susretao s ovim odgovorom i mislim da to nije ispravan pristup pristupu učenju kako programirati ako već ne znate što želite učiniti s njim. Početnik nema dovoljno konteksta da zna što može sagraditi, a kamoli put do njega (osim ako nisu tip osobe koja samo želi stvarati igre ili se jednostavno želi zaposliti kao web programer ).
  • Bolji odgovor bio bi reći: "isprobajte nekoliko vodiča na različitim web lokacijama i na različitim jezicima i pogledajte da li vam se nešto čini zanimljivim. Ako se drži, pridržavajte se toga; ako ne, odaberite jedan slučajno i pogledajte kamo vas vodi. Stvari koje ćete naučiti pomoći će bez obzira na to što zapravo završite. "
  • Osim toga, ako se možete prisiliti da izađete iz ekosustava tutorijala i napravite bilo što izvan zaštićenog okoliša što je postavljeno za vas, to će vam pomoći naučiti stvari koje ćete na kraju morati znati, poput postavljanja IDE, traženje odgovora na pitanja i dijeljenje vašeg rada.

Nadam se da je ovaj post koristan za one koji traže programski jezik ili način da pobjegnu iz čistilišta i stvore kul stvari. A volio bih čuti i o vašim iskustvima!

Ako vam se svidio ovaj članak, razmislite o provjeri mojih igara i knjiga, pretplati se na moj YouTube kanal ili se pridružite Entromancy Discord .

MS Farzan, dr. Sc. napisao je i radio za istaknute tvrtke za video igre i uredničke web stranice kao što su Electronic Arts, Perfect World Entertainment, Modus Games i MMORPG.com, a služio je i kao upravitelj zajednice za igre poput Dungeons & Dragons Neverwinter i Mass Effect: Andromeda . Kreativni je direktor i vodeći dizajner igara Entromancy: Cyberpunk Fantasy RPG i autor knjige The Nightpath Trilogy . Pronađite MS Farzan na Twitteru @sominator.