Generalist vs. specialist: cum te poti dezvolta in IT

Atunci cand vine vorba de subiectul carierei in domeniul IT, cum poate fi ea construita, de unde sa pornim si pe ce sa punem accentul ca sa ne putem dezvolta cat mai bine si sa fim cat mai multumiti si impliniti, exista o sumedenie de sfaturi, tips & tricks, precum si de criterii si moduri in care ne putem dezvolta profesional.

Desigur, criteriile in care se divide o cariera in IT sunt multe si vaste si nu pot fi acoperite toate intr-un singur articol, motiv pentru care vor fi luate pe rand la momentul potrivit. Un astfel de criteriu din perspectiva caruia poate fi privita aceasta dezvoltare profesionala este modul de specializare a oamenilor din industria Tech, care conduce la disocierea dintre generalisti si specialisti.

Ce intelegem prin generalist si specialist?

Ca sa intelegem mai bine punctul dezbaterii de astazi, este esential sa definim cei doi termeni, de „generalist” si „specialist”, pentru a intelege mai intai natura celor doua moduri de dezvoltare profesionala.

Sa incepem cu termenul de generalist. In IT, prin „generalist” se intelege acea persoana care are un bagaj de cunostinte din mai multe arii, insa acest nivel nu este chiar la cele mai inalte puncte, ci mai degraba la nivel mediu. Cu alte cuvinte, un generalist este cum s-ar spune in cunoscuta figura de stil “a jack of all trades and a master of none”, in traducere un om bun la toate si un expert in nimic.

Exista si o continuare la acest citat care de multe ori nu se mentioneaza, si anume “but oftentimes better than a master of one“, adica mai bine decat expert (doar) intr-o singura chestie de multe ori. Dincolo de omiteri si eventuale ironii, depinde in ce cheie vrem sa interpretam aceasta zicala, dupa cum vom vedea in continuare.

Ne putem imagina un generalist pentru exemplificare ca un programator care cunoaste front-end, stie HTML, CSS si JavaScript ca sa abordeze task-uri din zona de Web development, dar cunoaste si un limbaj de back-end, poate si un framework din aceasta sfera ca Spring Boot, eventual are si niste cunostinte de Cloud, Linux sau baze de date, deci poate arunca un ochi si pe un task de lucru din aceasta zona.

Insa el nu este un maestru in niciuna din aceste sfere, nu are certificari sau super multi ani de experienta doar pe front-end, ca sa zicem ca el se pricepe cel mai bine la asta. Profilul lui cuprinde mai multe cunostinte din mai multe sfere, si se poate implica in mai multe tipuri de sarcini de lucru. Cum am zice in mod colocvial, „un meserias bun la toate”.

Trecand in parta cealalta, un specialist este acel expert care are cunostinte foarte bune sau chiar super avansate intr-un numar de tehnologii foarte mic, nisat la o singura sfera de activitate.  Acesta se concentreaza de regula pe un singur domeniu unde in mod cert cunoaste tehnologiile principale, le stapaneste extrem de bine, are expertiza necesara astfel incat sa isi dea cu parerea si sa modereze anumite discutii tehnice (sa fie echivalent al unui Technical Lead), si chiar sa ii ajute pe colegii cu mai putina experienta in acea sfera.

Spre exemplu, un programator front-end care cunoaste extrem de bine tehnologiile de baza, HTML – CSS – JavaScript, si una sau doua librarii / framework-uri specifice front-end-ului pentru care ar putea fi considerat un adevarat maestru in folosirea lor. In contrapondere, acesta nu are deloc cunostinte medii ca un generalist despre partea de back-end, de baze de date sau alte tehnologii din alte arii tehnice.

Tot prin notiunea de specialist, in anumite contexte, se mai poate intelege un om calificat sa foloseasca o anumita tehnologie care e dezvoltata de o companie pentru uz intern (in-house), si care e mai greu de calificat intrucat nefiind ceva ce poate invata oricine de pe internet, specialistii care stiu cum sa o aplice si sa o repare la nevoie sunt destul de rari in randurile angajatilor.

Factorul AI in determinarea specializarii

Un factor relevant pentru discutia noastra, care influenteaza modul in care putem sa ne raportam la specialisti sau generalisti este inteligenta artificiala.

Dezvoltarea si imbunatatirea aplicatiilor de tip LLM care au fost antrenate cu ajutorul informatiilor de pe internetul larg si integrate in sistemele lor interne (discutabil daca legal si etic) a condus la folosirea lor de catre multi oameni din IT care le folosesc acuma mai des sau ocazional pentru a rezolva diferite probleme si a integra cele mai bune solutii, cu un efort mai mic de timp si energie.

Acest factor a condus in ultimul timp la o echilibrare partiala intre rolurile de generalisti si cele de specialisti. Pe de-o parte, un specialist care e expert sa zicem pe front-end ar putea folosi Chat GPT, Gemini sau alt AI app pentru a lucra pe ceva ce tine de zona de API-uri sau baze de date, desigur nu la un nivel de mega expert, dar pentru task-uri de dificultate usoara sau medie, sa inteleaga despre ce e vorba in sfera respectiva si sa implementeze anumite solutii, nu neaparat cele mai bune dar functionale sub aspect practic.

Pe de alta parte, un generalist poate folosi si el un LLM (din cele consacrate sau unul instalat local precum Ollama sau GPT4All) pentru a putea aprofunda lucrul si solutionarea unor task-uri mai dificile dintr-o anumite arie unde are cunostinte medii, dar incomparabile cu un specialist care cunoaste ca in palma tehnologia respectiva.

Acest lucru poate conduce catre o estompare partiala a granitei dintre generalisti si specialisti si a limitelor care separau cele doua categorii. Desigur, nu trebuie sa se inteleaga ca daca stii putin HTML si folosesti in rest Chat GPT, esti automat mare specialist in front-end, nici pe departe.

Insa cu siguranta AI-ul folosit de catre cei care au un context mai larg asupra tehnologiilor cu care lucreaza, fie ca sunt specialisti in ceva sau au un mix de mai multe cunostinte din numeroase arii, poate deveni o unealta de mare ajutor si care sa duca la o crestere a productivitatii in timp. Mai pe larg subiectul a fost discutat de catre Radu pe canalul de Youtube.

Care optiune e mai indicata pentru o cariera in IT?

Si acum vine intrebarea: pe ce cale sa o apuc ca sa imi construiesc o cariera de succes in IT si sa nu ma plafonez? Cum probabil intuiti deja raspunsul meu, acesta este ca in multe alte ocazii: depinde. Exista extrem de multe opinii pe forumuri, bloguri si vloguri despre acest subiect, argumentele pro si contra situandu-se in egala masura si de-o parte, si de alta.

In ceea ce priveste rolul de generalist, aceasta e intalnit destul de frecvent in companiile mai mici, precum startup-urile, care neavand poate un buget suficient sa angajeze si un programator back-end si un inginer DevOps, prefera un singur om care sa aiba un knowledge mediu din ambele zone ale productiei.

De asemenea, roul de generalist iti poate largi orizontul de intelegere si cunoastere a unui produs sau a unei game mai largi de tehnologii cu care se lucreaza in Productie, facandu-te sa intelegi cum apar anumite probleme si unde trebuie sa se intervina pentru solutii cat mai flexibile si fiabile.

Acest avantaj ne conduce natural spre urmatorul, si anume gradul de adaptabilitate si flexibilitate a unui generalist cand vine vorba de noi oportunitati profesionale, fiindu-i mult mai usor sa sara dintr-un anumit rol in altul, cunostintele diverse ajutandu-l mult in acest caz. Tot aici se poate mentiona si deschiderea putin mai mare catre rolurile de management care vizeaza produsul sau un anume proiect, precum Product / Project manager sau Scrum Master, ca urmare a cunoasterii intregului orizont de tehnologii cu care lucreaza o anumita echipa sau companie.

Ca argumente contra, un generalist este in principiu lipsit de o expertiza profunda asupra unei sfere anume cu care are tangenta, din cauza cunostintelor sale de nivel general mediu, fara profunzime si fara a excela cu adevarat in ceva. De asemenea, ca sa fii un generalist relevant, trebuie sa te informezi constant pe foarte multe tehnologii si acesta reprezinta un efort extrem de mare si greu. Acest lucru poate conduce si la o anumita incertitudine a rolurilor din piata, caci un generalist daca nu mai este la curent cu ultimele trenduri sau tehnologii, poate fi rapid inlocuit de un specialist mai nisat, dar mai up-to-date.

De asemenea, nici din punct de vedere salarial nu este chiar un avantaj. In sine, un generalist poate avea un salariu peste medie, dar daca ne referim la faptul ca el facea treaba a 2 sau 3 oameni, si putin front-end, si putina administrare de baze de date, poate mai arunca un ochi la niste API-uri, atunci reiese ca nu e chiar cel mai bine platit, intrucat nu primeste 2-3 salarii, ci tot unul.

Generalist sau specialist, care e calea profesionala de urmat? Sursa imaginii: Pexels.com

Trecand la rolul de specialist, principalul avantaj al acestuia este profilul sau bazat pe expertiza inalta pe o anumita arie, cu un set de cunostinte extrem de bune pe 1-2-3 tehnologii maxim si care poate fi o piesa unica in angrenajul unei echipe ce are nevoie exact de acel om, cu exact acel set de cunostinte.

Din acest motiv, si expectantele salariale pot fi mai bune pentru un specialist, chiar daca in contrapondere rolurile din piata pentru profilul sau pot fi semnificativ mai putine. De asemenea, un specialist este mai mereu la curent cu noile update-uri din sfera sa specifica, si o echipa / companie se poate baza mai mult pe el ca va implementa cele mai bune bune practici si noutati din domeniu, aducand rezultate mai bune.

Din perspectiva dezavantajelor, un specialist prin definite are o arie de actiune mai restransa, ceea ce poate conduce la o interactiune mai limitata cu alte echipe sau alti specialisti din alte arii, ori cu anumiti clienti. Totodata, un specialist are mai putin skill-uri tehnice, si daca la un moment dat apare o problema pe o zona unde el nu are cunostinte, si nu exista un alt specialist acolo ori un generalist care sa intervina, atunci exista riscul ca task-ul de lucru sa fie blocat.

De asemenea, un specialist trebuie sa depuna eforturi constante atat in interiorul cat si in a fara job-ului sau pentru a invata si a fi la curent cu noile evolutii din domeniul sau, astfel incat sa isi mentina ridicat nivelul de expertiza, si sa isi mentina securitatea jobului si a posibilitatilor de cariera.

Si totusi, care sa fie optiunea mai buna? Sa invatam cate ceva din toate sau sa fim cat mai buni la cat mai putine lucruri? In opinia mea, depinde destul de mult de interesele fiecaruia si de momentul in care ne aflam in cariera.

Pentru cineva aflat exact la inceputul carierei, in primii sai 3 ani, dorinta naturala este a ceea de a incerca sa faca cat mai multe, sa experimenteze cat mai multe arii si task-uri, pentru a vedea ce a anume i-ar placea cel mai mult. Astfel, in acest punct de inceput as zice ca explorarea e cuvantul cheie si incercatul, dar pentru o structurare logica a cunostintelor, ideal ar fi sa invatam un lucru pe rand. Daca eu in calitate de QA ma apuc sa invat simultan si testare manuala, si programare cu Java, si JavaScript, si 2-3 framework-uri de automatizare, si cum sa scriu teste de performanta, atunci exista riscul sa nu invat de fapt nimic concret.

Daca suntem deja trecuti de primii 4-5 ani ai carierei, si suntem pe la nivelul de mijloc, atunci putem incepe sa ne cautam o anumita nisa a noastra pe care sa o stapanim cat mai bine, sa stim ca aia e baza noastra care ne reprezinta. Iar ulterior, daca vrem sa facem tranzitia spre un rol tehnic cu senioritate mare, Technical Lead sau un rol pe partea de management al produsului, atunci putem sa incercam sa invatam si alte tehnologii adiacente, ca sa ne largim usor-usor orizontul de actiune.

Aici exista teoretizate mai multe moduri in care un om se poate specializa si sa isi structureze cariera, probabil cel mai cunoscut fiind modelul T-shaped. Acest model care este oarecum o a treia cale intre un generalist clasic si un specialist autentic, si presupune ca un om are o specializare a sa pentru care are o expertiza aprofundata, dar in paralel are si un set de cunostinte extinse asupra mai multor arii conexe cu specialitatea sa.

In orice caz, nu exista o reteta unica si nici un raspuns corect la intrebarea din aceasta sectiune. Aici depinde de fiecare dintre noi cum vrem sa ne dezvoltam si in ce directii am vrea sa o luam, ce anume sa invatam si in ce nise profesionale sa lucram. Esenta este sa nu ne plafonam, sa nu credem ca nu mai avem nimic noi de invatat, si sa fim mereu deschisi la nou.

Concluzii

In incheiere, o cariera in domeniul IT se poate construi in foarte multe moduri si directii posibile, in functie de interesele noastre profesionale, de ceea ce ne place sa facem si ce consideram ca ne aduce satisfactiile necesare.

Atat rolul de specialist in 2-3 tehnologii dintr-o anumita arie, cat si cel de generalist cu un knowledge mediu in mai multe sfere de activitate reprezinta in egala masura moduri valide de a ne construi si aseza o astfel de cariera in industria tehnologiei. Fiecare are avantajele si dezavantajele sale proprii, si tine in primul rand de noi sa ne decidem cum vrem sa evoluam pe parcursul anilor.

Desigur, trebuie sa tinem cont de abilitatile noastre, de lucrurile la care ne pricepem (mai bine) si de ce am putea invata ulterior. Nu le vom sti niciodata pe toate din toate domeniile, iar dincolo de asta suntem oameni, si e normal sa nu ne placa toate lucrurile.

Surse

Articole care explica cu puncte tari si slabe atat categoria de generalist cat si pe cea de specialist gasesti pe LinkedIn, Indeed, Pluralsight sau Techtarget, inclusiv tipuri de roluri din IT pentru fiecare categorie si explicarea diverselor modele de cariera (T-shaped, M-shaped etc.).

Mircea-Gabriel Macarie

https://www.linkedin.com/in/mirceamacarie/

Tech enthusiast și QA engineer, membru al comunității Vlog De IT. Interesat de testare software (QA) în general, de User Experience și Web Development.

Related post

Leave a Reply

Your email address will not be published. Required fields are marked *