Lecții după încă 3 luni de programat

Au trecut patru luni din 2020. Lumea pare un loc mult mai straniu față de ultima dată când am scris din cauza pandemiei de Covid-19. Mă întristează ce citesc despre cum se gestionează (sau nu) criza, dar în ciuda necunoscutelor și adaptărilor pentru statul acasă, am continuat să învăț să programez (și să învăț olandeză).

Acum trei luni cele mai importante lecții pe care le-am învățat au fost despre menținerea unui ritm constant de practică, adaptarea la un alt ritm de muncă (maker vs. manager) și importanța cărților și surselor în care poți să ai încredere. Pe vremea aia eram încă în așa-zisa lună de miere în care tutorialele și resursele de începători te ghidează prin tot, conform unui articol destul de cunoscut: Why Learning to Code is so Damn Hard.

Ce s-a schimbat

În ultimele trei luni am intrat în faza poreclită deșertul disperării (desert of despair), conform aceluiași articol. E ca atunci când dai jos roțile ajutătoare de la bicicletă odată ce ai avânt și de-acolo trebuie să te descurci, dar te panichezi brusc imediat cum îți dai seama că nu te mai ține nimic. Mai cad, mă mai julesc, dar pot să fac aplicații simple cu google și cărți de partea mea.

Între timp am completat programele de Responsive Web și Frontend Frameworks de pe freeCodeCamp — organizație non-profit creată de un auto-didact și îmbunătățită constant de voluntari și foști absolvenți. Fiecare curs prezintă niște noțiuni de bază, dar partea interesantă vine la sfârșit: trebuie să completezi cinci proiecte care să fie salvate undeva public și să treacă testele lor automatizate. Am construit deja aproape zece astfel de proiecte, cinci din ele cu React.

Am fost și la un eveniment din oraș despre framework-uri de frontend și am plecat cu o altfel de abordare a criteriilor care contează atunci când evaluezi un framework de frontend (față de când eram PM) și o idee despre cum arată piața. Ca paranteză, cred că eram patru femei într-o sală de 100 de oameni. Am continuat să citesc o grămadă de cărți care m-au ajutat să re-învăț cum să învăț, cu abordări noi și obiceiuri sănătoase.

Cred că încă sunt undeva în deșertul ăsta, dar acum văd oaza. Am intrat într-un ciclu în care pe măsură ce creez chestii, devine din ce mai ușor. E un sentient minunat când totul merge, dar e abia începutul.

Ce a fost nașpa

În spiritul onestității, evident că n-a decurs totul perfect. Foarte puține articole vorbesc despre stările sau mini-crizele prin care poți treci în acest deșert al disperării, așa că o să listez eu câteva. M-au frustrat multe lucruri și tot eu am fost (aproape) mereu sursa. N-am progresat atât de mult pe cât mi-am plănuit. Nu m-am prins de unele concepte așa repede cum zicea internetul că s-ar putea. N-am avut întotdeauna idei despre ce să construiesc, și nici nu m-am entuziasmat prea tare de unele proiecte pe care a trebuit să le fac, dar le-am făcut oricum pentru că totul m-a învățat ceva.

N-am fost alături de prietena mea cea mai apropiată de ziua ei, în San Francisco. N-am fost nici alături de tatăl meu sau de bunica mea de zilele lor de naștere. Am ajuns la dentist de câteva ori și mi-am întrerupt progresul timp de două zile când abia am prins un pic de avânt. M-am pleoștit de tot când a început toată treaba cu Covid-19 de la primul caz în Italia și până la primele măsuri serioase. Mi-ar fi plăcut să particip la un hackathon Code4Romania sau să fac ceva legat de Covid-19, dar încă nu știu să scriu cod production-ready.

Toate astea fiind zise, am rămas cu 3 lucruri noi pe care le-am învățat în ultimele trei luni.

1. Trebuie să ai o motivație puternică dacă vrei să treci peste greutăți

De ce te-ai apucat să programezi? Ce ți-a venit să-ți reinventezi cariera?

Îți trebuie un motiv bun ca să o iei de la zero într-un domeniu complet nou și să perseverezi când dai de greu. Pentru că sigur o să dai de greu. De multe ori m-am împiedicat de propriile sentimente de plictiseală, panică, frustrare și nesiguranță. Și problema e că emoțiile astea o să tot apară pe tot parcursul vieții profesionale, mai ales ca programator.

Dacă motivul e suficient de puternic, e mult mai ușor să continui și să ai încredere că toate emoțiile astea sunt temporare, ca vremea. Fiecare are altă sursă de energie, dar cred că atunci când motivul devine o parte din identitate, îți dă starea aia de nerăbdare în care simți că trebuie să faci ceva pentru că nu vrei să te dezamăgești pe tine însăți, sau pentru că alții depinde de tine.

Am întâlnit oameni care învață să programeze pentru că vor să scape de datorii după studii sau după o casă și un bebeluș, alții care vor să nu mai fie fără adăpost, sau alții care trebuie să aibă grijă de o rudă apropiată. Am întâlnit și oameni pe care îi motivează o curiozitate înnăscută despre cum funcționează lucrurile, indiferent care ar fi ele, și alții care au o viziune cât se poate de limpede despre ce fel de programatori vor să fie, ce probleme vor să rezolve și ce le place să facă.

Motivul meu are la bază lucruri care mi-au plăcut de când eram adolescentă dar pe care le-am uitat pe parcurs. A fost mult mai ușor să supraviețuiesc nopțile întunecate ale sufletului după ce am acordat mai multă atenție lucrurilor care mi-au făcut bucurie atunci și mi-am dat seama că încă trezesc același nivel de interes.

2. Analizează-ți greșelile și caută să înțelegi ce nu înțelegi

Înainte să mă apuc de programat am avut o slujbă cu niște ore și așteptări nesustenabile pe termen lung. În ciuda faptului ăsta, m-au tentat bootcampurile pentru programatori din cauza programei concentrate și ajutorul promis de profesori. Mă obișnuisem cu un ritm rapid, dar am uitat că în rolul de PM aveam automatisme dobândite din ultimii zece ani de muncă pe care nu le am ca programator de…trei luni. Până la urmă n-am ales niciunul. Am ales să progresez mai lent, dar mi-am delimitat mult mai bine timpul de lucru față de cel în care mănânc, dorm, fac sport, învăț olandeză sau fac alte lucruri care îmi fac plăcere.

Partea grea e că atunci că de unul singur nu ai oameni care să te ghideze constant sau să-ți fie mentori pe termen lung — trebuie să fii propriul critic și mentor. Mi-am creat o programă bazată pe ce aveau în bootcamp și am început un jurnal în care scriu despre ce fac, ce învăț, cum decurg proiectele și ce nu înțeleg. Mi-am creat deadline-uri arbitrare și încerc să ating unele standarde, pe care le ridic pe măsură ce învăț concepte noi.

Dacă dau peste ceva ce nu înțeleg, iau o pauză și reiau problema până când înțeleg ce se întâmplă. Cea mai mare frică e că o să trec peste și o să mă trezesc într-o zi că de fapt nu știu ce stă la baza unui concept fundamental pe care (teoretic) l-am învățat deja.

Ca o paranteză, e foarte ușor să iei scurtături ca să treci la următoarea etapă, mai ales în „deșertul disperării”. E plin de oameni foarte bine intenționați care sugerează să te „concentrezi pe părțile care îți plac” sau „nu-ți fă griji, o să găsești un library” sau „poți să cauți pe Google când dai de X” ca să nu te descurajezi. Sentimentul e nobil, dar interpretarea diferă de la om la om. Merge uneori, în unele situații în care chiar nu trebuie să reinventezi roata. Dar de fie care dată când am încercat să sar peste ceva n-am simțit că rămân cu ceva pe termen lung, pentru că nu s-a format nicio asociere în mintea mea — poate doar cu niște cuvinte cheie pe care să le caut în Google. Așa că mai bine încerc să mă descurc singură și abia după să văd ce face scurtătura.

Partea bună la învățat pe cont propriu e că dacă dau de o problemă, pot să iau o pauză și să las creierul să se odihnească. Nu mă aleargă nimeni să termin și să trec mai departe. Pot să exersez, să meditez sau să gătesc și să atac sursa nedumeririi cu o perspectivă nouă după câteva ore sau o zi. Chiar și-așa, e neplăcut să contemplezi ce nu știi să faci. E alarmant de ușor să devii copleșit, dar ego-ul e obstacolul aici.

Am pierdut șirul numărului de ședințe de meditație în care ar fi trebuit să-mi observ gândurile și tot ce am făcut a fost să mă gândesc la aplicații în care m-am împotmolit. A trebuit să-mi spun de multe ori că e OK, sunt obișnuită să fiu în control și să știu multe despre multe lucruri, dar acum sunt total pe dinafară dar n-o să învăț dacă mă panichez. O să fie așa o vreme până capăt experiență. Abia după aia pot să mă relaxez suficient cât privesc problema în ochi și să mă concentrez pe cel mai mic și potrivit pas pe care pot să îl fac înainte.

3. Încearcă să petreci 60% sau mai mult din săptămână lucrând la proiecte care te ajută să progresezi

E bine cunoscut faptul că poți să ajungi în “iadul tutorialelor” — poveștile celor care se lasă de programat sau care se simt ca niște impostori ca urmare îmi taie tot cheful. M-a surprins povestea lui Brad Frost, un designer relativ cunoscut pentru conceptul de Atomic Design. A scris despre cum s-a chinuit să învețe React, cum a eșuat un interviu la Google pentru că nu știa foarte mult JavaScript și cum a ajuns să evite orice asociere cu frontend în titlul pe care îl folosește.

Am vrut să evit cu orice preț așa-zisul iad și am vrut să ajung într-un punct în care să pot să arăt cu degetul la niște lucruri pe care le-am făcut eu, nu copiate dintr-un tutorial în care codezi în paralel cu prezentatorul.Tim Ferriss are un citat care se potrivește aici: Oamenii ar trebui să se axeze pe a fi productivi, nu pe a fi ocupați. Ideea de productivitate poate avea conotații negative, dar ideea e să te ocupi cu lucruri care să te ajute să progresezi la următorul nivel.

M-au ajutat două întrebări pe care mi le-am pus mereu ca PM:

  1. Dacă ai avea doar cinci pași ca să ajungi la rezultatul dorit, care ar fi?
  2. Care e rezultatul final la care lumea se așteaptă și în urma căruia vei fi evaluată?

Pornind de aici, îmi petrec 60% din timp pe proiectele care mă cară mai departe. Restul e ocupat cu lecțiile de olandeză, tot felul de sarcini (de ex. dentist, taxe, chestii prin casă), mișcare, etc. — lucruri pe care nu am cum sau nu vreau să le dau altcuiva să le facă.

Asta nu înseamnă că nu o ard aiurea și fac doomsurfing prin aceleași 3-4 aplicații și trimit tweeturi outraged la prieteni dar nu tratez momentele alea ca sfârșitul lumii pentru că știu că am destule oportunități și ore în care să lucrez la ce trebuie.

Îmi place și am adoptat expresia „nu încheia săptămâna fără să ai ceva ce poți arăta” (adaptată de la don’t end the week with nothing). Am învățat cât de mult contează să construiești și să faci publice multe proiecte, fiecare din ce în ce mai greu. La început părea ciudat, pentru că GitHub e pentru unii programatori ca Instagram pentru restul lumii: un loc în care să-ți prezinți unghiul cel mai flatant. Nu vezi zecile sau sutele de repo-uri private la fel cum nu vezi toate selfie-urile care n-au fost suficient de bune, sau nu mai vezi pozele din arhivă pe care oamenii le fac să dispară după o vreme.

Pe viitor

Planul pe următoarele trei luni e fluid. Vreau să ajung într-un punct în care să pot să îmi caut de lucru și să dezvolt o oarecare fluență pe care încă nu o am (cum n-o am nici în olandeză). Încerc să nu mă compar cu oameni mult mai avansați ca mine. O să mă concentrez pe proiecte din ce în ce mai complexe — jocuri sau aplicații — cu pași mici dar siguri înainte. Vreau să am un portofoliu despre care să pot să vorbesc și pe care să vreau să îl arăt într-o întâlnire. E destul de optimist considerând că nu știu dacă o să ajung să mă tund în următoarele trei luni, dar considerând că nu fac decât să stau în casă poate nu e așa de nerealist!

Pe următoarele trei luni.

7 Replies to “Lecții după încă 3 luni de programat”

  1. Nu am idee cum am ajuns la articolul de față (feedly, clar), dar îți pot zice că profilul de GitHub, CodePen, Fiddle, StackOverflow, LinkedIn șamd sunt overrated. Dacă treci proba tehnică la angajare și te plac viitorii colegi, aia este tot ce contează.

    Lucru de ceva ani la o companie britanică din Londra și am văzut că nu se dă prea mare importanță conturilor online. Mai importantă este dorința ta de a învăța, adaptarea.

    De fel, dacă angajează la noi oameni care au făcut bootcamp, atunci știm că omul a învățat să facă ceva chestii specifice, dar că mai are de lucrat la conceptele de bază., gen ReactJs versus vanilla JS. E ok.

    Oricum, una este să fii PM și alta este să sari gardul în ograda devilor. Experiența de PM o să te ajute să planifici mai bine efortul și prioritățile. Have fun.

  2. Mersi de încurajare 🙂 cred că am rămas cu impresia că e mult mai greu să fii developer pentru că în SUA, unde am lucrat, tot procesul e mult mai anevoios decât în Europa. Sunt obișnuită cu ideea de 5-6 runde până să decidă cineva dacă vrea să te angajeze sau nu. Nu știu exact ce află din atâtea runde ce n-ar putea din mai puțin timp dar cert e că și responsabilitatea la început e mult mai mare.

  3. Ti-am citit cu drag posturile despre noua cale pe care o urmezi. Poate, si din considerentul ca sunt in aceeasi pozitie, cu cateva luni in urma insa: PM, invat germana si incep software development. Ce resurse te-au ajutat cel mai mult? Ce carti te-au facut sa simti ca progresezi mai bine si mai repede?

  4. Hei! Mult succes cu Germana. Sau cum zicem aici, veel success met je Duits 🙂

    Pe mine m-au ajutat:

    • freeCodecCamp, o vreme. Imi place faptul ca te pun sa faci proiecte si trebuie sa te descurci.
    • Scrimba. Unele cursuri sunt mai bune ca altele. Mie mi-a placut bootcamp-ul lor de React. Dar ar putea sa fie utile chestiile gen algorithms for the working developer.
    • Traversy Media pe YouTube, aka Brad Traversy. E un tip din Boston cu o abordare directa si onesta
    • Carti: m-am tot invartit intre Eloquent JavaScript, You Don’t Know JS si JavaScript de David Flanagan (O’Reilly). Cand nu intelegeam in vreuna din ele sau nu era destula informatie ma duceam la alta si tot asa. Legate de programat in general, probabil Algorithms to Live By de Brian Christian si Tom Griffiths ca sa intelegi semnificatia si implicatiile unor algoritme (si de ce sunt importante in programare), o carticica mai obscura “How Do It Know” de Scott J. Clark, si mai incolo A Philosophy of Software Design de John Ousterhout.

    Inca n-am citit carti ‘clasice’ recomandate programatorilor dar o sa scriu despre ele mai tarziu daca ma apuc.

  5. M-am apucat de programare web prin 2012, în ideea de a munci pentru mine, gen freelancer pentru ca nu m-am simțit niciodată grozav prin firme.

    Uitându-mă înapoi a fost un drum lung și dificil. În continuare este pentru ca trebuie sa ții pasul cu tehnologia dar m-am obișnuit.

    Am observat ca multă lume vrea sa facă pasul către o cariera în programare. Tutoriale sunt peste tot, la un nivel foarte bun. Deja nu se mai pune problema de lipsa resurselor pentru a învața.

    Ma gândeam sa îmi dedic o mica parte a timpului pentru mentorat. Întrebarea mea pentru cineva care e la început de drum: simți nevoia sa lucrezi și sa înveți alături de cineva mai experimentat sau sunt suficiente tutorialele și programele pe care le găsești pe internet?

  6. Hei! Înțeleg perfect ideea de a lucra pentru tine, cred că și eu ajung la o concluzie similară după mulți ani de firme.

    Aș zice că e absolut nevoie de mentori, cel puțin din perspectiva mea. A explodat numărul de tutoriale, și, cum spunea articolul pe care l-am dat mai sus, e foarte atractiv să rămâi în lumea tutorialelor care te țin de mână, dar nu progresezi mai departe de capul tău.

    Cred că de-acolo e nevoie mare de mentor: cineva care să-ți spună cât să stai pe un subiect sau o problemă și când să treci mai departe, să-ți răspundă la întrebări când te apuci de primul proiect solo de la zero și să te ajute să le formulezi sau să te ajuți pe tine însuți, să te educe în privința unor pattern-uri ca să nu te demoralizezi și să înveți/să fii productiv, etc.

    Nu știu în ce țară ești, dar în SUA există sau e promovată în mediul profesional un fel de cultură a mentoratului/sponsorilor. Nu cred că în Europa e cazul, dar relația și așteptările trebuie înțelese de ambele părți, mentee și mentor, ca experiența să nu fie dezamăgitoare sau epuizantă. Pentru mine mentorul e o persoană la care mă duc după ce am încercat deja niște lucruri sau am ipoteze despre cum să abordez problema, nu ca să îmi dea răspunsuri mură în gură.

    Am avut noroc de foști colegi la care să pot să apelez și să mă ajute în sensul ăsta, dar ideea de un mentor stabil cu care să ai o relație formală dar prietenoasă și cu care să te întâlnești la un interval regulat ar fi ideală.

Leave a Reply

Your email address will not be published. Required fields are marked *