Ce înseamnă să fii un Senior Developer

Ideea acestui articol mi-a venit citind lista din articolul lui Cosmin. Trebuie să recunosc, e greu să vii cu niște puncte categorice pe care cineva ar trebui să le puncteze ca să devină senior. Însă discuția e necesară. Care sunt lucrurile care caracterizează un senior? Pentru mine, doar 3 cuvinte: maturitate, maturitate, maturitate.

senordeveloper

Maturitate, maturitate, maturitate

Cred că îți trebuie minim 10 de ani ca să ajungi la o maturitate profesională. Poate chiar mai mult, însă 10 ani e o perioadă decentă de timp în care ai șansa să te bați cât mai des cu capul de pragul de sus. O soluție verificată de greșeli anterioare e preferabilă uneia luată pentru că n-ai avut alta mai bună.

Dacă ești senior la 4-5 ani de experiență trebuie s-o iei ca o glumă bună. În contractul meu scrie senior developer, dar pentru mine atâta e: o glumă bună. Mi-o bat la bere de prietenii programatori care nu sunt “seniori” și cam atât. La sfârșitul zilei știu cine sunt și de ce sunt în stare.

Un număr bun de ani e un criteriu ca să fii senior, însă nu-i suficient. S-ar putea ca anii ăia să nu fi fost suficienți ca să te dezvolți profesional. Dacă ai devenit confortabil pe proiectul la care lucrezi de 6 ani poate e momentul să-l mai schimbi. O să fii uimit cât de puține lucruri știi.

Maturitate, maturitate, maturitate

Trebuie să-ți iei în serios meseria dacă asta vrei să faci în următorii 20 de ani. S-o iei în serios și să știi că e doar responsabilitatea ta ca să înveți lucuri noi. La început o să dai vina pe firma la care lucrezi că nu are destule chestii provocatoare din care să înveți.

În primul rând, nu e treaba șefului/firmei să te învețe chestii. Iar în al doilea, vei observa dacă schimbi suficiente joburi că majoritatea firmelor nu fac nimic special. O să folosească framework-uri diferite, o să vândă altceva, o să folosească Kanban în loc de Scrum, Python în loc de PHP, dar în esență vei lucra pe o aplicație CRUD la fel care oricare alta. Și trebuie să fii OK cu asta.

Dacă proiectele sunt în mare parte aceleași, te întrebi cum să te dezvolți dacă n-ai de ce prag să dai cu capul? Ei bine, aici intervine studiul individual. Da, trebuie să înveți în timpul liber lucruri noi. Ca om matur care oferi un serviciu unei firme trebuie să fii destul de responsabil ca să nu-ți lași cunoștințele să ruginească.

Maturitate, maturitate, maturitate

Dacă ai 15 experiență și ești un mizerabil cu restul colegilor nu ești un senior, ești doar un mizerabil care are 10 ani experiență. Unul care printr-o minune încă lucrează.

Degeaba ai cunoștințe dacă nu vrea nimeni să lucreze cu tine. Firma te-a păstrat pentru că are impresia că un guru ca tine e o mină de aur. Nu ești, ba chiar s-ar putea să aduci firmei costuri ascunse. De exemplu, 3 developeri decenți au plecat din firmă în ultimii 2 ani pentru că s-au săturat de toanele tale. Felicitări, firma trebuie să plătească bani din cauza ta ca să caute alți developeri. Sau alt developer își bagă picioarele și cere o mărire doar ca să-i fie mai ușor sufletește să lucreze cu tine. Bravo bă, tocmai ai adăugat un cost recurent firmei.

Dacă ai 10 ani experiență asta înseamnă că ai în medie vreo 35 de ani. Știi ce greu e să te schimbi la vârsta asta? Asta dacă vrei să te schimbi și ești cât de cât deschis spre introspecție. Și nu prea ești, că dacă erai nu ajungeai mizerabil. Dacă tot vrei să te schimbi poți începe cu cartea asta. Apoi învață să-ți ceri scuze și să fii om înainte de angajat.

Maturitate, maturitate, maturitate

Asta mă duce la următorul punct: nu e despre codul pe care îl scrii, ci despre atitudinea pe care o ai. Când am început să lucrez credeam ca seniorul e tipul ăla inaccesibil, wizzard-ul și ninjalăul descris prin anunțurile de angajare.

Însă cu trecerea anilor mi-am dat seama că nu e niciun wizzard. Ba chiar, cu cât ești mai uman, cu atât ești mai aproape de a fi senior.

Nu e despre codul pe care îl scrii, ci despre atitutine. Și un zugrav cu atitudinea potrivită e la fel de neînlocuit ca un senior developer.

Maturitate, maturitate, maturitate

Lumea din IT e un loc aspru. Oricât ar încerca angajatorii să-ți ascundă asta oferindu-ți 4 teambuildung-uri pe an, adevărul e că lucrezi într-o junglă. Cod de căcat scris de niște oameni cărora nu le-a păsat sau care n-au știut mai mult, deadline-uri nerealiste, colegi tineri și imaturi, bug-uri imposibile, politici corporatiste etc, etc.

Și în toată această junglă ce găsesc definitoriu la un senior e că nu-și pierde niciodată cumpătul. Am lucrat cu oameni care au suportat situații frustrante de-a dreptul. Ca un om care tot timpul a fost nerăbdător, m-am întrebat ce anume îi ține pe oamenii ăștia calmi, dar concentrați în același timp?

Poate că de-a lungul anilor înveți că dracu’ nu e așa negru, sau ai mai trecut prin situații de genul, cine știe. Cert e că dacă te plângi ori de câte ori situația devine maro, nu faci nimic care să ajute business-ul pentru care prestezi.

Maturitate, maturitate, maturitate

Nu-i despre cod. E despre business. Primești un salariu ca să aduci valoare business-ului. Un CTO cu 20 de ani în domeniu mi-a spus că un cod curat nu e totul: “Dacă după deploy, codul tău nu aduce valoare imediată business-ului atunci e un cod inutil oricât de curat ar fi.”

Seniorii au un fel de a înțelege business-ul mai bun decât restul colegilor. Ai să observi că la planning-uri întrebările lor se concentrează pe detaliile operaționale ale bussines-ului, nu pe cele tehnice. Experiența în programare le permite să nu se mai întrebe cum implementează un feature, ci cum ar putea să-l îmbunătățească ca să producă mai multă valoare. Seniorii devin astfel partneri în discuție, nu doar niște oameni care așteaptă niște specificații.

Maturitate, maturitate, maturitate

Seniorii sunt pragmatici și tind să aleagă soluții simple care aduc valoare imediată. Când alți developeri se ceartă pe ce design patterns să folosească, seniorul face un compromis și alege o soluție mai simplă. Maturitatea îi permite să știe când să facă un compromis.

Simple is better than complex. Majoritatea developerilor se feresc de lucruri simple ca și cum simplu ar însemna mai slab. Sau mai ușor. Nu e ușor să vii cu o soluție simplă. Trebuie să treci peste propria judecată și să vii cu o soluție simplă, universală pentru toată lumea.

Maturitate, maturitate, maturitate

Închipuiți-vă niște meșteri veniți să facă o lucrare unui client. Unul dintre ei începe:

– Băi, ce pana mea e cu schela asta roșie? Conform “Standardelor muncitorilor obosiți” schela trebuie să fie de culoare verde. Păi ce facem, ne batem joc de muncă? Spune-i clientului că nu fac nimic până nu văd o schelă de culoare verde.

O situație de mai sus pare imposibillă și orice patron ar muri de foame cu o astfel de gândire. Însă programatorii sunt angajați, nu patroni. Și atunci își permit să facă mizerii de genul ăsta: să dea reject unui task că nu e bine specificat, să facă încă 3 meeting-uri pe banii clientului etc, etc.

Seniorul se distinge de astfel de oameni prin faptul că trece la treabă și ignoră detaliile care care nu contează. Cam ce scria în lista lui Cosmin:

“A Senior Software Engineer doesn’t need perfect specifications. You may be given a problem that is ill formed, or abstractly stated, and instead of complaining about the requirements, you go out and try to understand deeply what the problem really is, and if you need to negotiate and clarify the requirements, you do so. You look at solving the real problem, not just what was state”.

Scriam mai mult, dar mi-e teamă că deja articolul e și așa prea lung. Ca să-mi cer scuze, poftiți un articol scris de un programator la 40 de ani. El știe mai multe decât mine. Baftă!