Nu ma supar. Ma bucur ca avem o discutie aici. It beats “no reaction”. Dar chiar ma gandeam ca o sa fie o chestie de genul “preaching to the choir” pe partea de limbaje. In schimb văd că nu-i o credință universala
Să fac o gluma. Avem:
- Developers: coding bootcamps nu te fac dev, jobul e mult mai vast decât o lună de învățat Java / PHP.
- Tot developers: Java dev e java dev, PHP dev e php dev, și nu se face trecere între. Limbajul e majoritatea meseriei.
Make up your mind!
In orice caz nu am zis că cunoașterea limbajului și ecosistemului nu sunt importante sau că nu contează pentru un developer. Sunt și contează. Până la urmă sunt modul în care toate celelalte se materializează.
Claim-ul meu e că relativ la toate lucurile pe care trebuie sa le știe un dev, cu precădere unul experimentat, sunt minoritare. Și că odată stăpânit un “ecosistem”, este relativ ușor de tranzițional într-un altul. Pentru că nu trebuie să pornești de la 0. Ci ai deja 90% din ce-ți trebuie acoperit, sub forma acestor skill-uri independente de ecosistem. E foarte probabil.ca niciun alt skill luat separat sa nu constituie mai mult 10%, dar luate împreună …
Mă gândesc că e o chestie de “blestem al cunoașterii”, in care nici nu mai ști cate lucruri cunoști pe care un novice nu. Ditto, prima oara când înveți programare, înveți mult mai multe despre cum funcționează un calculator. Nu doar limbajul de programare. Și poate e riscul de asociere prea strânsă între acestea.
Mă gândesc așa la o lista neexhaustiva dar aplicabilă orarui dev de “lucruri mai importante decât limbajul in sine” după mintea mea: gândire sistematică, abilitatea de a exprima soluții/legi/principii/etc in cod, cum funcționează un calculator, algoritmi, structuri de date, sisteme de operare (+ particularități a la Linux vs Windows), rețele și protocoale specifice (TCP, IP), HTTP, baze de date, sisteme distribuite, design patterns, limbaje&compilatoare, statistica, ceva matematica, software engineering practices (clean code, clean architecture, DDD, and friends), hardware mai serios, OOP, etc. Clar nu trebuie sa fi toba de ele, și clar nu ai ce sa faci cu ele daca nu le poti exprima in cod in vreun fel. Apoi mai sunt cunoștințe de “background”, și apoi de domeniu de business care cântăresc și ele ceva, dat care sunt portabile. Dar odată ce ai un toolkit format într-un ecosistem, este relativ ușor să le portezi într-un nou ecosistem (ie statistica rămâne la fel, modul de interacțiune cu SO-ul se schimbă ceva, etc). Mai ales că tranziția asta este de multe ori între Java, C#, Python, PHP, Go, Ruby, JavaScript, etc. Câteodată C++, câteodată Perl, câteodată Scala. E așa de multă cross-pollination între limbajele astea …
Pe partea de hiring multe companii au ales să țină seama de treabă asta, și să nu mai aibă că requirement strict experiență fix pe tehnologia pe care o folosesc. Iarăși multe nu fac asta. Cred că sunt companii faine de ambele tabere, dar empatizez mai degrabă că și construcție cu cele din prima tabără. Așadar lor le cânt odele