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.
La avansat as pune
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.
Î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
Mulțumesc!
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.
Topicul insusi este despre comparatii.
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.
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”.
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.
Topicul nu restrange ramele discutiei la “cei care invata singuri”, ci se rezuma la nivel.
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.
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.
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.
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.
Daca astfel de generatii vin din spate, e bine. O sa ne gasim joburi si la 80 de ani.
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.
Nu ai citit bine. Uite:
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.
Ai putea sa spui ce ar trebui sa stie un incepator?
Sunt de acord cu lista din #1, la care as mai adauga
“cel mai junior din echipa X” nu inseamna obligatoriu “de nivel junior”. Juniorul nostru stie deja unele lucruri din nivelul mediu.