Top 7 Mituri despre cariera în IT
În acest articol aș dori să explorăm câteva stereotipuri despre cariera de programator pe care le-am auzit din partea mai multor oameni pe parcursul anilor. Am incercat în acest articol să evit jargonul pentru a fi ușor de înteles și pentru cei care nu sunt în domeniu, însă am folosit cațiva termeni specifici pentru că sunt atât de des folosiți încât mi se pare anormal să-i traduc sau să-i înlocuiesc.
1) Toți programatorii câștigă salarii foarte mari
Acesta cred că este cel mai discutabil și fierbinte subiect când vine vorba despre programatori. Personal, nu știu exact motivele pentru care salariile inginerilor IT se cred:
- Așa umflate
- Prezintă un interes major pentru ceilalți
Unul din motivele pe care le pot gândi eu este că se crede că în IT toți au salarii exorbitante -
de mii de euro, fără a face mare lucru: stând la calculator, pe YouTube și Tiktok,
și din când în când mai câte un meeting
. Evident, ambele afirmații nu pot fi mai departe de adevăr.
Salariile programatorilor diferă foarte mult și depind de foarte mulți factori.
O generalizare pe acest subiect aproape de fiecare data este greșită.
Pentru cei de dinafara domeniului toți sunt IT-ști,
însă un inginer care lucrează pe embedded
este aproape la fel de diferit de un inginer
full-stack
ca și orice altă meserie - iar tehnologiille necesare de obicei dictează și nivelul salarial.
Ca exemplu, eu când am început să lucrez, în 2016, la o companie din Cluj-Napoca, am inceput cu un salariu net de 2300 Lei.
Vreau sa accentuez - Lei, nu euro/dolari/lire. Majoritatea colegilor mei aveau același salariu,
iar cei cu puțin mai multă experiență aveau în jur de 3000 lei.
Colegii de facultate care s-au angajat ca ingineri pe embedded
la alte firme aveau aproximativ același salariu,
iar măririle nu erau preconizate.
Al doilea factor major care determină nivelul salarial este experiența în domeniu și
nivelul de cunoștințe. La început, adică nivelul junior
, salariile vor fi de obicei mici spre medii(cu excepția unor companii)
pentru că nivelul de cunoștințe este limitat și este nevoie de mai mult ajutor din partea colegilor pentru a se integra pe proiect.
Ideea este că angajatorul îți oferă o oportunitate să înveți și să evoluezi, in timp ce lucrezi, și mai primești și salariu.
In principiu, sunt de acord cu această idee, însă unele companii abuzează de acest principiu și îl transformă într-o
formă de batjocură.
Într-adevăr, programatorii cu experiență și expertiză în domeniu pot ajunge la salarii impresionante,
dar merită de menționat un lucru: experții din multe alte domenii la fel ajung la salarii mari - agenți vânzări,
agenți imobiliari, medici, contabili, avocați, etc... De ce programatorii sunt printre cei mai discutați? Nu știu...
Când se vorbește despre salariu deseori se focusează doar pe acea valoare, însă nu se iau în calcul nenumărații ani
petrecuți în studiu, in experimentarea noilor tehnologii care apar in fiecare lună,
in exersarea interminabilă a codului și bunelor practici - și toate acestea în momente în care alții merg la chefuri,
stau cu prietenii la povești și se relaxează prin diverse metode.
Sa nu uităm încă un lucru - nivelul salarial depinde în măsura enormă de abilitatea fiecăruia de a-și negocia salariul.
E foarte simplu: știi să ceri, mai des ajungi la suma pe care ți-o dorești, nu știi să ceri,
ajungi sa primești la discreția altora.
Dar... Am observat exagerări și din partea cealaltă - începători care cer din start 15k Lei. Haideți să fim și serioși...
2) Ca să fii un programator de succes, trebuie neapărat să ai o diplomă în domeniu
Am auzit de faptul precum că trebuie neapărat să ai o facultate terminată ca sa fii un programator bun.
Desigur să ai o facultate in spate nu strică, dar cu siguranță nu determină nivelul tău de cunoștințe.
Eu am absolvit facultatea de electronică și telecomunicații din Cluj-Napoca și am lucrat in mai multe companii care
foloseau diferite tehnologii: unele le-am învățat la facultate gen C
și C++
, iar altele le-am învățat singur,
cum ar fi Python
, JavaScript
, AWS
și așa mai departe.
In rolul meu curent de cloud engineer
nu folosesc nimic din ce am făcut la facultate.
Totul am învățat singur sau in cadrul jobului.
În acest context aș putea spune că facultatea nu m-a ajutat cu nimic tehnic.
Unde eu as zice că m-a ajutat să am diplomele de licență și master este CV-ul.
Unele companii încă acceptă doar candidați care au o facultate in spate, însă acest lucru a început să se schimbe de ani buni.
Și pe bună dreptate - cu suficientă determinare poți învăța programarea singur,
acasă, și să ai mai multă experiență și succes decât cineva care a trecut prin facultate.
De fapt nu poți, e garantat să ai mai multe cunoștințe pentru că înveți mai focusat și structurat decât la facultate.
Eu daca as fi învățat 6 ani doar cloud
în loc de facultate eram expert,
însă am fost nevoit să învăț materii de la telefonie fixă până la matematici speciale(discutăm despre asta mai departe)
care nu mi-au marcat cariera sau cultura generală in niciun fel.
3) Trebuie să fii un geniu sau "cu cap mare" ca să lucrezi în IT
Ce prostie...
Eu nu sunt geniu, nici pe departe. Colegii mei nu sunt genii.
Colegii mei de la companiile trecute nu au fost genii. Nu știu dacă am avut vreun coleg care s-ar ridica la acest rang.
Da, colegi foarte deștepți am avut, colegi care îți puteau spune algoritmi din cap, și care puteau face debugging
fără sa vadă codul, dar pentru mine genialitatea este ceva diferit.
Geniu mi se pare cineva gen Linus Torvalds(lăsând aspectul interpersonal deoparte), care fără să
realizeze a schimbat lumea în moduri pe care nici nu și le-a imaginat, sau Guido van Rossum, Dennis Ritchie și Bjarne Stroustrup,
toți care în mod direct ne-au influențat carierele și în general toată tehnologia modernă.
O altă întrebare pe care am auzit-o des este daca trebuie sa știi matematica in special ca sa reușești ca programator.
La fel ca și facultatea - nu strică să ai idee de ea, dar nu am văzut să fie un impediment pentru mine.
De cele mai multe ori calculele pe care a trebuit să le fac erau din matematică simpla : calculul diferenței de ore, zile,
manipularea de pixeli, poziționarea exactă a elementelor pe pagină, etc.
Nu țin minte sa fi avut nevoie de integrale triple, derivate sau funcții diferențiale.
Un lucru cert este că matematica m-a ajutat să-mi dezvolt gândirea algoritmică, dar iarăși, nu e un lucru pe care
nu-l poți învăța singur, scriind cod.
4) Ca programator, tot ce faci la locul de muncă este să scrii cod
Această afirmație nu este total greșită, dar cu siguranță nu este completă.
Mai corect ar fi: ca și programator mai trebuie sa scrii și cod, deși acest lucru foarte mult depinde de poziție,
companie, proiect și așa mai departe. Un fapt am observat care este universal aplicabil - lucrul ca programator nu înseamnă doar
scrierea de cod, ci și numeroasele discuții despre cod: daily standup
pentru dezbateri și plângeri că ceva nu merge,
backlog refinement
pentru a dezbate existența și fiabilitatea anumitor tichete și sprint-planning
pentru a
crea tichete fara a te gândi daca trebuie, team sync-up
pentru a da raportul echipelor din India, SUA, UK,
Germania și tot așa.
Nu neapărat scrii cod, dar verifici codul altor colegi in procesul de peer review
- proces în care trebuie să
găsești echilibrul între a fi corect/exigent și amabil pentru a nu afecta orgoliul tehnic al autorului codului.
Pe lângă cod mai e nevoie de documentație, uneori de diferite niveluri, care descrie cum funcționează codul și
cum trebuie folosit pentru a evita zile întregi de încercări inutile.
Să nu mai zic de nenumăratele sesiuni de knowledge-sharing
, adică prezentări pe diferite teme ca best
practices
și know-how
pe care trebuie sa le faci pentru că dă bine la evaluarea de la sfârșitul anului.
5) Dacă nu vrei să interacționezi cu oamenii, ar trebui să te faci programator
Asta a fost unul din motivele pentru care mie mi s-a părut tentant acest domeniu - eu credeam că dacă învăț să
programez voi sta toată ziua în liniște, ascultând muzica preferată in căști fără să văd și să aud pe cineva.
După 13 ani trebuie sa recunosc că momentele in care pot asculta muzică sunt momente de lux, pe care le apreciez
enorm de mult - pentru că sunt foarte puține. De obicei fiecare zi incepe cu un stand-up meeting
care poate dura de la 15
minute până la o oră. În acest meeting
nu prea ai cum să nu vorbești și să nu interacționezi cu alții,
pentru că de cele mai multe ori(depinde de echipă) trebuie sa spui ceva chiar dacă nu ai nimic de spus.
Trebuie să inventezi ceva! Aceeași poveste este cu alte meeting-uri
: backlog-refinement
și sprint planning
: ar trebui să spui
ceva, ar trebui să ai o părere. În aceste meeting-uri
ai putea să nu spui nimic - dar să nu te miri că ți se aduce la
cunoștință la 1 on 1
că nu contribui suficient de mult.
Apropo de 1 on 1
- încă un meeting
în care nu poți să nu spui nimic pentru că e meeting-ul tău de fapt, unul în care poți
să-i spui ce dorești șefului tău, tot ce te doare, doar să ai in vedere să nu-l deranjezi prea tare.
El face același lucru, doar că de obicei nu-i pasă dacă te deranjează.
Cum am menționat mai sus in cadrul jobului
mai trebuie să faci anumite prezentări pe diferite subiecte (de obicei tehnice)
pentru alți colegi, alte echipe sau chiar alte departamente - depinde de structura companiei.
Deseori faci aceste prezentări cu alții - iarăși nu poți lucra independent.
În concluzie, daca ești introvert și vrei sa intri in domeniu ca să nu ai de interacționat cu alții vei avea mari surprize,
așa că cel mai bine ar fi să știi în ce te bagi.
Nu vreau să creez impresia că e un lucru rău - sa știi să interacționezi cu alții,
ba din contra, este o abilitate foarte utilă și în IT și înafara,
doar că unii vor plăti pentru această abilitate cu foarte mult stres și disconfort.
6) Dacă știi un limbaj de programare, ai viitorul asigurat pe viață
Semi-greșit! Cel puțin eu nu am putut găsi acel limbaj cu care să stau toată viața.
Desigur, daca vrei să lucrezi toată viața la aceeași companie(considerând că ei te vor ține până te pensionezi),
pe aceeași poziție e posibil să nu ai nevoie să înveți un alt limbaj.
Mai există posibilitatea să fii asigurat dacă înveți un limbaj de nișă, gen Cobol - un limbaj pe care nu foarte multă
lume îl cunoaște, însă mai e folosit la sisteme mai vechi(mainframe) care nu pot fi rescrise folosind limbaje de
programare moderne pentru că acele sisteme nu pot fi oprite. Aceste sisteme mai sunt folosite de bănci,
de structuri guvernamentale, etc...
Dacă nu te încântă ideea de a lucra într-un limbaj pe care îl știi tu și încă câteva mii de oameni din lume,
un limbaj pentru care posibil să fie documentație limitată sau lipsă de tutoriale pe YouTube,
atunci cel mai bine e să începi cu ceva mai modern, gen Python
, Go
sau JavaScript
.
Un lucru pe care l-am observat de-a lungul carierei mele în IT este că mereu trebuie să înveți dacă vrei
să continui să lucrezi în domeniu. Eu am început cu C++
după care am trecut la C
.
Am lucrat apoi în Python
după care Full-Stack
unde foloseam JavaScript
, Python (Django)
,
Terraform
și AWS
pentru partea de infrastructură.
La moment lucrez în Python
, Go
, Terraform
și AWS
pe partea de cloud
.
Nu știu cu ce mă voi ocupa în viitor, dar cu siguranță va trebui să învăț ceva nou.
Tehnologiile și limbajele de programare au devenit mai mult niște unelte pe care trebuie să le poți folosi indiferent
dacă știi limbajul sau nu. Cu siguranță îți va lua ceva timp până înveți baza, sau până poți face un pull request,
dar dacă proiectul are nevoie să faci ceva într-o tehnologie nouă și necunoscută - rareori când vor angaja o persoană
dedicată doar pentru a implementa acel lucru.
Am observat că noi, programatorii, încet devenim universali - mai ales că poți face și Scrum
,
și project management
și scrie cod - suntem angajații perfecți.
Mai nou o echipă de 2-3 persoane poate face cât înainte făceau 10. Iar salariile... Citește punctul 1.
7) Ca programator, ori stai toată ziua pe calculator și te joci, ori petreci tot timpul în ședințe
Am auzit-o și pe asta, și am auzit-o și în forme mai vulgare,
dar care pare să întărească un stereotip răspândit - mulți cred că dacă stai toată ziua la birou, la cald,
lucrezi doar cu o tastatură și un mouse și nu faci nimic fizic - practic stai degeaba și primești bani.
Din această perspectivă as putea înțelege de ce mulți vor să între în domeniu - poate cred că banii li se vor da mult mai
ușor decât în alte domenii.
Permiteți-mi să spun câteva lucruri.
Sunt conștient că domeniul IT este foarte vag pentru cei care nu cunosc despre ce merge vorba.
Când ești întrebat în mod serios "cu ce te ocupi" deseori vine greu să exprimi în cuvinte ceea cu ce te ocupi.
Acest lucru se datorează faptului că ceea ce facem nu este mereu ușor de cuantificat - nu poți spune: am semnat un contract,
am făcut vânzări de X lei, am contactat Y clienți. Cum explici cuiva că tu trebuia să faci upgrade
la versiunea unui
modul și ai intrat în dependecy hell
? Cum îi explici cuiva că ai pierdut câteva zile pe asta?
Rezultatul acestui efort este minuscul, însă eforul necesar poate fi enorm.
Acest lucru este foarte des întâlnit în programare - locul unde vrei să ajungi nu este neapărat suma a câțiva pași predefiniți.
Deseori ca să ajungi de la Cluj la Turda trebuie sa mergi prin Istanbul, cu escală la Reykjavik și transfer cu feribotul la Heraklion. Și problema cea mai mare? Nimeni nu știe și nu poate estima această rută cu o oarecare precizie până nu se apucă de lucru. De asta deseori se estimează efortul la 2-4 ore, iar după 2 săptămâni te trezești că n-ai apucat să faci nimic. Cum cuantifici asta? Tot acest timp tu ai lucrat, dar de realizat n-ai realizat nimic.
Din acest motiv, pentru că e foarte greu sa cuantifici randamentul și rezultatele unui programator din exterior poate
părea că nu faci nimic (desigur așa situații există pe unele proiecte), însă de obicei realitatea este diferită.
Programarea este printre puținele domenii în care efectiv îți înveți meseria la lucru - nu mă refer că devii mai bun la
ceea ce faci și aprofundezi ce știi deja, dar la mod propriu înveți meseria pentru că există atâtea variabile încât 2
lucruri aparent similare sunt implementate folosind metode complet diferite. Deseori ai task-uri
pe care nu
știi de unde să le apuci așa că de fiecare dată trebuie să o iei de la 0.
Deseori ai task-uri
pe care nu doar tu nu știi cum să le faci, dar nici colegii tăi imediați sau din alte echipe nu știu să le abordeze.
Primul lucru e să înțelegi ce trebuie de făcut, și deseori aceasta este o muncă în sine.
Am înțeles că cea mai bună abilitate pentru a fi un inginer bun nu e cât de bine știi un limbaj sau dacă știi să citești in
hexazecimal, ci capacitatea de a rezolva probleme, pentru că lucrul programatorului este ca un puzzle,
doar că unul în care nu ai toate piesele, iar piesele pe care le ai nu se potrivesc.
Cea mai frustrantă parte este că, atunci când reușești să potrivești două piese de puzzle,
potrivirea cu celelalte se strică, declanșând un lanț de probleme care pare să nu se mai termine.
Lucrul programatorului de fapt constă în cea mai mare parte în rezolvarea de probleme,
iar abordarea și investigarea acestor probleme este o abilitate foarte puțin apreciată.
Deseori e mai ușor să scrii codul când știi ce ai de făcut decât să găsești pașii pe care trebuie să-i faci sau să găsești
sursa unei probleme - acest proces devine mai simplu doar cu anii, acumulând experiență.
Concluzie
IT-ul până la urmă este o meserie ca și oricare alta, este mai grea ca unele și mai ușoară ca altele, are multe beneficii, dar are și multe neajunsuri. Uneori te bucuri cât de avantajat ești ca programator, alteori blestemi ziua când ai scris prima data "hello world". Sunt convins că nimeni nu scapă de acest "rollercoaster". Sper că am abordat în suficiente detalii acest subiect și mi-am argumentat pozițiile referitoare la miturile enumerate. Cei care sunt in domeniu pot fi de acord sau nu, iar cei care inca nu sunt, dar vor să-și înceapă cariera - vreau doar să vă definiți motivele pentru care ați ales acest domeniu. Nu pentru alții, ci pentru voi înșivă. Când știți unde vreți să ajungeți și de ce este mult mai ușor să parcurgeți acest drum decât atunci când o faceți pentru că cineva a zis că-i pont, nu faci mai nimic și faci bani ca lumea, nu plătești impozite și așa mai departe.