ITSimplified: Cât de tare e un programator de la Facebook/Google/Microsoft?

În 2009, Brian Acton, unul din fondatorii WhatsApp a fost refuzat de Facebook în urma unui interviu de angajare.

Foarte mulți au considerat-o a fi una din cele mai costisitoare greșeli ale Facebook. Eu unul nu o consider deloc așa, ci o consider o oportunitate de a cumpăra, cinci ani mai târziu, ceva ce a meritat din punctul lui Facebook de vedere un miliard de dolari.

Un alt aspect e important aici: ce s-ar fi întâmplat dacă nu ar fi fost rejectat la interviu? Ce ar fi reușit să realizeze în interiorul Facebook? Cât credeți că a câștigat în Facebook cel care a făcut Messenger-ul, cel care conduce “divizia”? Îi știți măcar numele? Credeți că a făcut (la banii lui Facebook) mai mult de o cifră cu 7 zerouri? Eu mă îndoiesc. Asta pentru că înțeleg ceva mai bine acum cum funcționează o firmă mare, și de ce e imposibil să fii un star-developer în interiorul unei astfel de firme. Este Brian Acton un programator bun? Habar nu am, dar în mod sigur e sau a devenit un antreprenor abil. În momentul în care Facebook l-a refuzat, asta s-a întâmplat pentru că în dubiu erau calitățile lui de programator, nu abilitățile lui antreprenoriale.

Pentru că programatorii care ajung la firmele astea mari trebuie să dovedească faptul că sunt foarte buni programatori, cu multă experiență, cu profunzime în gândire. Nu oricine ajunge programator la o firmă de genul acesta, și în mod sigur pragul pentru admitere e foarte înalt. Azi, de exemplu, e foarte greu să fii luat în seamă dacă nu ai un portofoliu serios, împănat eventual cu multe proiecte open-source pe github sau în locuri similare.

Am putea presupune că programatorii din interiorul firmelor mari sunt foarte tari, însă până acum am vorbit numai despre pragul de la intrare. Ca să intri trebuie să dovedești că poți sări acel prag, însă odată trecut acel prag calitățile de programator încep să se tocească, fiind înlocuite cu alte măiestrii. Motivul pentru care se întâmplă acest lucru este faptul că nu sunt esențiale calitățile de scriitor de cod. Ele sunt foarte repede eclipsate de așa numitele “soft-skills”, calități ce țin de integrarea în echipă, de viziune de ansamblu, de capacitatea de înțelegere.

Primul șoc pe care îl are programatorul în firmele mari este că toate lucrurile pe care el crede că le va implementa, algoritmii complecși despre care a discutat la angajare, design-ul aplicațiilor, tot e deja făcut. Lucrurile merg și merg bine, pentru că de-asta firma aia e firmă mare. Așa că primul șoc va veni de la primul task, care va fi mult sub orice a mai făcut până atunci. La fel cu al doilea sau al treilea task, pentru că în mare parte munca de programare e făcută din lucruri pe care le-ar putea rezolva și un elev de clasa a IX-a dacă i se explică clar ce trebuie făcut. Șocul de substanță pentru mulți dintre tinerii angajați care nu au mai lucrat în firme mari până atunci e dat de cât de prost e făcută implementarea programelor care fac lumea IT să funcționeze.

După câțiva ani de programat într-o firmă mare e imposibil să nu te rutinezi pentru că 90% din lucrurile pe care le faci ar merita făcute de un junior, copiii proaspăt ieșiți de pe băncile facultăților, cei care cred că adevărata măiestrie stă în datul cu dalta și ciocanul fără să le pese de imaginea de ansamblu. Așa că în câțiva ani de programat într-o firmă mare începi să te uiți în alte părți, spre zona de management, spre zona de design, încep să îți placă conferințele și să discuți despre teme mai largi, mai generale.

O carieră lungă de programator într-o firmă mare e nocivă. Esențial e să crești, să ajungi în cele din urmă în management. Cel mai probabil, cu experiența cumulată în firma mare îți vei construi propria firmă cu ideile tale proprii, multe inspirate din cultura organizațională a mamuților pe care îi părăsești.

Dar ca și calități de programator, ceva se ‘strică’, ireversibil. Devine mult mai neimportant codul, mult mai neinteresant programul în sine, și mult mai importantă imaginea de ansamblu. Așa că suspiciunea mea pe care încă nu mi-am confirmat-o e că programatorii de la firmele mari sunt niște programatori mediocri puși în probleme ceva mai dificile din cauza circumstanțelor (firmă mare, proiecte enorme cu milioane de clienți și așa mai departe). Cei care rămân buni rămân pentru că se concentrează pe un subiect din ce în ce mai îngust.

Invariabil, lucrurile care te-au făcut bun la angajare nu te pot ține în jobul respectiv. De altfel, interviul acela de angajare e doar un punct pe un checklist; cred însă ferm faptul că oamenii din spatele procesului de achiziție de resurse umane înțeleg că ei aduc doar oameni care “au fost la un moment dat buni la chestia asta”, cu știința clară a faptului că se vor transforma în programatori mediocri.

O concluzie. Un programator într-o firmă mare nu e întotdeauna mai bun ca unul din afară, însă în mod cert va avea un plus de viziune, asta în afară de cazul în care devine o lipitoare și va rămâne mediocru, genul acela de mediocritate care însă te va face neangajabil în 5-10 ani. Însă nu, programatorii de la firmele mari nu sunt neapărat niște programatori extraordinari, și e posibil ca după o experiență la Google, Facebook sau Microsoft oamenilor să le fie din ce în ce mai greu să se adapteze la lucrul în echipe mai mici, cu resurse mai mici și pe proiecte unde calitățile individuale sunt mai importante.

Sara Haider. Just because I can.

Sara Haider. Just because I can. Even if she wasn’t able to keep secret.ly open.

Comments

ITSimplified: Cât de tare e un programator de la Facebook/Google/Microsoft? — 11 Comments

  1. Intr-o firma gen Microsoft, Google etc, sub 3% din developeri fac chestii cu adevarat inovative si dificile, restul e multa munca de rutina si e normal asta.. In plus, Microsoft de ex. nu doar Windows sau Azure – sunt si departa!mente care fac chestii interesante (MS Research), dar si altele care fac mai mult outsourcing si aplicatii de gestiune banale, la fel ca multe firme de pe noi, precum MS Consulting Services..

    • Da, corect, ce mă interesa aici era mai degrabă să clarific un pic o afirmație mai veche de-a mea, că programarea nu e doar muncă de imaginație, mai e și multă muncă de “grunt”.

  2. E valabil pentru absolut orice domeniu care implica “praguri” de experienta. Companiile mari au toate diviziile suficient de specializate, astfel incat rutina se va instala oricum. Totusi, o companie mare este esentiala in CV-ul unui viitor antreprenor 🙂

  3. Personal I disagree cu unele chestii:
    – termenul de ‘programator’ e “obsolete”, mai degraba developer, system nu-stiu-ce, software engineering, sr consultant etc, dar nu programator/programmer; cel putin asa e in N America, nu stiu cum o fi in Europa;
    – mai sint “nise” de development unde nu te plafonezi, unde poti face chestii interesante mai tot timpul, e vorba de “production”, sint firme mari de accounting, property management, banking, manufacturing, healthcare care au departamente de IT, care fac software
    – in chestii de production software exista multe situatii in care ti se cere sa fii “genius” (inventiv, creativ, indraznet), ce ai demonstrat ca stii la angajare poate fi egal cu zero intr-o situatie reala de productie in care e vorba de damage control, data backup/recovery etc
    – de ce trebuie sa ajungi neaparat in management? daca esti un sr-ceva, stii bine business-ul respectiv si faci chestii interesante+platit bine, de ce trebe sa te bagi in blah-blah-blah si management de oameni+clienti?
    – experienta acumulata intr-o firma mare poate sa te duca pe alt post sr intr-o alta firma mare, ce rost are sa muncesti zi si noapte pt o idee fixa pe cont propriu cind poti sa gasesti un post similar de sr development/consulting intr-o alta firma?

    • In Romania cel putin, termenii de programator, analist-programator :), software developer sau software engineer inseamna cam acelasi lucru, sigura diferenta e ca unii poate suna mai ‘fancy’ in CV ca e in engleza.

      Tot aici multi de developeri incearca sa ajunga in management ( multi dupa doar 4-5 ani de la angajare) asta fiind cam singura metoda de a obtine un salariu mai substantial dupa nivelul de senior developer.. Management nu inseamna neaparat CTO sau altele asemenea, ci si project manager sau chiar team leader.
      Joburi de “arhitect” sau “business analyst” sunt extrem de rare si doar in firmele mari.

  4. Ca fost angajat (developer) al unei multinationale pot sa confirm in mare parte cele spuse mai sus. Sunt si exceptii, desigur, exceptii in care este mai multa libertate de alegere si miscare, in care o atitudine patrunzatoare si pasiunea pentru “cod” si pentru eleganta lui are loc sa se desfasoare. Dar cam rar, din pacate.
    Un alt detaliu potrivnic noului developer angajat si entuziasmat este lentoarea cu care “lucrurile se misca”. Multi-nationala este un organsim lent si incapatanat, nu-i prea poti schimba cursul; ramane mult in urma iar asta e si din cauza aplicatiilor “mamut” care sunt greu de refacut si schimbat in tehnologii mai noi. O persoana pasionata se va satura repede si va pleca spre locuri mai insorite.

  5. coincidenta a facut ca Brian Acton sa fie in locul potrivit, la momentul potrivit. punct.
    aia cu motivationalele ar zice: in orice esec se afla un potential succes. poate da, poate nu.
    programator genial? ma indoiesc.
    antreprenor innascut? probabil nu.

    • Nu coincidența, ci mai degrabă spiritul antreprenorial. O chestie precum WhatsApp nu poate fi făcută fără bani mulți, și ei au făcut aplicația și au și găsit pe cineva să investească. E în regulă, în România nu prea putem să facem așa ceva, mai ales când ne gândim că e penibil să faci o aplicație de tip Messenger pe telefon. Dar important e cine și cât investește.

    • cum ziceam, se afla in locul potrivit, la momentul potrivit. asta se traduce in: mediul propice, resurse financiare, ideea aplicatiei, proximitatea investitorilor etc.
      daca nu vrei sa-i zicem coincidenta, hai sa-i zicem sansa.
      candva se puteau face chestii din astea si la noi, vezi povestea RAV vanduta la Microsoft. desi acolo a fost o masura de control a pietei antivirus, nu au cumparat vreo idee geniala.