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

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

Topicul nu restrange ramele discutiei la “cei care invata singuri”, ci se rezuma la nivel.

2 Likes

Cele mai mari firme la care am dat interviu au fost EA Games si Amazon, la EA Games spre exemplu mi-au dat sa rezolv 3 probleme de algoritmi intr-o ora si au rulat set-uri de teste apoi sa vada daca pica, la Amazon a fost mai usor am scris cod intr-un editor screen sharing si au fost probleme de algoritmi si programare concurenta, la firmele de webdesign nici nu se pune problema de asa ceva, portofoliu site-uri si proiecte ce ai lucrat anterior.

2 Likes

Aici e o chestiune de perceptie. Tu prin programare de exemplu intelegi webdesign. Eu prin programare inteleg programare.

Cert e ca in titlu scrie programare. :smile:

2 Likes

Discutia nu era de webdesign dar era de webdev, si unde lucreaza un webdev in general, la o firma de webdesign, si face site-uri de prezentare si magazine online, un procent mult mai mare de webdevs decat cel care dezvolta software cu interfata web in multinationale si alte companii care dezvolta software la comanda orientat client.

1 Like

Toate bune si frumoase, ai dreptate in ce zici, dar incerci sa creezi o segmentare care nu exista in postarea #1.

Din postarea #1 se intelege ca @OP vrea sa stie unde se afla in raport cu toata piata muncii. Iar asta include toti programatorii.

Altfel am ajunge in situatia in care Denis, 20 de ani, stie sa traga o linie in paint, si se crede programator junior. Si cand va sti sa traga doua linii in paint, se va crede programator mediu, iar cand va sti sa le puna intr-un unghi perfect de 90 de grade, se va crede avansat.

Tu dintr-o astfel de breasla profesionala vrei sa faci parte? Incurajarea mediocritatii?

Pai ori vorbim despre programare ca meserie, ori nu mai vorbim. :smile:

4 Likes

Daca astfel de generatii vin din spate, e bine. O sa ne gasim joburi si la 80 de ani.

5 Likes

Voi ati adus in discutie faptul ca webdev ar trebui tratat altfel, discutia ar fi mai interesanta daca ar fi despre inginerie software si aici as avea de spus despre reutilizare cod chiar daca nu a fost scris de tine astfel reduci timpul de dezvoltare si de a impinge chestii stabile in productie si aici discutam despre strategii cum sa lucrezi cu source control(github) eventual faci un branch din master pentru evolutia ta si cand e nevoie il duci in productie si nu duci cod care nu e nevoie sau netestat in productie.

1 Like

Nu ai citit bine. Uite:

1 Like

Nu o sa ma contrazic cu tine, motivul pentru care intru pe acest forum este de a mai invata chestii noi, desi cand am postat chestii de machine learning, mi s-a spus clar ca nimeni nu posteaza asa ceva in afara de mine, ce ceri tu mi se pare ca se cere la companiile de top: google, amazon, microsoft, ibm.

1 Like

Ai putea sa spui ce ar trebui sa stie un incepator?

Sunt de acord cu lista din #1, la care as mai adauga

  • niscai algoritmica de baza (gandirea analitica necesara, nu sa stie pe de rost algoritmi) si structuri de date
  • sa stie despre modelul OSI si sa faca diferenta dintre client-side si server-side
  • sa fi facut o data in viata lui o cerere HTTP cu telnet
  • sa stie niste SQL de baza, si diferitele tipuri de join-uri

“cel mai junior din echipa X” nu inseamna obligatoriu “de nivel junior”. Juniorul nostru stie deja unele lucruri din nivelul mediu.

5 Likes