Ce inseamna un Junior bun?

Hey guys,

Mi se pare o piata imposibila pentru juniori in momentul de fata:

  1. Competitie/Spam mare - eu unul la un singur post primesc sute de cv-uri din india/nigeria/china. Si multi seniori care nu au ce face si aplica chiar si pe posturi de juniori. Ca si business de ce nu as da salariu de Junior pe un Senior daca se poate?
  2. AI-ul este decent-ish. Daca as putea sa cumpar o unealta la toata echipa care sa le boost-uiasca productivitatea 15% in loc sa iau un junior care sa nu aduca nici un boost initial, de ce sa nu o fac?
  3. Facultatile nu pregatesc studentii pentru COLABORARE - cred ca o mare parte din ghidarea juniorilor este pe comunicare, sa nu fie lone-wolf, sa ceara ajutor.

Astea sunt motivele pe care le-am gasit eu. Cu toate acestea sa zicem ca gasim un Junior “bun” pe care il putem lua in echipa - ce il face bun si deci angajabil?

Incep eu:

  • Stie sa colaboreze - git nu e un mister
  • Vorbim aceeasi limba - pasionat de tech, la curent cu noutatile; poate gusta si niste Linux; poate utilizeaza Docker
  • Are proiecte si sunt usor de vazut (urcate pe un site, ceva - sa nu ma puna sa i le compilez eu ca nu pot sa “vad” codul sursa ca in matrix)
  • Stie engleza foarte bine
  • Nu se pierde cand ii pui o intrebare mai “grea” si lucreaza cu tine sa o rezolvi

P.S. anul acesta sunt intr-o pozitie din care pot sa schimb ceva pentru o mana de studenti - in functie de raspunsurile si parerile voastre

5 Likes

depinde de care parte privesti. Daca esti firma de produs, inteleg oarecum ce zici(pentru ca daca esti listat al bursa, headcountul e important si el). Daca esti firma de consultanta/outsourcing vrei sa ai mai multi oameni pentru ca acum sau mai tarziu sa ii poti “vinde” mai departe.

Agreed. Cand ma intreaba prieteni care au copii de clasa 11-12a daca sa dea la info la facultate, eu le zic ca doar daca le place sa stea la calculator 10-12 ore (aka: asta ar face si daca nu programeaza).

git e o tehnologie, una la care comenzile de baza se invata in 5 minute, iar in rest aplici regula xkcd. Colaborarea e ceva mai mult decat doar “folosesti git” - sa stii cand trebuie sa ceri ajutor, sa stii cand trebuie sa te consulti cu altii, etc.

2 Likes

un junior bun trebuie sa vrea sa invete, sa fie curios. restul se rezolva.

4 Likes

trebuie sa gasesti o varianta dupa care sa poti testa asta, ca nu oricine care vine si zice ‘vreau sa invat’ o sa faca asta. Cred ca ce a zis mai sus OP legat de sa arate ca e pasionat de tech si ca a facut ceva lucuri pana acu, sa zica ce probleme a intampinat chiar daca noua ni se par lucruri simple.

2 Likes

In general, sunt 2 intrebari simple pe care le folosesc la interviuri pentru a atesta nivelul candidatului.

  1. Care este cea mai mare realizare a ta, profesional vorbind? Lucru de care esti cel mai mandru.
  2. Spune-mi o problema/sitautie (ft complicata din punctul tau de vedere) pe care ai avut-o recent, si cum ai rezolvat-o.

Hai sa zic si pe a 3-a (asta atesta pasiunea/curiozitatea):
3. Care e ultimul topic pe care l-ai aprofundat si daca poti sa mi-l explici.


Aditional, folosesc metoda livecoding-ului ca sa vad cat de usor se plimba prin editor, daca foloseste hotkey-uri si scurtaturi.

O metrica neobisnuita, dar nu cred ca-i neaparat rea - arata o “obisnuinta” cu editorul ce inseamna ca omul chiar il deschide si il foloseste des. Nu m-as fi gandit la asta.

1 Like

N-ai văzut niciodată un senior[1] care nu folosește multe hotkeys? :slight_smile:


  1. pentru că este destul de greu să stabilim ce înseamnă „senior”, în contextul ăsta este doar un om cu ceva ani de experiență ↩︎

2 Likes

Hmm. Sa zicem ca am vazut, dar nu-i iau in serios pe ăia.

Nici nu stiu daca ar trebui sa te numesti senior daca nu te preocupa asa chestii sa le inveti, sa le folosesti.

Tu, ca programator, ai datoria sa automatizezi lucruri pentru altii. pentru lumea din jur. Corect? Pai incepe cu tine! :smiley: Incepe prin a-ti automatiza workflow-ul.

1 Like

mama da ce de criterii … aleatorii. nimic despre modul de gandire sau despre cat de capabil e de abstractizare. se pune in schimb accentul pe puterea de a toci. orice idiot poate invata un if/else. si majoritatea o fac.

1 Like

Nu ma intereseaza atat de mult nivelul de skill tehnic al unui junior – se poate invata. Ma intereseaza in schimb atitudinea.

Cel mai bun junior cu care am lucrat – avea ceva experienta tehnica cand a venit in firma si era constient ca nu stie prea multe. Era humble, de treaba, dispus sa invete si sa absoarba cat mai mult, saritor, no politics.

Cel mai groaznic junior cu care am lucrat – avea ceva experienta tehnica cand a intrat in firma, dar avea o impresie exagerata despre sine. Increzut, pus pe politics si periat managerii, invata cu greu din code reviews si nu recunostea niciodata, privea cu suspiciune sugestiile mele, isi asuma munca si succesele altora in meetings, șamd. A bit of a cunt.

1 Like

Exact. Curiozitatea si foamea de cunoastere e ft importanta. Prefer un junior de ăsta, decat un middle/senior plictisit.

De acord. Nu pot numi un programator “senior” atata timp cat nu isi stie cum trebuie uneltele pe care le foloseste pentru a-si face treaba. Si nu e vorba doar de hotkeys sau de shortcut-uri. E vorba de automatizarea modului de lucru astfel incat pentru task-uri simple si repetitive sa aibe un mod rapid de a-l utiliza.

De multe ori am vazut programatori “seniori” care inca isi pierdeau timpul in editor folosind-ul ca pe un Notepad glorificat. Faptul ca iti optimizezi modul de lucru da dovada de interes in a lucra cat mai eficient. Daca nu faci asta, inseamna ca putin iti pasa de timpul pentru care angajatorii te platesc.

Ca exemple:

  • Navigarea in editor (go to definition, find symbol, go to references, find file etc.) sa fie realizata aproape instant. Sa nu foloseasca lista de taburi
    sau explorer-ul sa caute toate acestea.
  • Actiunile de redenumire sau mutare a simbolurilor sa dureze foarte putin. Am vazut prea multi care isi pierd 10-15 mins doar pentru a redenumi o functie.
  • Git si folosirea lui eficienta. Sa il vad ca nu se pierde in GUI-ul preferat de el sau sa il vad ca stie capabil sa foloseasca linia de comanda pentru Git
  • Debugging: ori sa stie sa dea print cum trebuie la ce trebuie, in mod eficient si rapid ori sa stie sa foloseasca debugger-ul sa rezolve probleme complexe (aici depinde de proiect)

Nu conteaza modul de lucru, dar daca dureaza mult sa faci lucruri simple, e o problema.

Anyway… legat de juniori cel mai bine ar fi:

  • Sa fie curios si sa nu creada ca le stie pe toate.
  • Sa fie respectuos fata de ceilalti colegi si fata de angajatori. Chiar si daca esti mai bun decat ei nu inseamna ca te poti purta cum vrei. Critica… dar critica constructiv
  • Sa fi avut putina experienta inainte de primul job. Aici ma refer mai mult la personal projects. Asta da dovada de interes in domeniu, mai ales daca nu e ceva proiect generic
  • Sa aiba un mod de gandire logic si calculat, nu bazat pe sentimente.
  • Sa isi asume greselile.
1 Like

Pentru că ar trata jobul ca un junior, adică să nu te aștepți să facă treabă de senior.
Si s-ar putea să fie frustrat.

Ca criteriu, eu aș recomanda să cauți oameni ambițioși, adică care isi doresc postul și să avanseze in carieră.

2 Likes

Piața nu e chiar așa de rea, dar e în cădere după boom-ul ăla fantastic și nesustenabil din pandemie. Ceea ce înseamnă într-adevăr că e o piață grea - dar e pentru toată lumea, nu doar pentru juniori. Întrebarea pe care o ai tu este „care e diferența dintre un senior și junior”, și asta tu, ca trebuie să răspunzi. Răspunsul altora diferă mult de al tău - unii vor juniori pentru a crește niște oameni care să rămână cu compania pe termen lung învățând să facă lucrurile așa cum își dorește compania respectivă, alții vor mână de lucru ieftină.

Să iau întâi punctele tale:

  1. Competiție mare - asta a fost dintotdeauna, și întrebarea reală e „ok, ce oferi”. Acum doi ani tot ce trebuia să ofere e prezența, acum trebuie să ofere mai mult. Dar dacă tu pe jobul de junior primești seniori, de ce ai lua un senior acolo? Dacă juniorul tău se bate cu China, India, Nigeria, poate că mai bine nu vine la tine. Faptul că primești spam e echivalent cu „eu nu răspund la mailurile tale pentru că primesc spam”. Dar faptul că le amintești ca un argument îmi zice că nu e chiar spam, ci ofertele oamenilor din China, India sau Nigeria sunt luate de tine în considerare. Probabil că nu ai nevoie de un junior, ci de un sclav ieftin. Hai să nu-i zice sclav, hai să-i zicem „entry level”. Dar nu vrei junior.
  2. Asta cu AI-ul decent-ish e amuzantă. Nu, nu e. Nu, nu e nici sporul ăla de performanță pe care îl visează toți. Da, face niște lucruri rapid, dar știi cum e, revin la punctul de mai sus - dacă tu crezi că AI-ul îți aduce un plus de performanță atunci probabil că nu vrei să angajezi un om care să crească, ci un om care să producă la prețuri cât mai mici. Un junior nu „boost-uiește” productivitatea. Nu știu unde ai văzut tu juniori să crească (ăla e cuvântul) performanța. Aia se întâmplă după integrare, după ce nu mai are întrebări de cum merg lucrurile la tine. Dacă tu iei un junior și vrei să-ți producă din start să-ți crească productivitatea echipei cu 15% (cât de mare e echipa? Că practic vrei să-ți producă cât un angajat normal) înseamnă că nu vrei un junior, vrei minimum entry-level sau un mid.
  3. Facultățile nu sunt școli profesionale să pregătească pentru ce-i trebuie lui patronache stăpân de scla… entry-levels. Nu au nici datoria să învețe oamenii comunicare, colaborare. Că nu sunt școli profesionale. Scopul lor e altul, dar cineva care se așteaptă ca un proaspăt absolvent să știe astea vrea un entry level nu un junior. E responsabilitatea angajatorului să-l învețe cum funcționează sistemele interne, inclusiv comunicarea în echipă. Că de-aia e junior, e acolo să învețe.

Ce trebuie să știe un junior? Aș aștepta ca oricine are o oarecare afinitate spre programare să știe măcar la nivel mediu un limbaj de programare imperativ, cunoștințe la nivel entry de HTML, CSS, minimal JS. Să știe să folosească consola. Git ar fi ideal să știe, dar tot l-aș trece printr-un training de o zi de git, că poate ce știe el e prins de la un tutorial prost. Și ar mai trebui să dovedească deschidere spre domeniul în care intră.

Dar, serios, chiar trebuie să faci diferența dintre un junior și un entry-level.

Suntem intr-o economie globala, mai ales in IT. Daca compania ta se bate cu tot restul mapamondului pe o bucatica de placinta asta inseamna ca inclusiv candidatii se bat la nivel global intre ei.

Poti sa negi asta, poti sa zici ca nu conteaza, dar asta e purul adevar. Daca caut talent, de ce sa ma limitez doar la planul local?

https://start-up.ro/liceenii-de-la-pentest-copilot-devin-pentra-150000eur-de-la-egv-si-un-prim-produs/

Si eu cand eram junior, avusesem primul exit si contribuisem deja la Debian si KDE avand un Google Summer of Code la centura. In multinationala unde ajunsesem, nivelul era foarte ridicat. Dupa cuvintele managerului meu de la vremea aceea: “Un junior face ce face si un senior, doar ca mai incet”.

La ultima conferinta NeoVim era un pusti din India la vreo 14 ani care era deja contribuitor core.

Saptamana trecuta am fost la o scoala de vara cu o echipa de studenti si am codat cot la cot cu un baiat care doar ce a terminat liceul.

Mai am exemple ca juniori de genul exista, dar nu am spatiu aici. Am avut si eu in propria echipa si am vazut ca un om bun poate sa aibe un impact, chiar daca nu are experienta.

Era o intrebare pragmatica. Si tot la fel de pragmatic: da, caut cei mai buni oameni la cele mai bune preturi. E ceva neinregula cu asta?

Deci aproape toti absolventii se plang ca favultatea nu-i pregateste indeajuns pentru realitatea pietei si tu zici practic ca daca vor sa invete sa se duca la o profesionala. Ok.

Apropos, nu stiu cand ai terminat tu facultatea, dar pe vremea mea aveam niste cursuri despre management, organizare, etc. Se incearca invatatarea studentilor skilluri mai soft prin cursuri, proiecte de grup. Poate nu de ajuns, dar se incearca totusi.

Vad ca tu faci o distinctie intre junior si entry-level. Nu-i nici o diferenta intre termeni. Juniorul este entry-level - primeste salariu deci ar trebui sa fie catusi de putin productiv.

Sub junior mai este intern - la care nu ai nici o asteptare sa fie productiv (deobicei luati din anii terminali de facultate) - poate sau nu sa primească salariu.

Nu mai suntem acum 10-20 de ani cand era de ajuns sa stii si tu ceva acolo ca sa intri in programare. Au crescut salariile, au crescut si asteptarile si au scazut numarul de joburi pentru juniori. Hai sa nu mai mintim oamenii la inceput de drum ca asa a fost tot timpul si sa le zicem realitatea.

Inceteaza sa proliferezi aceasta idee ca o sa invete la job - cum dracului sa se mai poata asta? In conditiile in care multi au fost dati afara si echipele s-au micsorat - cati mai au ATAT de mult timp sa invete un junior si sa isi faca si restul muncii mostenite de la membrii plecati.

Nu îți răspund la toate punctele, sunt pozițiile tale, tu va trebui să trăiești cu abordarea ta, nu eu să-ți explic ce greșești. Poate nu greșești. Poate greșesc eu, și am greșit suficient pentru zece vieți până acum. Dar am două puncte de discutat:

Deci aproape toti absolventii se plang ca favultatea nu-i pregateste indeajuns pentru realitatea pietei si tu zici practic ca daca vor sa invete sa se duca la o profesionala. Ok.

E ok să nu înțelegi ce e facultatea. E ok și pentru absolvenți să nu înțeleagă ce e facultatea. Există un motiv pentru care există învățământ profesional și învățământ teoretic. Facultatea e pe ramura teoretică. Dacă nu înțelegi lucrul ăsta o să fii într-o zonă foarte dureroasă.

Nu toți oamenii ar trebui să facă facultate. Prea mulți fac facultatea așteptând să fie școală profesională, și nu e. În consecință pierd banii și timpul investit în loc ca în ăia patru ani să se angajeze la patron să facă startup-uri care să ajungă până la cer. Așa că dacă se plâng că nu îi pregătește facultatea pentru realitatea pieței, mno, ce să zic, să plângă. Am scris pe blog de prea multe ori despre chestia asta, nu mai insist.

Al doilea lucru pe care vreau să-l comentez e ăsta:

Nu mai suntem acum 10-20 de ani cand era de ajuns sa stii si tu ceva acolo ca sa intri in programare

Habar n-am când a fost acum 10-20 de ani așa în programare. O fi fost, nu zic nu. Nu am avut șansa asta. Eu unul am muncit foarte mult pentru foarte puțin, dar asta e, proștii ca mine mai trebuie să se și sacrifice.

Am încercat să-ți răspund la postarea asta cu ChatGPT dar a trebuit să rescriu tot, din păcate. Poate data viitoare.

Ramura teoretica nu inseamna ca stii numai la nivel teoretic lucrurile. Cum ar fi un medic sa nu iasa pregatit dupa ani intregi de facultate + rezidentiat? Sau un inginer electrician sa nu fi facut niciodata un circuit?

Amintesc de ce inseamna un junior bun pentru tine versus ce stii de la facultatea de informatica deja:

  • (yes) nivel mediu limbaj imperativ → ai o gramada de cursuri despre asta + faci si OOP si mai faci si ceva logica computationala in ceva limbaj de proof (functional programming)
  • (yes) nivel entry de html, css, js → curs de tehnologii web si ceva curs retelistica
  • (sort of) sa stie sa foloseasca consola → ai curs de sisteme de operare unde pe vremea mea pe la laboratoare mai aprindeam niste VM-uri sa mai vedem un ubuntu
  • (none) git → singurul neacoperit de un curs per se
  • (extra) baze de date → ai curs pentru asta
  • (extra) management software → curs, am invatat despre agile, waterfall - si cum sa stii actorii si stake-holderii dintr-un proiect software si cum sa scrii specificatii

There you go! Facultatea te pregateste sa fi un junior bunicel din punctul tau de vedere. :slight_smile: Si acum nu e de mirare ca tu crezi ca un junior nu poate sa aduca un boost de productivitate in echipa ca in mod teoretic (pun intended) toti care termina facultatea au acele skilluri - deci practic ai descris un junior mediu, nu un junior bun.

Realitatea pietei este ca intr-o mare de juniori mediocrii e greu sa ii vezi pe cei buni - ca nu stiu sa se vanda, ca nu stiu sa-si faca un cv, etc. Skillurile tehnice deja le au si mai au nevoie de ceva extra ca sa reuseasca.

There you go! Facultatea te pregateste sa fi un junior bunicel din punctul tau de vedere. :slight_smile:

Realitatea pietei este ca intr-o mare de juniori mediocrii e greu sa ii vezi pe cei buni

Nu cunosc prea bine realitatea pieței, îți spun totuși ca om care a predat la facultate că nu cunoști suficient de bine scopul facultății, și ceea ce zici este că pentru că un avion te poate duce din punctul A în punctul B cu mare viteză e un mijloc extraordinar pentru a merge până la magazinul din cartier pentru aprovizionare.

Scuze că ți-am luat fix citatele cu probleme gramaticale, a fost neintenționat.

E ok - nu ma supar. :man_shrugging:

Alo, vezi ca te suna Platon sa ii dai scopul inapoi. Scopurile evolueaza - ca un telefon (get it?). Scopul original al unui telefon era sa vorbesti la el. Dar oamenii in ziua de azi se asteapta sa si faca poze, sa asculte o muzica sau sa intre pe DevForum. Poti sa zici deci ca oamenii nu inteleg scopul original al telefonului? Sigur ca inca il inteleg si unii inca il folosesc pentru asta, dar asta nu inseamna ca nu au si alte nevoi.

Daca scopul original al unei universitati este cautarea adevarului si avansarea noastra ca si oameni, acum oamenii au si alte asteptari de la universitate.

Si scopul original e bun. Si scopul pentru care acum folosesc oamenii universitatile este ok - anume sa aibe sanse mai mari la un job bun. Sunt bune ambele scopuri, mai ales ca pana la urma se supun ideii initiale - avansarea noastra ca si oameni ( nu numai la nivel general, omenire ).

Eu as reformula analogia ta, ca sa se potriveasca cu subiectul discutiei: “Daca tot poti sa gandesti un avion, nu poti sa faci o amarata de macheta?”