Jak se nabírají Javisti na Filipínách
Tak nějak se přihodilo, že poslední tři, čtyři roky dělám permanentně technické pohovory s Java vývojáři. Za tu dobu to byly desítky pohovorů. V nové práci jsem to povýšil na další stupeň, když jsem začal dělat občasné remote interview přes Skype a mohl si tak popovídat třeba s lidmi z Brazílie, nebo Indie.
Minulý měsíc se to posunulo ještě dál. Naše společnost otevírá nové delivery centrum v Manile na Filipínách. Bude to základna naší divize pro asijské projekty. Jedním z primárních kroků je vytvořit core team — technical lead, Java vývojář, C# vývojár, integrátor a validator (tester) — který bude schopný autonomně fungovat a eventuálně se postupně rozrůstat.
Že dělám Java pohovory se o mně (minimálně interně) ví, takže jsem dostal nabídku podílet se na výběru lidí pro nový core team.
Místo činu
Pokud jste, tak jako já, neabsolvovali zeměpis v 80tých letech (do dneška si pamatuju skoro všechny hlavní města světa), možná vám přijde vhod pár informací pro navození prostředí.
Filipíny jsou lidnatá země (98 mil. obyv.), s Českem má bezvízový styk, uředními jazyky jsou Filipínština a Angličtina. Hlavním městem je Manila, která je jedním ze 16 cities, které tvoří metropolitní oblast Metro Manila (12 mil. obyv.). Každá pořádná metropole má svůj business district — v případě Manily je to Makati City, kde se také nachází pobočka naší firmy.
Makati je celkem bezpečný region, kde se nemusíte, jako Evropan, bát chodit po ulicích. Nevím, nakolik je to pravda, ale byl jsem místními opakovaně varován, ať si dávám pozor (nebrat si taxíka na letišti, nenosit telefon v ruce, neustále sledovat svoje věci). Plus určitých věcí si člověk všimne sám: taxikář ihned po vašem nastoupení zamkne dveře, časté kontroly zavazadel v budovách, strážní se samopaly v mrakodrapech. A v den, kdy jsem odlétal, zastřelili na letišti starostu jednoho z filipínských měst. Zkrátka trochu jiný svět, než na který jsem zvyklý.
Pár nezávazných generalizací
Strávil jsem v Makati jeden týden a byl to můj první výlet mimo Evropu, takže by bylo pošetilé z toho vyvozovat nějaké obecné závěry. Spíš to berte jako něco, s čím se můžete setkat, pokud budete v podobné situaci. Takže…
Úroveň kandidátů je o řád nižší než v Praze. Když v Manile někdo řekne, že je senior (a třeba i má odpovídající léta praxe), bude to z našeho pohledu spíš junior. A to co se týče znalostí, zkušeností a bohužel i možností (viz dále). Setkal jsem se třeba s relativně seniorním člověkem, který rutinně psal unit testy, ale bez jediného assertu!?! Prostě to, že produkční kód provolám, je dostatečný test (vážně, on nevěděl, že asserty existují a byl vděčný, že se na pohovoru něco naučil).
Asie je továrna na code monkeys. Slyšeli jste někdy, že by programátoři dělali na směny? Tak na Filipínách je to běžná praxe. Jeden z nejčastějších důvodů pro změnu zaměstnání je, že nechtějí dělat noční směny. Velice často pracují u firem zvučných jmen (Accenture, Oracle, IBM, Logica/CGI), ale pouze jako offshore potrava pro děla. Analýza a QA jsou téměř vždy dělány onshore (z pohledu Filipínců distribuovaně, vzdáleně) a vývojáři dělají jenom mechanickou implementaci tasků, často bez porozumnění principům a souvislostem.
Holky jsou daleko schopnější, než kluci. Sám pro sebe jsem si to nazval “Asian Girl Power”. Přiznám se, mám (pracovní ;-) slabost pro holky programátorky. Jsou zodpovědné, pečlivé, cílevědomé, odvádějí velmi dobrou práci (true story). Přesně takhle na mne zapůsobila většina kandidátek na pohovorech. Navíc, oproti českému IT, na Filipínách je běžné, že se holky věnují počítačům — poměr pohlaví na pohovorech byl lehce nakloněn k mužským účastníkům, ale ne nijak výrazně.
School matters. Když dělám pohovory v Česku, tak zcela ignoruju, jakou má kandidát školu. Kolikrát ani neregistruju, jestli vůbec má univerzitní vzdělání. Prostě české zglajchšaltované školství. Ne tak na Filipínách, kde je situace dost podobná anglosaskému modelu. Pokud jste absolvent University of the Philippines (UP), patříte do extra ligy. Ještě ucházející je Polytechnic University of the Philippines (PUP). A pak už je to jedno. Hodně taky záleží na studovaném programu — pokud místo Computer Engineeringu studujete Electronics Communications Engineering, budete na tom, jako vývojář, dost špatně (co se týká znalostí, teorie a vyhlídek).
Zajímavé také bylo, že všichni kandidáti, bez výjimky, měli bakalářský titul. Žádný magistr, nikdo bez univerzitního vzdělání. Většinou je to tak, že po dodělání bakaláře jdou hned pracovat a školu si pak už nedodělávají.
Všichni Javisti dělají v Eclipse. No comment. (bez ironie ;-)
Místní Silicon Valley je Singapur. Je to tak, pro Jihovýchodní Asii je Singapur houba, která nasává ty schopné a telentované. A pokud je nasaje, už se nechtějí vrátit zpět.
Jídlo je fantastický! Nemusíte být fanoušek asijské kuchyně. Ale ta bohatost a rozmanitost chutí je v Evropě nepředstavitelná. Jeden příklad za všechny — čerstvé mango, oh yeah!! Navíc, filipínská kuchyně je úlně jiná, než thajská, vietnamská, čínská… Pro mne určitě důvod, proč se vracet.
Jak dělat interview na druhém konci světa?
Cesta na Filipíny trvá letadlem něco mezi 17 a 22 hodinama. Takže si tam nezaletíte jen tak na otočku. Plus je tady časový posun — Filipíny leží v časovém pásmu GMT +8, což znamená dvě věci: jednak budete mít solidní jet lag a jednak se špatně domlouvají remote interview.
Když dělám pohovory v Praze, mám s každým kandidátem phone screen — je to prvotní filtr, jestli vůbec má smysl se s kandidátem vidět osobně. Vzhledem k časovému posunu Filipín jsme tuto možnost zavrhli a vydali se cestou testu. Nemám rád testy. Nesnáším je jako kandidát a nesnáším je jako pohovorující. Nicméně v tomto výjimečném případě jsem je vzal na milost jako přijatelný způsob screeningu.
Na tomto místě bych rád poděkoval svému kolegovi Banterovi, který velkou část testu vytvořil, já jsem do toho jenom tak filozoficko-strategicky kafral. Test je taková směska vytvořená s ohledem na potřebný profil — takže je tam něco z Java language, Java API, Enterprise Javy, SQL, unit testů, UML a Banterův oblíbený FizzBuzz ;-)
Pokud byste se náhodou chtěli pouštět do podobného testu a chcete, aby měl nějakou vypovídací hodnotu, nezapomeňte si otázky ohodnotit — ne všechny mají stejnou váhu. Taky je dobrý si test na někom nanečisto vyzkoušet, abyste ověřili, že je splnitelný — dal jsem ho kolegovi tady v Praze, seniornímu Javistovi (stihnul to za předpokládanou hodinu, na plný počet bodů).
Výše, v sekci generalizací, jsem psal o nižší úrovni kandidátů. Pro představu, dva nejlepší výsledky z testu byly 17,5 a 16,5 bodu z 24. Průměr byl kolem 10-12 bodů. A výjimečný nebyly ani výsledky se 4 body.
Kandidáti, které jsem viděl na místě, byli profiltrovaný dvěma způsoby — jednak testem a dále už prošli i HR pohovory. Interview byly naplánovány na celý týden, většinou vycházely tak tři na jeden den. Docela záběr.
Agenda pohovorů byla dosti podobná tomu, jak už jsem popisoval v článku Jak dělám Java pohovor. Od té doby jsem to zase o něco vylepšil (o tom někdy příště), ale pro filipínské prostředí jsem to upravil do podoby:
- Představení pohovorujících.
- Představení naší firmy.
- Představení kandidáta.
- Technické otázky.
- Java workshop.
První tři body, předpokládám, není potřeba vysvětlovat. Co se ale skrývá pod termíny technické otázky a Java workshop?
Technické otázky
Technické otázky začínám nabídkou: “Můžete mi popsat Váš poslední, nebo poslední úspěšný projekt, z technického pohledu?" Je to pozvolný přechod od CV k technickým záležitostem. Co mě zajímá, je:
- Architektura daného projektu — chci ji namalovat (ideálně na tabuli, nebo aspoň na papír) a popsat. Je zde široké pole pro diskuzi — nad komponentami (technologie), vztahy mezi nimi (protokoly), plusy a mínusy, performance, v jakém kontextu je aplikace vyvíjena atd.
- Jak vypadal tým a jakým způsobem byl řízen. Sem spadají role v týmu, metodologie a procesy, komunikace v rámci týmu a mimo tým, daily work atd.
- Jak vypadalo řízení projektu z technického pohledu? Čili opět metodiky a procesy, ale i správa issues a nástroje na podporu (a automatizaci) projektu, release management atd., atd.
Hlavním cílem “projektové” otázky je zjistit, jak je kandidát zakotven v softwarovém inženýrství. Pokud není a říká o sobě, že je senior, má u mne docela vážný problém.
Pak už následují čistě technické otázky, které se odvíjejí od kandidátova CV a praxe. Zpravidla se ptám na věci, které by měl kandidát dobře znát. A naopak — neptám se ho na věci, s nimiž nemá zkušenost, byť je bude v budoucí práci u nás potřebovat. Nejčastěji se otázky točí kolem nějaké komponety, či technologie z oblasti “enterprise” Javy, takže buď něco z Java EE, nebo ze Springu.
Někdy se zeptám na věci, které jsou sice minoritně důležité, ale zaujmou mě (catch my eye) — třeba SoapUI, nebo Selenium. Třeba o tom něco ví. Nebo si to tam dali jen tak pro zajímavost. Tak, nebo tak, zajímá mne, jak se k tomu v odpovědi postaví.
Ať už je otázka jakákoliv, začínám zvolna. “Jaký je hlavní princip za technologií XY? Jak to funguje?" A pak jdeme postupně hloubš a hloubš. Na určité úrovni se pak kandidátovy (nebo moje :-) znalosti zastaví. Což je moje ryska na stupnici kandidátovy seniority. A další otázka podobným způsobem. Většinou jsou takové technologické otázky 2 až 3 a strávíme tím zhruba půl hodiny.
Java workshop
Ohledně Java workshopu se nebudu moc rozepisovat a odkážu vás na budoucí článek. Obecně jde o to, že s kandidátem strávím cca půl až hodinu programováním a diskuzí nad kódem v IDE.
Zadáním je UML diagram “určitého abstraktního řešení” (omlouvám se, zatím nebudu konkrétní). Pokud ho kandidát zná, může ho zkusit vysvětlit. Pokud nezná, vysvětlím ho já. Pak otevřu notebook a to co je na diagramu může kandidát vidět jako kostru projektu v IDE.
Kandidát by měl řešení naimplementovat a napsat k němu unit testy. To, jak kandidát píše kód a jak dobře ovládá IDE je podstatné a zajímavé. Ale daleko důležitější je, jak se mnou komunikuje. Zadání je totiž dosti vágní a tak záleží na kandidátovi, na co se zeptá, s jakým přijden nápadem apod. Jak reaguje na otázky, které průběžně pokládám.
Celá seance by měla ideálně připomínat párové programování, nebo code review. Mým cílem je, aby kandidát nebyl ve stresu a v nejlepším případě si to i užil. Ne vždy se to podaří. Ale to je v pořádku, protože to co hledám, není jen technické ohodnocení.
Minimálně stejně důležitý je i cultural fit. Takže pokud někdo nepíše testy, neumí diskutavat nad designem a neumí zdůvodnit své rozhodnutí/implentaci, vidím to jako závažný problém. Stejně tak, pokud někdo dělá pět let v nějaké IDE a neumí ho adekvátně ovládat (fakt se najdou senioři, kteří neznají Ctrl+Space).
(Více o Java workshopu napíšu ve slibovaném článku, kde bych se chtěl podívat na to, proč si myslím, že je to dobrý způsob, jak si otestovat kandidáta.)
Po interview
Tak a máme po interview. Možná měl kandidát ještě nějaké otázky, pár zdvořilostí na závěr a hotovo! Ne tak docela. Je potřeba si kandidáta ohodnotit, možná udělat předběžné rozhodnutí. Pokud je víc intreview v řadě, je dobré si kandidátovo hodnocení nějak “znormalizovat” a zadasadit do relativního kontextu k ostatním — pokud nabírám (i průběžně) více lidí na stejnou pozici, stačí mi, že kandidát překročí určitou laťku. Pokud ale obsazuji jednu pozici z více kandidátů, je dobré mít možnost nějak si je porovnat.
Já jsem si na Filipínách udělal jednoduchou tabulku:
To je, čistě za mne, hodnocení technického pohovoru. Což je, samozřejmě, pouze část přijímacího a rozhodovacího procesu. Je to podklad, který společně s mými poznámkami na CV používám pro diskuzi a argumenaci s ostatním členy pohovorujícího týmu.
A jak to dopadlo?
Možná čekáte, že vám teď řeknu, kolik kanditátů jsme přijali, jaký je jejich profil atd. Neřeknu. Jednak, tenhle článek není o tom, jak se staví core team, ale jak vypadá interview v mém pojetí. A pak, najmout lidi do týmu není otázka jednoho týdne pohovorů — je tam spousta dalších aspektů a i časově je to daleko náročnější.
Nicméně, pokud by vás takové téma zajímalo, můžu vás navndadit na jeden z budoucích článků, který bude o tom, jak se (v Česku) staví tým vývojářů. Zůstaňte na příjmu!