De ce este codarea atât de dificilă? | Partea 1

Aceasta este o postare despre un subiect tehnic: codarea. Dar, ca să fie clar, nu am o pregătire tehnică.

Sunt fiul mândru al unui artist care m-a învățat cum să-mi folosesc emoțiile ca o busolă de ghidare pentru a naviga în viață, mai degrabă decât logica. Argila, grafitul, cerneala, cerneala, vopseaua, pânza, hârtia și adezivul îmi curg prin vene.

M-am luptat la școală din mai multe motive – printre ele se numărau două dizabilități de învățare: leziuni ale nervilor cerebrali din cauza unor complicații la naștere și dislexia și care avea să rămână nediagnosticată până la sfârșitul vârstei de 20 de ani. Cele mai bune rezultate ale mele la teste au fost atât de proaste încât aproape că nu am reușit să intru la facultate.

Am studiat științe politice în școală și primele mele încercări eșuate de carieră au fost în domeniul filmului și al designului grafic.

Am învățat singur cum să codez – este unul dintre cele mai grele lucruri pe care le-am făcut vreodată. De asemenea, am predat cod la un bootcamp aici, în D.C., timp de aproximativ 5 ani și mi-am îndrumat prietenii din când în când.

În timp ce este greu, nu este imposibil. Când ești autodidact, înveți bucățele. Uneori, ceva are sens imediat, în timp ce altele vor face clic peste ani de zile. Calea explicației este bine străbătută, dar am constatat că experiențele tale de viață, dispozițiile și educația ta înseamnă că jumătate din bătălia ta constă în găsirea resurselor de învățare potrivite.

Două lucruri înainte de a începe:

  1. Dacă eu pot să o fac, poți și tu.
  2. Nu ești singur.

Vocular nou, concepte noi, noi… totul

Una dintre barierele dificile pentru a învăța să codezi este că termenii folosiți pentru a descrie ceva în „limbajul de cod” pot însemna adesea cu totul altceva în engleza obișnuită. Exemplul meu preferat este cuvântul „Clasă”.

În mod diferit de conotațiile academice sau sociologice cu care suntem obișnuiți, o Clasă în limbajul de programare este diferită în funcție de limbajul de programare pe care îl folosiți. Încă și mai confuz în aceste limbaje de programare diferite, o Clasă este atât de legată conceptual suficient de mult pentru a trage paralele de asemănare cu privire la motivul pentru care autorii săi originali au ales să fie numită Clasă, dar utilizarea efectivă este suficient de diferită încât să fie cu adevărat cu totul altceva. (În special clasele CSS vs. clasele orientate pe obiecte)

Să vorbești codul este aproape asemănător cu argoul, ceea ce, după cum știe orice părinte, este frustrant. Poate fi greu la început să semnalezi ce este un cuvânt englezesc normal și ce este un termen „de cod”.

În plus, adesea le auziți în succesiune rapidă, astfel încât o propoziție completă de vorbire a codului va fi corectă din punct de vedere gramatical și veți cunoaște fiecare dintre cuvinte separat, dar nu și atunci când sunt aranjate în acest mod.

„După ce am curățat atât memoria cache a browserului pe local și i-am cerut lui John să curețe memoria cache a serverului pe staging, crezând că trebuie să fie vreun fel de problemă de memorie persistentă sau de stare, s-a dovedit a fi o coliziune de denumire care suprascria invocările definite mai devreme în rădăcină. Voi face un bilet pentru a adăuga hărți de sursă, astfel încât să putem urmări mai ușor instanțierile în loc să căutăm în repo.” -Firmația reală pe care i-am spus-o șefului meu, care a dat din cap aprobator.

Nu doar să începi de la zero, ci să definești ce este zero

Peste toate acestea, există concepte pe care nu a trebuit să le întâlnești niciodată înainte, cu atât mai puțin să te lupți cu ele.

Un exemplu pe care îmi place să îl folosesc cu studenții mei este:
Să zicem că vrei să îți programezi calculatorul să îți facă o ceașcă de cafea. Simplu, nu-i așa?

Tu: Hei Computer: fă-mi o ceașcă de cafea.

Computer: BEEP BOOP: SIGUR PAT. CE ESTE CAFEA ȘI CE SE FACE?

Imaginați-vă toate modurile în care ați putea face cafea… apoi imaginați-vă procesul de obținere a boabelor de cafea din copacul în care au crescut, într-o formă pe care o puteți folosi în acest proces… yikes.

De multe ori pornim de la zero și chiar și lucrurile mici și simple pentru noi sunt, de fapt, de multe ori uimitor de complexe de realizat cu ajutorul codului.

Nu trebuie doar să programezi lucrurile, trebuie să definești ce sunt ele în primul rând. Apoi, trebuie să vă întăriți codul pentru a gestiona toate modurile posibile în care ar putea merge prost. Sarcinile simple devin catedrale uimitoare care onorează zeii explicitului.

„Just Google it”

Poate că sfatul care mă exasperează cel mai mult din partea colegilor mei către noii dezvoltatori este „caută pe Google”.

Cineva care a fost cu pieptul în noroi știe cât de nefolositor este acest lucru.

A. Nu știi cum să diagnostichezi ce este în neregulă, așa că nu știi nici măcar de unde să începi. (Dacă ați fi știut, nu ați fi întrebat).
B. Chiar dacă ați ști, nu știți ce termeni sunt asociați cu problema.
C. Și chiar dacă ați ști, rezultatele sunt adesea atât de deconcertante încât nu le-ați recunoaște nici dacă ar fi chiar în fața dvs. (Sau, așa cum spunea bunicul meu, nu ai fi în stare să torni apă dintr-o cizmă dacă ar exista instrucțiuni pe fundul ei.)

Codarea este ca o limbă străină

Există paralele izbitoare între a învăța să codezi și a învăța o limbă străină. Am constatat că studenții unei limbi străine, englezești sau de altă natură, tind să preia mai repede sintaxa.

Da, există modele și logică în sisteme.

Da, unele lucruri sunt idiosincratice și nu pot fi transmise succint în echivalentul lor englezesc.

Da, există excepții la cele 2 puncte de mai sus care se contrazic sau nu au sens, dar așa stau lucrurile, așa că trebuie să le memorezi.

Jumătate pastor / Jumătate om de știință

Poate cea mai înnebunitoare contradicție pe care trebuie să o îndeplinească un programator este că ai sarcina de a ști cum funcționează totul, dar și de a pune o majoritate sănătoasă pe seama credinței.

Pentru a programa, trebuie să folosești logica, rațiunea și inferența. Depanarea este un proces deductiv. Un cod bun este bine structurat, deliberat logic și bine organizat.

Pe de altă parte, folosim pietre pe care le-am păcălit să gândească (calculatoare). Ne bazăm pe framework-uri, biblioteci și fragmente scrise de alți oameni pe care fie nu le înțelegem din cauza timpului, fie le luăm pur și simplu pe încredere. Se întâmplă atât de multe lucruri în fiecare linie de cod încât nu am putea niciodată să terminăm funcția dacă ar trebui să ne oprim și să ne gândim la ce fac toate acestea.

Pentru a fi programator, trebuie să fii atât o parte preot/preoteasă bazată pe credință, cât și un logician Spock rece ca piatra.

Imagine via Paramount Pictures.

Concluzie

Așa că, după cum puteți vedea, avem mult de lucru. Dar, așa cum nu am venit pe această lume știind cum să vorbim, sau să scriem, sau să îndeplinim oricare dintre sarcinile pe care acum le considerăm de rutină, dar cu care cândva ne luptam: putem să o facem.

Veritatea profundă din spatele codării este că ea este produsul, nivelul celor mai bune eforturi – bunele intenții – darul onest al unor oameni foarte inteligenți de a face viața mai ușoară. O persoană inteligentă, undeva, a spus: „Asta e nașpa. Trebuie să existe o cale mai bună decât asta.”

Și codul a respirat pentru prima dată.

În secțiunea următoare, vă voi oferi câteva strategii pentru a netezi acest proces și a vă face să vă îndreptați spre obiectivele dumneavoastră. Codul este aici pentru a rămâne, este aici pentru a ajuta și, dacă nu altceva, s-ar putea să vă distrați puțin.

.

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată.