A trecut un an de cand am devenit programator

Luna asta sărbătoresc un an de de când m-am angajat ca programator. Mi-am amintit mai mult din cauză că un coleg a avut un bebe fix când intervievam (și a trebuit să fugă la spital), și recent i-a sarbatorit ziua de nastere 🙂

Am mai scris despre primele 3 luni după ce m-am apucat de învățat programat, dupa care la șase luni, după care atunci când m-am angajat și experienta interviului. De atunci n-am mai avut timp să scriu la fel de des despre traiectoria pe care am luat-o – și nici n-ar fi fost la fel de intersant – dar acum că s-a făcut un an, am zis ca e un moment propice sa reflectez.

La ce-am lucrat în ultimul an

Am scris mai demult că am pornit la drum cu Javascript/Typescript și React.

Partea bună a fost că erau și încă sunt limbaje sau tehnologii populare, bine cunoscute, cu un feedback loop short, în care afli foarte repede ce faci bine și ce-ai greșit. Partea neplacută e că ecosistemul de tehnologii care sprijină programatul front-end a devenit foarte complex in ultimul deceniu. E mult de învățat în toate direcțiile, dar nu regret decizia. Partea buna a fost că munca pe care o fac utilizează fix cunoștințele pe care le acumulasem, în sensul că n-a trebuit să învăț ceva total nou ca să fiu utilă. Plus, de atunci mi s-au extins orizonturile considerabil.

Lucrez pentru o companie mică unde dezvoltăm aplicații pentru Atlassian, de obicei pentru Jira și Confluence. În alte cuvinte, în funcție de cum privești lucrurile, ori îmbunătățesc, ori înrăutățesc Jira cu fiecare linie de cod pe care o scriu. Deși folosisem Jira extensiv ca product manager în slujbele anterioare, nu stiam că există un ecosistem de dezvoltatori de aplicații. Surpriza a fost nu doar că există, ci și că e foarte profitabil. După cum se laudă Atlassian, acest Marketplace în care ne vindem aplicațiile a depășit venituri de 1 miliard de dolari, și peste 60% dintre clienții Jira Software și Confluence folosesc cel puțin o aplicație din Marketplace.

Ca paranteză, nu sunt neapărat o fană a produselor Atlassian, dar nu e o condiție necesară muncii. Îi văd utilitatea și pot apreciez faptul că Atlassian e un gigant care s-a dezvoltat fără bani de la investitori încă din 2002, iar acum e aproape sinonimă cu conceptul tradițional de management de proiecte softare (și nu numai).

Revenind, în mod specific, lucrez la aplicațiile pentru cei care folosesc Atlassian în cloud și fac cam de toate: front-end, backend, uneori lucruri care pare un pic DevOps. Nu am vrut niciodată să mă limitez doar la front-end, așa că sunt destul de fericită în privința asta.

Prima aplicație pe care am construit-o ca să învăț a fost ceva mai mult ca o glumă, dar acum face bani.  În prima lună, am făcut o aplicație care adaugă notițe autocolante colorate pentru documente în Confluence. Atât. A fost un prilej de joacă cu niște Javascript și CSS ca să fac mărimea fontului să crească sau să scadă automat, după care am lansat-o. Dar în Marketplace aparent chiar și asta poate să facă bani dacă e amuzantă, are utilitate, și/sau trece suficient timp până să o descopere cineva. Ca atare, după un an, aplicația chiar are clienți care ne plătesc sume mici, dar nu insemnificative.

Cea mai mare parte a timpului mi-o petrec pe o aplicație a unui client, construită pe infrastructura AWS (serverless). Lucrez cu un singur alt programator, care e liderul tehnic pe proiect si persoana cu care interactionez cel mai mult. Aplicația constă într-o serie de funcții care gestionează evenimente din Atlassian pe care le trebuie să le procesăm. E atât de complexă și cu atât de multe părți (cel puțin pentru o aplicație pe care o folosești în Jira), încât la început abia înțelegeam ce rol joacă toate componentele (de la Serverless până la Redis) și abia reușeam să repar un bug o dată la două săptămâni. Acum, după un an, reușesc să termin aproape jumătate din estimările la care ne angajăm o dată la două săptămâni, fără foarte mult ajutor de la colegul meu. Cel mai mult îmi place să lucrez la lucrurile care nu-l entuziasmează pe el: de obicei rescriu frontend-ul ca să fie mai ușor de înțeles și utilizat, și am introdus o modalitate mai logică de a executa migrații de date (în baza de date Postgres cu TypeORM). Auzeam mereu de migrații ca fiind stresante, dar mă bucur că am trecut pragul ăsta psihologic la un an după ce am încept să lucrez.

Dezavantaje și dezamăgiri

Pe lângă faptul că nu trece zi fără gândul, “Cine folosește funcționalitatea asta în Atlassian? Spune-mi CINE?? Și mai ales, de ce??” N-au fost multe episoade negative.

Am construit proiecte care nu au fost lansate. Am lucrat la două aplicații ce (probabil) nu vor vedea niciodată lumina zilei, din varii motive. Se întâmplă peste tot, nu înregistrăm succese tot timpul, dar măcar tăiem inițiative din scurt dacă nu merg. Chiar și-așa, mi-au plăcut ambele și tot am învățat din ele, mai ales că erau pentru niște clienți exigenți care vroiau ca totul, mai ales gestionarea erorilor mici sau mari, să fie bine făcut.

Am avut și un moment în care m-am angrenat la ceva mult peste nivelul meu, unde șeful meu a trebuit să rezolve problema și să-mi arate cum ar fi trebuit să fac de fapt. E foooaarte posibil că știa că n-o să mă descurc, dar a fost un eșec din care să trebuiască să învăț, ca să nu-l repet când miza ar fi fost mai mare.

Per total, cum zice șeful meu,

“Working with the Atlassian product suite is probably one of the most challenging things you’ve done as a software engineer. Unless you’ve worked with Salesforce. In that case: hat-tip to you.”

Acum că am experiența asta de un an, tind să fiu de acord  🙂

Per total

Am bănuit că o să-mi placă să fiu programator, și măcar pot să-mi confirm bănuiala. Îmi place să rezolv probleme din ce în ce mai complexe, chiar dacă uneori pendulez intre agonie și extaz când lucrurile merg (sau nu).

Sunt chiar mult mai fericită acum decât atunci când am început și totul erau nou, și mi-era frică de tot ce știam că nu știu. Acum simt că încet, dar sigur, mi se dezvoltă încrederea în sine și cunoștințele. Cu fiecare proiect devin mai adeptă la rezolvat probleme, mai bună la gestionarea timpului, simt că mi se îmbunătățește memoria (acum am o geografie mentală a proiectelor la care lucrez), gândirea analitică și logică, comunic mai bine în scris sau verbal, și tot așa. Ce-mi dă cea mai multă speranță e să privesc înapoi la locul din care am început și să-mi dau seama cât de departe am ajuns.

Continuă să-mi placă să lucrez de la distanță (de acasă), dar deja fac asta de aproape patru ani, așa că nu s-a schimbat foarte mult pe planul ăsta – doar peisajul de afară e un pic diferit acum că sunt în Varșovia. Îmi place faptul că am ajuns într-un moment pe care mi l-am dorit atunci când m-am reprofilat, și simt o stare de liniște foarte plăcută.

Ce urmează?

Încă nu știu sigur pe plan de aprofundat tehnologii și limbaje- știu doar că o să rămân la compania la care sunt pentru câteva luni, doar că mă mut la un orar de muncă de trei zile pe săptămână cât învăț niște poloneză, mă obișnuiesc cu locul și oamenii, și caut o casă. Abia atunci cred că o să trag o linie ca să-mi dau seama mai bine ce mi-a plăcut, la ce mă descurc, și ce-aș vrea să învăț.

Dacă ești și tu un programator începător sau te gândești să devii, răspund cu bucurie la întrebări (în limita timpului pe care îl am). Nu știu ce ar vrea lumea să afle, așa că lăsați orice eventuale întrebări în comentarii.

Plus, chiar dacă nu ești programator, dar simți că n-ai pe cineva care să-ți răspundă în mod obiectiv la întrebări legate de subiect, pot să încerc să-ți răspund sau să trimit întrebarea cuiva care știe mai bine.

2 Replies to “A trecut un an de cand am devenit programator”

  1. Scratching the surface. IT e un domeniu atat de mare acum incat nimeni nu stie mai mult decat vreo cateva procente, sub 10 pentru un profesionist bun cu multa experienta. Pana si programarea e suficient de complexa incat sa ai expertiza foarte diferita intr-un singur sistem; spre exemplu, o aplicatie 3 tiered in care munca de front-end (JS, CSS, React/Vue/Angular) e foarte diferita de middleware (node.js, .NET, PHP si inca 20 de variante mainstream) si de backend (orice SQL sau NOSQL).

    Cum iti dai seama de asta? Cand ai in jur “full-stack engineers” si incepi un proiect nou cu alta echipa, dai de un front-end engineer care habar nu are sa scrie .NET (C#/ F#) sau PHP sau SQL, dar iti face o interfata de cateva ori mai bine decat omul-orchestra. Sau cand omul-orchestra iti face o aplicatie, faci un capacity test cu date pe 3 ani (online retention time uzual in multe cazuri) si paginile se deschid in 30 de secunde sau mai mult. Dar cand dai de primul raport care dureaza 15 minute si afli ca SQL nu inseamna “SELECT * FROM tabela” cand ai tabela de 500GB si peste 1 trilion de inregistrari in ea …

    Si apoi afli ca exista programare pentru retea – TCP/IP, sockets, criptare etc. Sau interfete si n standarde folosite in diferite industrii, toate incompatibile (si cireasa de pe tort, SAP idocs). Si middleware care interfateaza sisteme (Dell Boomi si inca o duzina). Integration bus, message bus. Cozi, mesaje. Programare low level (C, C++) si embedded. Nebunia de software defined infrastructure sau software defined networks. Orchestrare. ML, AI. IOT. Toate optiunile, de la buzzwords gen blockchain la chestii serioase si utile. Si dupa vreo 5 ani, daca esti bun, iti dai seama cate nu stii si nu le vei sti vreodata. Si atunci iti alegi ce vrei sa faci in programare, in ce vrei sa fii foarte bun si privesti viata de programator cu alti ochi. Constient(a) de lumea care te inconjoara si de oaza ta de liniste sau galagie. Spor la programat.

  2. Te admir ca poti din astea. Am visat sa stiu programare de 20 de ani, de cand activez online. Din pacate, asta este, nu voi stii niciodata programare. si sunt prea ocupata si batrana sa mai invat 🙂

    Bravo tie ca esti deja atat de bine infipta dupa doar un an. Sa iti mearga totul bine si felicitari 🙂

Leave a Reply

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