Specialist sau Generalist? (IT sau cross-domain)

Continuarea discutiei de aici.

Luand in considerare acest articol si aceasta discutie, care credeti ca sunt acele sweet spots care imbina diferite tipuri de programare (e.g. back-end cu front-end) sau programarea cu alte meserii (e.g. programarea cu marketing-ul)?

https://blog.lelonek.me/jack-of-all-trades-but-master-of-none-2865d34a6442#.28ranx1ab

One of the saddest things often seen among, even well-educated, programmers is that they don’t know the first thing about how to set up the system they use for (rarely) development and (mostly) deployment.

“Jack of all trades” is someone who not only know how the application’s code works but can also do low-level UNIX debugging of your web server processes, analyze your RDBMS’s configuration for potential performance bottlenecks, and check your network’s configuration for hard-to-find issues. And, more important, after finding the problem, the “Jack of all trades” can quickly make architecture and design decisions, implement code fixes, and deploy a new fixed system to production.


Related

Imaginează-ți cât de bun poți fi în două domenii fără legătură, dar în care trebuie să înveți tot timpul câte ceva nou. Poți fi cel mult mediocru în ambele.

1 Like

Daca nu exista o legatura, poti sa o faci tu. Spre exemplu, poti lega programarea de marketing prin intermediul analizarii datelor primite de la google analytics, sau daca vinzi/cumperi reclame pentru ceva anume. Ca angajator, poti apela la un sistem deja existent si sa incerci sa-l folosesti pentru ce iti trebuie, cu riscul sa faci vre-o nefacuta si sa-ti pierzi intreaga afacere din cauza acelui sistem, ori fiindca nu iei in calcul rezultatele oferite de sistem pentru ca “par prea bune pentru a fi adevarate”.

“Ceva trebuie sa se fi intamplat si rezultatele trebuie sa fie gresite. Nu are cum sa creasca Nintendo la bursa cu 25%, n-are cum sa schimbe un amarat de joc de telefon valoarea de la bursa a gigantului Nintendo”.

Ok, exemplul de mai sus este putin tras de par, in sensul ca nu este cel mai bun exemplu posibil, fiindca un business analyst ar fi the way to go, dar daca iti poti permite sa angajezi doar o persoana (fie din cauza banilor, fie din cauza spatiului, ori mai stiu eu ce) si ai nevoie atat de un business analyst, cat si de un programator, ce ai alege?

  • Intermediate Programmer & Intermediate Business Analyst
  • Senior Programmer & NOT Business Analyst
  • Senior Business Analyst & NOT a Programmer

(Sa zicem ca prin “programmer” ne referim la tipul de programator de care este nevoie in firma respectiva.)

Un alt avantaj ar fi ca daca esti dispus sa platesti, poti avea persoane cu diferite specializari si sa jonglezi cu respectivele persoane in functie de cum ai nevoie (poate luna asta ai mai multe proiecte de programare, asa ca muti o persoana de la business analysis la programming, dar luna viitoare nu prea ai proiecte si muti persoana respectiva inapoi la business analysis sa faca rost de mai multe proiecte).

Deasemenea, in exemplul de fata, programator fiind stii ca ar trebui sa folosesti TDD, macar pe componentele critice, dar fiind business analyst poti oferi (destul de usor) date concrete care sa arate ca daca vor sa castige mai mult ar trebui sa faca cum stii tu ca e bine (fiindca asa ai citit pe internet). Sau poti gasi dovada ca respectivul lucru nu se aplica in cazul firmei la care lucrezi.

Uite un alt argument, mai “down to earth” (adica mai des intalnit, mai probabil de intalnit, mai palpabil si mai usor de inteles):

Ai de ales intre a angaja doua persoane care au experienta 2 ani in a face unul din urmatoarele 3 lucruri si doar 2 posturi de ocupat. Scopul echipei de 3 persoane este sa faca jocuri mobile (2D cu Graphic Designer, 3D cu Animation Designer). Sau poate vrei sa angajezi pe cineva si ai fonduri limitate. Pe cine ai alege?

  • Game Programmer 2 ani
  • Sound Designer 2 ani
  • Graphic Designer 2 ani
  • Game Programmer 1 an & Sound Designer 1 an
  • Game Programmer 1 an & Graphic Designer 1 an
  • Sound Designer 1 an & Sound Designer 1 an

Ideea e ca poti sa legi doua discipline, gen programatorul poate folosi design-ul dat de designer-ul grafic si designer-ul audio / de sunet, dar daca te bazezi pe un afon sa-ti creeze muzica pentru joc sau o persoana fara simt artistic sa-ti creeze animatii pentru caractere 3D, ai putea avea probleme destul de mari in a vinde produsul.

Astfel, alegand un specialist si un generalist vei putea sa creezi un joc (cel putin) decent (adica ce poate fi vandut), in loc de a avea un joc care:

  • Functioneaza bine si fara bug-uri, are grafica geniala dar n-are nici un sunet, ori te zgarie pe creier fiecare secunda de sunet, sau fie si doar iti da /kill mood.
  • Ori functioneaza bine si nu are buguri, are un sunet genial de te amngaie pe suflet, dar are grafica de zici ca a mazgalit un copi de 2-3 ani ceva pe hartie care seamana, cat de cat, cu ce s-a vrut a fi, dupa vre-o doua baxuri de bere la 2L.
  • Sau poate sunet genial, grafica geniala, dar jocul are 10 nivele iar nimeni nu poate trece de nivelul 4, la nivelul 3 daca folosesti 60% din butoane da crash jocul, la nivelul 2 nu vezi inamicii decat dupa ce te-au lovit si la nivelul 1 poti sa prajesti oua pe telefon… sau sa-ti faci un ceai, daca ai un ibric la indemana.

Daca esti bun esti specializat, oricat de mica e nisa ta trebuie sa fi bun si sa faci ceva mult mai bine ca altii.
Gen e posibil sa faci mult mai multi bani creand site-uri pentru avocati si notari/dentisti/politicieni decat sa faci site-uri in general pentru oricine.

Intr-o pizzerie ai un bucatar care face pizza, pe meniu ai doar pizza si preparate italienesti. Nu inseamna ca bucatarul nu iti face mancare chinezeasca sau gulas de iti lingi degetele dupa, doar ca piata pentru pizza e mult mai simpla si profitabila, respectiv 90% din oameni vor pizza.

1 Like

Dar daca privim “generalismul” ca mai multe nise. Astfel, ai putea face site-uri pentru oricine, dar in loc sa te specializezi pe unul dintre cele 3 exemple (notari, dentisti, politicieni), te specializezi pe toate 3 Sigur, nu vei fi la acelasi nivel ca cel/cea care se specializeaza, dar iti maresti client-pool-ul. Deasemenea, vei putea alege joburile cele mai bine platite, astfel.

Astfel ca daca dintr-un motiv sau altul notarii isi mai pot permite sa inversteasca atat in site-uri, ori concurenta devine foarte mare peste noapte, iar tu esti specializat/-a fix pe clienti notari, este posibil sa ai mai multe probleme (financiare, de exemplu) decat daca ai putea fluctua intre 3 nise diferite.

Cat despre exemplul cu pizza, sunt de acord, dar intrebarea era: Ai sacrifica putin din calitatea pizzei ca faca gulasul sau mancarea chinezeasca mai bune?


Side note: Daca tot am adus vorba de bucatari, un anime care ofera tips&tricks despre gatit este Shokugeki No Souma.

Bun subiectul. Eu nu sunt programator, dar fac parte din aceasta comunitate deoarece majoritatea programatorilor pe care am intalnit-o nu are business know-how. Citind aici, pe forum, invat cum sa pun problema si cum sa comunic eficient cu programatorii.

Un Jack of all trades stie sa faca BINE o chestie si are notiuni elementare din alte domenii.

Multi dintre noi nu avem sau nu mai avem contact cu realitatea din business. Un business inseamna de la startup cu venituri V la companii mari cu venituri VVVV. Pentru companiile cu venituri V si VV ar fi bine sa fii un Jack of all trades. Companiile cu veniturile V si VV reprezinta cam 60% din total. Acum, na, nu toata lumea isi permite specialisti. Nu de alta, dar in mare parte nu ai nevoie de ei - atunci cand esti business mic - deoarece risti sa cresti artificial business-ul. Nu c-ar fi neaparat rau, dar este riscant.

1 Like

Jack of all trades este posibil și util doar în cazul în care all trades reprezintă domenii asemănătoare.

  • programator și business analyst? Nope;
  • programator backend și server admin? Destul de posibil;
  • frontend (i.e. html, css & minimum de JS) și designer? Destul de posibil;
  • programator backend și fronend? Va fi mediocru pe cel puțin o parte.
  • designer și backend? Probabil că nu;
  • designer și heavy frontend (e.g. frameworks, service workers etc)? Probabil că nu.
  • Assassin’s Creed a avut o lansare plină de bug-uri acum câțiva ani.
  • ET a fost îngropat în deșert după ce tot jocul era praf
  • plus alte exemple.

Dacă vrei un produs câtuși de puțin bun, ai nevoie de foarte mare noroc pentru a reuși cu oameni mediocri.

De acord, sunt unele domenii din care iti poti permite sa mai reduci costurile.

Daca faci un joc AAA, nu-ti prea poti permite sa ai multi oameni mediocrii, decat daca au o specializare in care sunt buni si sub-specializari in care sunt mediocrii. Dar uneori este necesar sa ai astfel de persoane, pentru a putea comunica eficient intre departamente.

Un programator ii poate cere unui designer sa faca un brat care in 3 frame-uri sa devina o mitraliera, insa poate uiti sa mentionezi ca vrei ca cele 2 frame-uri dintre brat si mitraliera sa fie afisate timp de 5 secunde, in loc de o fractiune de secunda cum poate credea designer-ul (sau invers).

Mai multe detalii despre posibila confuzie.

Programatorul poate a mentionat in termeni de specialitate ce vrea, dar nu ma astept ca toti designerii sa inteleaga ca “jocul va rula la 60 fps, dar pentru a mari performanta, upgrade-urile vor lua 300 frame-uri (frames-per-seconds), iar noua ne trebuie ca bratul soldatelului sa se transforme in mitraliera in 3 frame-uri (imagini diferite)” inseamna ca fiecare dintre cele 3 frame-uri vor dura 100 de fps, sau putin peste o secunda si jumatate… si te alegi cu o imagine blurata si neclara, in loc de situatii intermediare dintre bratul fiind brat si bratul fiind mitraliera.

Nu sunt de acord. :slight_smile: Mă uit puțin în oglindă și programator prost nu (cred că) sunt, iar partea de business și înțelegerea nevoilor clienților ar cam fi punctul meu forte. :slight_smile:

Edit: Adevărat, venind dintr-un background „uman”, sociologie - cercetare de piață.

1 Like

Păi da, dar tu, cel mai probabil, faci parte din excepțiile care confirmă regula :slight_smile:

Când o să aud măcar un sfert din programatorii cunoscuți de mine că sunt încântați să discute cu oameni noi o să-mi schimb părerea. Până atunci… :smiley:

1 Like