Context: Sunt dezvoltator de jocuri de masă și comerciant digital și, după ce am petrecut mult timp în jurul jocurilor și computerelor, am decis că vreau să învăț să codez acum aproximativ 3 ani.

Am pornit la fel ca mulți, căutând, pe larg, ce limbă ar trebui să învăț și de unde, revenind la acest subiect de mai multe ori pe parcursul călătoriei mele. Am dat peste mai multe fire care sugerează o limbă sau o platformă de învățare peste alta și m-am gândit să împărtășesc experiența mea specială în cazul în care este utilă pentru altcineva în același proces de discernământ.

Declinare de responsabilitate: Nu sunt un programator profesionist și, deși îmi folosesc abilitățile pentru a-mi beneficia munca (puteți citi despre căutarea mea pentru un cadru prototip aici), codarea continuă să fie aditivă la activitatea mea principală, mai degrabă decât o sursă de venit. , orice îți spune asta.

De asemenea, avertisment: nu încerc să poziționez o limbă sau o platformă de învățare peste alta și, evident, nu am încercat să învăț fiecare limbă pe fiecare platformă. Următoarea este doar experiența mea, încercând să dau seama de cel mai sensibil mod de urmat într-un mediu confuz.

Poti de asemenea săriți în partea de jos pentru TL; DR.

Prolog: C ++

Nu sunt foarte sigur dacă știam deja că C ++ a fost și continuă să fie o piatră de temelie în dezvoltarea jocurilor video. Poate că l-am văzut într-una dintre acele infografii „Ce limbaj de programare ar trebui să învăț” care sunt în jur. Dar am vrut să aflu mai multe despre modul în care sunt făcute jocurile și despre cum să vorbesc cu computerul. Sunt destul de prietenos cu tehnologia și am construit sau amintit de propriile PC-uri, gândindu-mă că acest lucru s-ar putea pretinde experienței de a învăța cum să codez.

Sfânt fumează, aș fi fost departe de adâncimea mea. Am făcut câteva tutoriale online (cred că learncpp sau similar) și în curând mi-am dat seama că aș avea nevoie de mai multe îndrumări pentru a înțelege principiile de programare de bază orientate pe obiecte, într-un limbaj mai ușor accesibil, decât găseam în învățarea C ++.

HTML, CSS, JavaScript și Python

Înainte de a mă apuca de această aventură, am avut deja puțină experiență HTML și am dat peste Codecademie. Mi-a plăcut foarte mult capacitatea de a face tutoriale din browser și fără a fi nevoie să configurez un IDE (a face acest lucru pentru C ++ a fost o experiență dificilă). Am consumat rapid toate lecțiile Codecademy despre HTML și CSS. Calea naturală din acel moment a fost să fac cursul JavaScript, care mi-a plăcut. Dar în curând m-am trezit în „purgatoriul tutorial” (nu referința mea), lucrând prin cursul Python și altele.

Ar trebui, de asemenea, să menționez că am finalizat cursurile Codecademy ca utilizator gratuit, nevrând să plătesc o taxă de abonament pentru ceea ce ofereau în acel moment, care includea proiecte și sprijin pentru mentori.

Am învățat o mulțime de elemente de bază din Codecademy și principiile generale OOP, dar nu am terminat aplicând multe din ele fără o cale clară înainte. M-am întors la căutarea mea (pe cine glumesc, am petrecut mult timp cercetând în același timp alte limbi, platforme de învățare și bootcamp-uri de-a lungul întregului proces) și am decis că doresc să aflu mai multe despre dezvoltarea jocurilor prin cursuri pe Unity.

C #

am găsit Cursul Unity al lui Ben Tristem la una dintre perenele Udemy cu 10000% reducere la vânzări și a lucrat cu sârguință prin tutoriale pentru a construi clone de rupere de cărămidă 2D și alte jocuri. Am învățat doar C # pentru a trece, dar nu suficient pentru a mă simți încrezător în a face ceva singur.

Unitate în sine era probabil mai mult un obstacol aici decât instrucțiunile lui Tristrem și co., care erau de fapt destul de bune. Editorul Unity este o bestie a unui motor, cu o mulțime de instrumente bune care sunt impenetrabile pentru un utilizator începător (din nou, puteți citi mai multe despre experiența mea cu Unity aici).

Încă simt că am învățat multe din cursuri și simplul act de a fi expus la fluxul de lucru dorit de C # și Unity, dar nu am obținut suficient din experiență pentru a continua. Un prieten de-al meu mi-a dat un sfat să arunc o privire la Routech, unde am urmat.

Înapoi la JavaScript

La prima înroșire, Routech are aspectul unei Codecademy sau mai puțin strălucitoare Casă in copac. Dar mi-a plăcut cât de simple erau tutorialele și nu a trebuit să trec peste un paravan de plăți pentru a face progrese. Am luat locul unde am rămas, învățând HTML și CSS, făcând progrese bune până când am ajuns la proiectele Responsive Web Design care sunt necesare pentru a finaliza prima secțiune și pentru a primi o certificare.

Pot spune cu certitudine că acesta a fost momentul (sau o serie de momente) ale expulzării mele din purgatoriul tutorial. Pentru un novice fără o experiență profesională reală de design web și cu dorința de a-mi găsi propriile soluții fără ca Google să răspundă, proiectele au fost greu. În cele din urmă am câștigat și am făcut câteva site-uri prostești care îndeplineau cerințele, dar experiența m-a încurajat să lucrez prin mai multe tutoriale Routech pe biblioteci front-end JavaScript și framework-uri back-end.

Mai important, am început să lucrez la propriile mele proiecte legate de web CodePen și proiecte de joc folosind o grămadă de motoare diferite. De asemenea, am început să folosesc Python pentru a face câteva analize sociale de bază în munca de zi cu zi și mi s-a părut de ajutor.

Purgatoriul post-tutorial

Avansează mult timp mai târziu și acum lucrez la mai multe proiecte legate de jocuri în Phaser și Unity (în special, a prototip digital Pentru o joc de cărți de masă Mă dezvolt). Am petrecut o groază de timp în documentația cadru și Stack Overflow căutând răspunsuri și cele mai bune practici pentru lucruri (conectând această postare încă o dată pentru o măsură bună). De asemenea, am dezvoltat prietenii cu câțiva colegi care sunt ei înșiși programatori și mi-a fost de ajutor să rulez codul lor pentru sfaturi și feedback.

Un lucru care a fost util la lucrul la propriile mele proiecte este doar experiența de bază a configurării unui flux de lucru. Învățarea de a folosi linia de comandă și Git împreună cu configurarea NPM și un editor de cod, de exemplu, a fost deschiderea ochilor (în special venind de la CodePen, care face totul pentru dvs.). În bine sau în rău, majoritatea tutorialelor nu vă expun la puterea instrumentelor de care veți avea nevoie pentru a vă face treaba și există multe de învățat.

Dacă citești acest lucru și cauți „și tocmai am primit primul loc de muncă ca programator!” declarație, îmi pare rău că dezamăgesc! Acesta nu a fost obiectivul meu (cel puțin până acum), dar am câteva învățături de bază TL; DR de împărtășit care pot fi utile pentru oricine este, de asemenea, în căutarea unui limbaj de programare sau cum să scape din purgatoriul tutorial.

TL; DR

JavaScript:

  • Pro: Un punct de intrare foarte bun în programarea orientată pe obiecte de învățare, mai ales dacă sunteți interesat de orice fel de dezvoltare web (front sau back end). Puteți afla acest lucru prin majoritatea platformelor, dar experiența mea a fost cea mai bine servită de Routech.
  • Contra: Multe site-uri vă vor spune că „rulează doar în browserul dvs.”, astfel încât „nu trebuie să configurați un IDE” și, prin urmare, este mai ușor de învățat, dar această mentalitate vă va duce până acum. Dacă aveți de gând să faceți o dezvoltare semnificativă cu cadrul JavaScript popular (React, Vue, Express etc.), veți finaliza configurarea ceva IDE-adiacent cu un editor de cod, manager de pachete, dependențe etc., fără tipul de asistență de la care veți primi, să zicem, configurarea .NET sau similar.

Piton:

  • Pro: Super prietenos pentru noii veniți, dacă aparatele dentare în alte limbi sunt intimidante la început și un punct bun de intrare dacă sunteți interesat să intrați în programarea back-end sau în știința datelor. Am avut o experiență inițială bună la bord prin Codecademy.
  • Con: Opțiunile dvs. sunt puțin limitate dacă doriți să intrați în front end sau în dezvoltarea jocului. Există cadre, de exemplu, care vă permit să creați jocuri (PyGame, de exemplu), dar dacă te uiți în mod specific la dezvoltarea jocului, ai fi mai bine deservit în altă parte.

C #:

  • Pro: un limbaj foarte plăcut, bine susținut de Microsoft și de comunitatea open source. Cu acesta, puteți face dezvoltare back-end, crea aplicații desktop, creați jocuri (mai ales cu Unity, dar există și alte motoare precum Monogame acolo). Poate fi o opinie nepopulară, dar aș recomanda să înveți mai întâi C # Tutoriale Microsoft sau în altă parte și apoi Unitatea de învățare pentru a ușura o parte din sarcina cognitivă impusă de complexitatea editorului.
  • Con: Nu prea vorbești aici, dacă nu ești cu adevărat nu ca Microsoft sau chiar do doresc să lucreze la dezvoltarea web front end (presupun că ai putea să te uiți la Blazor, dar nu aș recomanda să începeți de aici). Aș putea spune multe despre modul în care Unity își poate îmbunătăți experiența utilizatorului, de exemplu, dar C # în sine este minunat.

Gânduri generale despre învățarea și evadarea tutorialului purgatoriu:

  • Una dintre frustrările mele în procesul meu de a pune întrebarea „ce limbaj de programare ar trebui să învăț?” ceea ce am simțit a fost răspunsul insuficient al „bine, ce vrei să construiești?” Am întâlnit mult acest răspuns și nu cred că este modul corect de abordare a învățării cum să programezi dacă nu știi deja ce vrei să faci cu el. Un începător nu are suficient context pentru a ști ce au poate sa construiți, să nu mai vorbim de ruta pentru a ajunge acolo (cu excepția cazului în care sunt tipul de persoană care vrea doar să facă jocuri sau vrea doar să obțină un loc de muncă ca dezvoltator web).
  • Un răspuns mai bun ar fi să spuneți „încercați câteva tutoriale pe diferite site-uri și în diferite limbi și vedeți dacă vă pare ceva interesant. Dacă da, rămâneți cu el; dacă nu, alegeți unul la întâmplare și vedeți unde te duce. Lucrurile pe care le vei învăța te vor ajuta indiferent de ceea ce vei face efectiv. “
  • În plus, dacă vă puteți forța să ieșiți din ecosistemul tutorial și pur și simplu face orice în afara mediului protejat care a fost configurat pentru dvs., vă va ajuta să vă învățați lucruri pe care trebuie să le cunoașteți în cele din urmă, cum ar fi configurarea unui IDE, căutarea răspunsurilor la întrebări și partajarea muncii dvs.

Sper că această postare este utilă pentru ceilalți care caută un limbaj de programare sau o modalitate de a scăpa de purgatoriul tutorial și de a construi lucruri interesante. Și mi-ar plăcea să aud și despre experiențele tale!

Dacă v-a plăcut acest articol, vă rugăm să luați în considerare verificându-mi jocurile și cărțile, abonându-mă la canalul meu YouTube, sau aderarea la Entromanta Discordie.

MS Farzan, Ph.D. a scris și a lucrat pentru companii de jocuri video de profil și site-uri editoriale precum Electronic Arts, Perfect World Entertainment, Modus Games și MMORPG.com și a servit ca Community Manager pentru jocuri precum Dungeons & Dragons Neverwinter și Mass Effect: Andromeda. El este directorul creativ și principalul designer de jocuri Entromancy: Un RPG Cyberpunk Fantasy și autor al Trilogia Nightpath. Găsiți MS Farzan pe Twitter @somnator.