apie karjerą programavime

Kokia geriausia programavimo karjera? Kaip daugiausiai uždirbt pinigų?

Klausdami žmonės ko gero nenori gero atsakymo, o iš tiesų nori lengviausio kelio. Pamėginsiu papasakot truputį apie tai, kokios problemos ir galimybės yra technologijų srityje, jeigu nori kažkiek įdėt pastangų.

Visada egzistuoja unikalūs pavyzdžiai, kaip kelių žmonių startupas parsiduoda už milijardą ar kelis, tačiau greta to yra visa didžiulė industrija, kurios kontekste toks sandoris galėjo įvykti.

Į R&D (tai yra, techninio personalo algas) keturi gigantai (Amazon, Alphabet, Intel, Microsoft) investavo daugiau nei $12B kiekvienas. Milijardais investuoja ir IBM, Oracle, Facebook, Cisco, etc. Vos kelios tokios kompanijos programuotojams išleidžia daugiau, nei uždirba įžymybių industrijos kaip Holivudas, visos sporto lygos kartu sudėjus ar dar kas. Žiūrint pagal rinkos kapitalizaciją, top10 kompanijų sąraše rasit Big5 – Apple, Alphabet, Microsoft, Amazon, Facebook – kurios visos mušas dėl talentų. Be šitų didžiųjų pelningų gigantų yra ir eilė kitų kompanijų – Uber, Airbnb, Dropbox, etc – kurios irgi dalyvauja/konkuruoja toj pačioj programuotojų paieškoj.

Kurį laiką atrodė, kad pelningiausia karjera yra hedge fondai Wall St., bet nors ir egzistuoja legendomis apipinti matematinių galvų medžiotojai kaip Jane Street ar Rennaisance Technologies, tai nėra organizacijos, kurios galėtų įtakot visą darbo rinką, o Ivy League studentai vis labiau kraunas daiktus ir važiuoja į Vakarų Krantą.

Kalifornija yra viena iš kelių pasaulio vietų, kur neleidžiami darbo keitimo apribojimai, ir leidžiamas at-will darbas (t.y. kompanija gali bet kada atleist, tu bet kada gali išeit pas konkurentą). Tai reiškia, kad aukštos kvalifikacijos specialistas su gera specializacija gali išnaudot savo žvaigždės statusą dideliems pinigams, prilygstantiems kitų sričių įžymybėms, tik tiek, kad nebus niekam įdomus už industrijos ribų (kiek žmonių žino, kas yra koks nors Jeff Dean?).

Šiose kompanijose technologinės žinios tampa vertingesnės už vadybos žinias, tad leidžiami paraleliniai karjerų keliai – nebūtina būt direktorium ar viceprezidentu, kad būt atitinkamoj kompanijos grandyje. Taip kuriami nauji lygiai, kai nebežtenka “distinguished engineer”, tampama “fellow”, kaip nebeužtenka “fellow”, tampama “senior fellow”. Kai kurios kompanijos, kaip Facebook, net neturi matomų inžinierių titulų – “software engineer” gali reikšti tik ką pradėjusį dirbti naujoką, bet gali būti ir industrijos lyderio titulas.

Techninėje karjeroje egzistuoja pakankamai aiškus laipteliai – pradedi nuo to, kad gali vykdyti tau duotas užduotis, tada tampi savarankiškesnis, pradedi individualiai vykdyt projektus, tada juos formuot ir padėt komandai, tada išplėti savo reiklą ir įtakoji kelių komandų, departamento ar organizacijos veiklą, padedi formuot strategines kompanijos iniciatyvas, ir kažkuriuo metu atsirandi savo industrijos priekyje.

Šiais laikais yra daug įdomių sričių – kol dauguma mažų kompanijų džiaugias debesimis, kažkas juos kuria – stato duomenų centrus, kuriuose svarbu ne tik, kad sistemos veiktų, bet kad būtų ekonomiškai optimalios (dabar į šią sritį įžengė ir Oracle). Besimokančios mašinos (dirbtinis intelektas) sulaukia labai daug dėmesio ir daug pinigų – ir save bevairuojančiuose automobiliuose, ir duomenų analizėje ar kovoje su spam’u, ir nuotraukų filtruose ar kalbos atpažinime jūsų telefonuose.

Didelėse organizacijose produktų kūrimas tapo įvairių sričių bendradarbiavimu (ir politika) – produktų vadovai, dizaineriai, UX tyrėjai, duomenų analitikai ir programuotojai kartu formuoja kitą mygtuką ir renka jo spalvą. Sudėtingose problemose – optimizavime, ML, realaus laiko analizėj etc – individualaus žmogaus galimybės tampa daug svarbesnės ir vieno žmogaus darbas ir įtaka gali būti egzabaitinių sistemų pagrindu.

Duomenų centrai pasaulyje jau valgo dešimtis gigavatų energijos – kokiam Amazonui reiktų keletos Ignalinos atominių reaktorių, kad pamaitint serverius, o problemos, kurias nori sprest tokios kompanijos, tik sudėtingėja. Taigi, pinigų industrijoj daug, problemų irgi daug, ir iš esmės visur trūksta tik žmonių.

Ką reikia mokėt? Jeigu neturit patirties panašiose industrijose, yra keli keliai. Vienas – švari, gerai veikianti galva, ir stiprūs gebėjimai spręst problemas kažkurioj srity. Algoritmai, paskirstytos sistemos, ML, pasaulio (vaizdų, balso, kalbos) atpažinimas, etc. – daug tokių sričių žinių įgyjama per akademinį gyvenimo etapą, jeigu laikas universitetuose praleidžiamas gilinantis į šias sritis.

Kompanijos labai daug dėmesio skiria tiems universitetams, kuriuose vidutinis paruošimas yra labai stiprus – tada ir atvažiuos daryt interviu vietoje, ir nuolat siūlys praktikas. Geriausia, jeigu universitetas turi kažkokias laboratorijas, kurios jau bendradarbiauja su industrija. Lietuvoje universitetai mato vietines kompanijas, ir tarptautinis rekrutingas beveik neegzistuoja. Galbūt daliai žmonių labai padės Uber’io skyriai Vilniuje, bet tai yra ganėtinai plona šlangelė į platųjį pasaulį.

Žinoma, jeigu to nėra, nieko nedarant geriau nebus – reikia mėgint parodyt, kad gali kažką pasiūlyt. TopCoder ir panašūs konkursai leidžia ir pasportuot pačiam, ir parodyt industrijai, kad kažką sugebi, ir beveik visi kompanijų dalyvavimai konferencijose, išoriniuose projektuose, žaidynėse yra realiai skirti pritraukt naujiems darbuotojams. Dalyvavimas konferencijose vertinamas labiau ne pagal tai, kas išmokta, o pagal tai, kiek naujų rekrutų pririnkta per dalinimąsi problemomis ir idėjomis.

Kažkiek reik bent kiek žinot technologijų madas – programavimo kalbos ir technologijos vystosi, nes egzistuoja poreikis greitai ir kokybiškai kurt sofistikuotus sprendimus. Pradėjus dirbt kiekviena kompanija per pirmas kelias savaites suruoš tokį bootcamp’ą, kad teks pamiršt daug, ka mokėjai iki tol – bet žinių turėjimas apie modernias praktikas tai labai palengvina, o geras metodikų jautimas leidžia greitai įtakot ir kolegų darbą – per peer review’us ar tiesiogiai juos mokant.

Taip pat galima įgyt praktiką kitose kompanijose – nėra blogas tonas kas keletą metų pakeist darbdavį, jeigu einama į geresnę poziciją ar kompaniją. Dažnai kompanijos nori turėt įvairesnių patirčių iš įvairių sričių, kad neužsibūt toj pačioj monokultūroj.

Kiek ir kaip uždirba programuotojai? Skirtingos kompanijos turi skirtingas filosofijas, vienose daug visokių priedų, akcijų ir dar ko, kitose (kaip Netflix) tiesiog mokamos didelės algos. Tokiose kompanijose kaip Google ar Facebook aukštesniuose lygiuose didžioji dalis pajamų gaunama akcijų pavidalu, tad sunku vertint, kokia iš tiesų yra alga – ar skaičiuot grant’o metu, ar kai išmokama.

Sunku rast gerus šaltinius apie didesnes algas – dažniausiai žmonės apie jas neberašo/nebekalba, bet pagal apklausas Glassdoor’e galima matyt didesnes nei $300k algas, o Blind’e žmonės dažnai kalba apie milijoninius algų paketus didžiosiose kompanijose – galima lygint su NBA žaidėjų algom, na, gal tik Valančiūnas jau atitrūkęs su savo kontraktu. Viešose žalių kortų aplikacijų duomenų bazėse galima matyt daug pozicijų, kur imigrantų bazinė alga be akcijų ir priedų viršyja $200k (tad dažnai tai reiškia bent dvigubai didesnius tikrus paketus).

Kai paskiriamos akcijos, jų vertė gali būti kelis kartus mažesnė, nei jas gavus (Amazon, Microsoft, Facebook, Google vertės “truputį” pakilo per pastaruosius kelis metus) – ir visada egzistuoja klausimas, ar gavęs tą vertę pinigais būtum pirkęs kompanijos akcijų. Tokia nežinomybė užkrauna kažkiek streso (ypač, kai krenta rinkos), bet kartu ir motyvuoja dirbti, nes nenori kitiems rodyt blogo pavyzdžio (ir pamatęs blogus pavyzdžius eini kovot).

Screenshot 2017-05-27 12.54.11

Žinoma, galima į visą tai žiūrėt ir kiek labiau atsipalaidavus – pilna darbo ir ne pačiuose sudėtingiausiuose projektuose, mygtukus suprogramuot irgi kažkam reikia, ir žmonės gali susikurt patogias karjeras nelipdami į aukščiausius kalnus – sėdint tokiose pozicijose algos vis tiek yra šimtais tūkstančių dolerių per metus. Kaip minėjau, industrija didelė, problemų daug, žmonių trūksta.

Jeigu rūpi finansinė karjeros dalis, didžiosios kompanijos yra aiškiausiai pasiekiamas tikslas. Galima rizikuot, kurt startupus, dar bet ką, bet tam reikės ne tik sukurti technologijas, bet ir tikėtis, kad jos bus vertingai pritaikytos. Kai aišku, kad kompanija kuria reikalingą produktą – ar tai būtų Uber, AirBnB, Microsoft, Google, ar dar kas, akivaizdu, kad bus daug lengviau suprast savo darbo vertę (o ją dar reikės pačiam aprašyt kas pusmetį vykstančiuose ‘performance summary cycle’).

Jeigu rūpi tik technologinė karjeros dalis, įdomiausios  problemos egzistuoja tyrimų padaliniuose didžiosiose kompanijose ir finale vis tiek nepavyks pabėgt nuo jų traukos (ir algos).

Ko dar reikia? Pastangų ir daug laiko, kaip ir bet kurioj kitoj karjeroj. Aš savo srityje jau beveik dvidešimt metų \o/ Ai, ir dar reik išvažiuot iš savo kaimo :)