Cum stabilești dacă ești junior, mediu sau senior în limbajul tău de programare?

Pentru utilizarea debugger-ului nu iti trebuiesc nici experienta multa in dezvoltare, nici cunostinte foarte multe, teoretice, despre limbaj. Ai nevoie sa configurezi software-ul respectiv si sa pierzi 1-2 ore pentru a citi in documentatie ce ai nevoie.
Deci pasii astia cred ca i-ar putea face si un programator mediu.

Totusi, sa nu subestimam “var_dump-ul” folosit cu un IDE ca PHPStorm. S-ar putea sa ai timpi mai buni in rezolvarea problemelor cu tool-urile astea decat cu Blackfire sau Xdebug.

Oricum, din punct de vedere business, cred ca diferenta intre un programator mediu si unul avansat se reduce la timpi de executie si mai putin la cunostinte. Probabil ar trebui sa dezbatem si partea asta mai mult.

2 Likes

@tacheshun.
Nu inteleg de ce vardump-ul e mai bun decat xdebugul in PHPSTORM. Eu pun din IDE un breakpoint pe o linie si acolo se opreste codul meu. Pot face watches, stack call trace sau run to cursor. Si eu folosesc var_dump si print_r , dar mai mult acolo nu am debugger connection si dim obisnuinta. Dar e corect de discutat.

Tool-ingul e important. Chiar daca nu obtine tot timpul timpi mai rapizi, el ofera standardizare in executie la nivel de proiect. Iar debuggul e un tooling, la fel ca si code quality tools. Mergand pe ideea ta si eu inclin ca aptitudinile de a folosi mare parte din tooluri tin de nivelul mediu de programator mediu.

Apropo, stiu firme care au 3 niveluri pe fiecare din cele 3 categorii:

  • Junior (incepator, mediu, avansat)
  • Senior (incepator, mediu, avansat)
  • Expert (incepator, mediu, avansat)
1 Like

Nu vreau sa generalizez, dar in multe cazuri pur si simplu nu ai acces la debugger, cum ai punctat si tu.

Clasificarea programatorilor mie mi se pare buna. Inseamna ca la un moment dat individului i se va face o evaluare(stiu ca unii veti rade, dar in multe companii nu se face asa ceva), inseamna ca programatorul stie exact care va fi traiectoria lui in firma, si de ce nu, poti face publice treptele salariale pentru o mai buna transparenta.

As fi curios sa aflu si motive contra acestei clasificari. Nu caut cearta :smile: doar sunt curios.

1 Like

Clasificarea asta a fost mereu o tema de discutie “nice to have” cand vorbeam cu diversi prieteni programatori (php sau non php). Apoi a devenit un pain in the ass cand discutam cu “recruiteri” (care imi aduceau cv-uri) si fiecare intelegea ce vroia cand discutam despre junior/senior/etc.

Acum, suntem in situatia de angaja programatori (senior sau medium) si ma gandeam ca o trecere in revista a lucrurilor m-ar ajuta foarte mult in a evalua cum stau lucrurile.

E clar ca intotdeauna o standardizare ajuta. Cand o sa am o prima versiune o sa o sharuiesc (criticile vor fi de ajutor :slight_smile: )

2 Likes

Esti exact ce crezi ca esti :slight_smile:
E mult mai usor sa devii mediu/avansat daca te bagi in situatii pentru programatori avansati.

Fake it till you make it

8 Likes

I moved 5 posts to a new topic: Despre anunțurile de angajare

1 Like

De mult aveam si eu in minte asa ceva. Cand esti junior, nu vezi prea mult in fata si nu iti spune nimeni. Pe masura ce acumulezi ore de munca tinzi sa te crezi senior, dar nimeni nu iti spune precis asta. Asteptarile pot fi uneori nerealiste. De multe ori am petrecut timp cu colegii aflati la inceput, pentru a le arata unde sunt, si cat de mult mai au de munca pana sa progreseze vizibil.
Pe de alta parte, cum ati observat si voi in threadul separat, HR people au alt limbaj (comune sunt doar prescurtarile :P), iar managerii non-tehnici reactioneaza la cei mai sociabili si alunecosi, in loc de cei mai priceputi (care sunt de obicei asociali).
Acestea fiind zise, m-am apucat sa formulez in forma unei piramide aceasta evolutie din viata dezvoltatorului, si mi-ar face mare placere sa aud parerile voastre: http://www.tekkie.ro/processes/the-software-craftsmanship-pyramid/
In mod firesc ar trebui sa urmeze detalierea fiecarei feliute de acolo, sa vedem cum stam si cu timpul.

5 Likes

Prostii și prejudecăți. V-ați obișnuit toți să credeți că developerii buni trebuie să fie cavemani, că așa scrie pe internet.

2 Likes

Tind sa nu fiu de acord cu tine, Bogdan. Pentu a putea produce cod de calitate, e important sa reusesti sa te detasezi si sa te focusezi asupra taskului care trebuie sa fie rezolvat. Asa-numitul “flow”. Asta a dus ca unii oameni sa perceapa asta (si sa o documenteze in diverse moduri) drept un comportament asocial. Dupa atatia ani intre programatori, inca nu am cunoscut niciunul care sa fie o floricica sociala si care sa produca un cod de calitate, in intervalul de 8h dintr-un job standard. Nu am citit undeva pe internet, asta e experienta mea personala, si am lucrat in mai multe companii si mai multe tari.

De asemenea, un trend care in sfarsit incepe sa fie demontat este cel de “cultural fit” gresit inteles, in care cei care au obiceiuri comune cu managerul sunt “fit” si ceilalti mai putin. Articolul la care fac trimitere aprofundeaza foarte bine parerea mea, asa ca nu voi repeta ce scrie acolo.

Eu cred in meritocratie, si crede-ma ca fiind fata am invatat pe pielea mea ca e doar un ideal spre care e bine sa tindem. E plin de oameni ca si tine care nu ofera argumente, doar pareri, si le impun cu mult testosteron si zbarlit de sprancene. Noi sa fim sanatosi :smile:

3 Likes

I moved 4 posts to a new topic: Introvertit, Asocial, Antisocial

I moved a post to an existing topic: Introvertit, Asocial, Antisocial

Rolul unui developer senior:

http://mattbriggs.net/blog/2015/06/01/the-role-of-a-senior-developer/

Un mini-episod din podcastul DeveloperTea legat de subiect, intr-o privire mai generala (nu e specific pe php): Listener Question: What’s The Difference Between a Junior and Senior Developer?

Cam ce spune in episod, intr-o privire mai generala (cum am inteles eu):

  • Junior - sa invete cat mai mult, sa scrie cat mai mult cod

  • Mediu - sa scrie cod cat mai calitativ, aici intra unit tests, etc

  • Senior - sa ia decizii pe termen lung, un fel de manager tehnic.

3 Likes

La avansat as pune

  • anti-patterns si sa stie cum sa evite vendor lock-in
  • sa stie cum sa faca sisteme distribuite
  • sa stie lucruri precum DDD

Vad ca ai lasat deoparte capitolul algoritmica la toate cele 3 nivele.

Inteleg ca acest forum e mai mult pentru webdev, dar chiar si in webdev - si chiar si in PHP - mai ai nevoie uneori de algoritmi. Mai ales cand optimizezi lucruri sau ai de-a face cu reguli complexe de business (implica de multe ori graph theory) sau reporting (implica de multe ori machine learning, statistica).

La nivel mediu ma astept de la un programator sa fi auzit de lucruri precum sortarea topologica a unui DAG si sa stie cand s-o foloseasca, si la nivel avansat sa stie macar sa faca o interpolare, desi nu e nimic avansat in asta, dar mai scadem nivelul din curtoazie pentru webdevi.

4 Likes

Îmi place să cred că nu sunt unii mai programatori decât alții doar pentru că lucrează în limbajul X sau Y. Poți fi un programator bun sau slab sau poți face lucruri complexe sau banale în orice limbaj, indiferent că-i ASM, C, PHP, COBOL sau Javascript.

Hai să încercăm să evităm astfel de comparații :smile:

Mulțumesc!

2 Likes

Eu incercam sa rationalizez de ce ai lasat la o parte algoritmica in webdev. In acest sens, raspunsul meu s-a adaptat la postarea #1.

Din partea mea, programarea e programare, indiferent de web sau neweb. Intamplator, programarea include si algoritmica, algoritmica pe care ai omis-o in postarea #1.

E adevarat ca nu este nevoie atat de des de algoritmica ca intr-un joc 3D (d-aia am zis din curtoazie pt webdevi), dar cand programatorul are de-a face cu ea, trebuie sa se descurce si cu asta in functie de nivelul de experienta dintre cele 3 - incepator, mediu, sau avansat.

3 Likes

Topicul insusi este despre comparatii. :slight_smile:

OAuth si conectarea la diferite servicii google a facut-o la noi cel mai incepator din echipa. Da, cu ajutor, dar s-a descurcat.

Chiar la avansati n-as trece asta, la mediu da.

Era trecut la un set de experienta. Este corect ce spui tu: astfel de experiente nu te fac avansat. Insa sa ai 2-3 experiente dintr-o lista de astfel de 20 lucruri sau sa ai 15, te duce intr-o categorie sau alta.

2 Likes

Asa e, poti sa nu stii unul din punctele care te-ar face d-un nivel, dar sa stii alte 5 din urmatorul nivel, si atunci esti la urmatorul nivel - dar ai o “restanta”.

1 Like

Ce spui tu graph theory, machine learning, statistica, sortare topologica a unui DAG, interpolare implica de cele mai multe ori sa fi facut informatica in liceu si facultate nu sunt chestii pe care te apuci sa le studiezi singur mai ales daca nu ai inclinatie pentru matematica si cei mai multi webdev fac chestii care implica operatii CRUD pe bd si nu au o pregatire in domeniu.

1 Like