Ako som sa dostal k ThoughtWorks alebo ukážkový rozhovor

Ako som sa dostal k ThoughtWorks alebo ukážkový rozhovor

Nezdá sa vám zvláštne, že keď sa chystáte zmeniť prácu a vznikne potreba absolvovať pohovor, prvá vec, ktorú si myslíte, je „na pohovor sa musíte pripraviť“. Vyriešte problémy na HackerRank, prečítajte si Crack the coding interview, zapamätajte si, ako ArrayList funguje a ako sa líši od LinkedList. Ach áno, môžu sa tiež pýtať na triedenie a bolo by zrejme neprofesionálne tvrdiť, že rýchle triedenie by bolo s najväčšou pravdepodobnosťou najlepšou voľbou.
Ale počkaj, programuješ 8 hodín denne, riešiš zaujímavé a netriviálne problémy a v novej práci budeš plus mínus robiť to isté. Aby ste však mohli absolvovať pohovor, musíte sa nejako dodatočne pripraviť, dokonca ani zdokonaliť svoje každodenné zručnosti, ale naučiť sa niečo, čo ste vo svojej súčasnej práci nepotrebovali a pravdepodobne nebudete potrebovať pri ďalšej. Na vaše námietky, že informatiku máme v krvi, a ak nás zobudíte uprostred noci, sme povinní napísať so zavretými očami na obliečku na vankúš prechádzku po šírke stromu bez toho, aby sme nadobudli vedomie. odpovie, že ak dostanem prácu v cirkuse a môj hlavný trik by bol presne tento - potom možno áno, súhlasím. Túto zručnosť je potrebné otestovať.

Prečo však testovať zručnosti, ktoré nie sú relevantné pre vašu súčasnú prácu? Len preto, že sa to stalo módou? Pretože to robí Google? Alebo preto, že váš budúci vedúci tímu sa musel pred pohovorom naučiť všetky metódy triedenia a teraz verí, že „každý dobrý programátor musí vedieť naspamäť implementáciu nájdenia palindrómu v reťazci“.

Nie ste Google (c). To, čo si Google môže dovoliť, bežné firmy nedokážu. Spoločnosť Google po analýze údajov svojich zamestnancov dospela k záveru, že inžinieri so skúsenosťami s olympiádou sú dobrí pri riešení jej špecifických úloh. Okrem toho si tým, že navrhnú svoj výberový proces, môžu dovoliť riskovať, že si nezamestnajú niekoľko dobrých inžinierov, pretože nedokážu ľahko vyriešiť matematické problémy. Ale to nie je pre nich problém, je veľa ľudí, ktorí chcú pracovať v Google, pozícia bude uzavretá.
Teraz sa pozrime z okna, a ak pred vašou kanceláriou inžinieri, ktorí pre vás chcú pracovať, ešte nezriadili stanový tábor a vaši vývojári častejšie hľadajú na stackoverflow, čo bude potrebné nainštalovať ďalšiu anotáciu Spring, skôr ako zložitosť algoritmov hodnotenia, potom je zrejme čas, aby ste sa zamysleli nad tým, či by ste mali skopírovať Google.

No, ak tentoraz Google zlyhal a neposkytol odpoveď, čo by ste mali robiť? Skontrolujte, čo presne bude vývojár robiť pri práci. Čo si ceníte na vývojároch?
Stanovte si kritériá, koho chcete najať, a vytvorte testy, ktoré preveria presne tieto zručnosti.

ThoughtWorks

Čo s tým má spoločné ThoughtWorks? Práve tu som našiel pre seba príklad vzorového rozhovoru. Kto sú ThoughtWorks? V skratke ide o High-End poradenskú spoločnosť s kanceláriami po celom svete od Číny, Singapuru až po americké kontinenty, ktorá sa poradenstvu v oblasti vývoja venuje už cca 25 rokov, má vlastnú divíziu Science na čele s Martinom Fowler. Ak hľadáte zoznam 10 kníh, ktoré si musí softvérový inžinier prečítať, potom možno 2-3 z nich napíšu chlapci z ThoughtWorks, ako napríklad Refactoring by Martin Fowler a Building Microservices: Designing Fine-Grained Systems od Sam. Newman alebo Building Evolutionary Architectures
Autor: Patrick Kua, Rebecca Parsons, Neal Ford.

Podnikanie firmy je postavené na poskytovaní dosť drahých služieb, no zákazník platí za fenomenálnu kvalitu, ktorú tvorí odbornosť, interné normy a samozrejme ľudia. Preto je tu najímanie správnych ľudí životne dôležité.
Akí ľudia majú pravdu? Samozrejme, každému vyhovuje niečo iné. Spoločnosť ThoughtWorks určila, že najdôležitejšie kritériá pre ich obchodný model pre vývojárov sú:

  • Schopnosť rozvíjať sa vo dvojici. Je to schopnosť, nie skúsenosť alebo zručnosť. Nikto nečaká, že prídu ľudia, ktorí sa párovému programovaniu venujú 5 rokov. Ale byť vnímavý k názorom iných ľudí a vedieť počúvať je nevyhnutná zručnosť.
  • Schopnosť písať testy a ideálne precvičovať TDD
  • Rozumieť SOLID a OOP a vedieť ich aplikovať.
  • Prezentujte svoj názor. Ako konzultant musíte spolupracovať s vývojármi klienta, s inými konzultantmi a nie je veľký prínos, ak človek vie niečo robiť dobre, ale úplne to nedokáže sprostredkovať zvyšku tímu.

Teraz je dôležité zhodnotiť tieto konkrétne zručnosti u kandidáta. A tu chcem hovoriť o svojich skúsenostiach s pohovormi v ThoughtWorks. Hneď poviem, že som išiel do Singapuru a prešiel som, ale náborový proces je jednotný a nebude sa v jednotlivých krajinách veľmi líšiť.

Etapa 0. HR

Ako sa často stáva, 20-minútový rozhovor s HR. Nebudem sa nad tým pozastavovať, len poviem, že som ešte nestretol HR človeka, ktorý by vedel 15 minút rozprávať o kultúre vývoja vo firme, prečo používajú TDD, prečo párové programovanie. Obyčajne HR na túto otázku chradne a hovorí, že ich proces je normálny: vývojári vyvíjajú, testeri testujú, manažéri jazdia.

Fáza 1. Aký dobrý si v OOP, TDD?

1.5 hodiny pred začiatkom rozhovoru mi poslali úlohu vyrobiť simulátor Mars Rover.

Misia roveru na MarsSkupina robotických roverov má pristáť NASA na náhornej plošine na Marse. Túto náhornú plošinu, ktorá je zvláštne obdĺžniková, musia navigovať rovery, aby ich palubné kamery mohli získať úplný pohľad na okolitý terén a poslať ich späť na Zem. Poloha a poloha roveru je reprezentovaná kombináciou súradníc x a y a písmena reprezentujúceho jeden zo štyroch svetových strán. Plošina je rozdelená do mriežky, aby sa zjednodušila navigácia. Príklad polohy môže byť 0, 0, N, čo znamená, že rover je v ľavom dolnom rohu a je otočený na sever. Aby bolo možné ovládať rover, NASA posiela jednoduchý reťazec písmen. Možné písmená sú „L“, „R“ a „M“. „L“ a „R“ spôsobia, že sa rover otočí o 90 stupňov doľava alebo doprava bez toho, aby sa pohol zo svojho aktuálneho bodu. „M“ znamená posunúť sa o jeden bod mriežky dopredu a zachovať rovnaký smer.
Predpokladajme, že štvorec priamo na sever od (x, y) je (x, y+1).
VSTUP:
Prvý riadok vstupu sú pravé horné súradnice plošiny, súradnice vľavo dole sa považujú za 0,0.
Zvyšok vstupu sú informácie týkajúce sa roverov, ktoré boli nasadené. Každý rover má dva vstupné riadky. Prvý riadok udáva polohu roveru a druhý riadok je séria inštrukcií, ktoré hovoria roveru, ako preskúmať náhornú plošinu. Pozícia sa skladá z dvoch celých čísel a písmena oddelených medzerami, ktoré zodpovedajú súradniciam x a y a orientácii roveru.
Každý rover bude dokončený postupne, čo znamená, že druhý rover sa nezačne pohybovať, kým prvý nedokončí pohyb.
VÝKON:
Výstupom pre každý rover by mali byť jeho konečné súradnice a smer.
POZNÁMKY:
Stačí implementovať vyššie uvedené požiadavky a dokázať, že vysávač funguje, napísaním jednotkových testov.
Vytváranie akejkoľvek formy používateľského rozhrania je mimo rozsahu pôsobnosti.
Uprednostňuje sa riešenie problému podľa prístupu TDD (Test Driven Development).
V krátkom čase, ktorý máme k dispozícii, nám záleží viac na kvalite ako na úplnosti.
*Nemôžem uverejniť úlohu, ktorá mi bola zaslaná, toto je stará úloha, ktorá bola zadaná pred niekoľkými rokmi. Ale verte mi, v zásade zostáva všetko po starom.

Osobitne by som chcel upozorniť na hodnotiace kritériá. Koľkokrát ste sa už pri audite stretli so situáciou, že veci, ktoré sú pre kandidáta dôležité, sú úplne nepodstatné a naopak. Nie každý uvažuje rovnako ako vy, ale mnohí dokážu prijať a nasledovať vaše hodnoty, ak sú jasne uvedené. Takže z hodnotiacich kritérií je okamžite jasné, že najdôležitejšie zručnosti v tejto fáze sú

  • TDD;
  • Schopnosť používať OOP a písať udržiavateľný kód;
  • schopnosti párového programovania

Takže som bol upozornený, aby som tých 1.5 hodiny strávil premýšľaním o tom, ako túto úlohu urobím, a nie písaním kódu. Kód napíšeme spolu.

Keď sme si zatelefonovali, chalani nám stručne povedali, kto sú a čo robia a ponúkli sa, že začnú s vývojom.

Počas celého rozhovoru som ani raz nemal pocit, že by som bol na pohovore. Existuje pocit, že kód vyvíjate v tíme. Ak sa niekde zaseknete, pomáhajú, radia, diskutujú, dokonca sa medzi sebou hádajú, ako to najlepšie urobiť. Na pohovore som zabudol, ako v JUnit 5 skontrolovať, že metóda hádže Výnimku – ponúkli sa, že budú pokračovať v písaní testu, pričom jeden z nich googli, ako na to.

Doslova pár hodín po rozhovore som dostal konštruktívnu spätnú väzbu – čo sa mi páčilo a čo nie. V mojom prípade som bol chválený za použitie tried Sealed ako alternatívy k nulovému objektu; za to, že som pred písaním kódu napísal v pseudokóde, ako by som chcel ovládať rover, a tak som dostal náčrt tried, aspoň tých, ktoré sú zapojené do API robota.

Krok 2: Povedzte nám to

Týždeň pred pohovorom som bol požiadaný, aby som pripravil prezentáciu na akúkoľvek tému, ktorá ma zaujala. Formát je jednoduchý a známy: 15 minút prezentácia, 15 minút zodpovedanie otázok.
Vybral som si Clean Architecture od Uncle Bob. A opäť so mnou urobilo rozhovor pár ľudí. Bola to moja prvá skúsenosť s prezentáciou v angličtine a možno, keby som bol v stresovej situácii, nezvládol by som to. Ale zas ani raz som nemal pocit, že som na pohovore. Všetko je ako obvykle – hovorím im, oni pozorne počúvajú. Ani tradičná relácia otázok a odpovedí nebola ako rozhovor, bolo jasné, že otázky neboli kladené na „potopenie“, ale na tie, ktoré ich v mojej prezentácii skutočne zaujali.

Pár hodín po rozhovore som dostal spätnú väzbu – prezentácia bola veľmi užitočná a naozaj si ju užívali.

Etapa 3. Kód kvality výroby

Po upozornení, že toto je posledná fáza technických pohovorov, som bol požiadaný, aby som kód uviedol doma do stavu pripraveného na výrobu, potom poslal kód na kontrolu a naplánoval pohovory, na ktorých sa zmenia požiadavky na úlohu a kód vyžadujú úpravu. Pri pohľade do budúcnosti môžem povedať, že kontrola kódu prebieha naslepo, posudzovatelia nepoznajú pozíciu, o ktorú sa kandidát uchádza, nevidia jeho životopis, nevidia ani jeho meno.

Zazvonil telefón a na druhej strane monitora bolo opäť pár chlapov. Všetko je rovnaké ako pri prvom rozhovore: hlavnou vecou je nezabudnúť na TDD, povedať, čo robíte a prečo. Ak ste TDD ešte nepraktizovali, tak odporúčam začať s tým okamžite, nie preto, že je to potrebné vo firmách, ale preto, že vám to výrazne zjednodušuje život, ak chcete, znižuje hladinu stresu. Pamätáte si, ako ste museli horúčkovito hľadať s debuggerom chybu, ktorú je možné reprodukovať iba cez prehliadač, ale nemôžete ju reprodukovať testami? Teraz si predstavte, že takúto chybu budete musieť zachytiť pri pohovore – pár šedín máte zaručene. Čo získame s TDD? Zmenili sme kód a nečakane sme si uvedomili, že teraz sú testy červené, ale aká je chyba, ktorú nedokážeme zistiť na prvýkrát? Dobre, povieme anketárom „Oops“, stlačíme Ctrl-Z a začneme robiť malé kroky vpred. A áno, musíte v sebe rozvinúť schopnosť rozvíjať sa pomocou TDD, schopnosť ísť k cieľu, aby vaše testy boli na pol dňa trvalo zelené a nie červené, pretože „máte veľa refaktoringu“. Je to presne rovnaká zručnosť ako písanie udržiavateľného kódu alebo písanie produktívneho kódu.

Takže to, ako dobre je možné zmeniť váš kód, závisí od toho, aký dizajn máte na mysli, aký jednoduchý je a aké dobré sú vaše testy.

Po rozhovore som v priebehu niekoľkých hodín dostal spätnú väzbu. V tejto fáze som si uvedomil, že som takmer skončil a zostávalo veľmi málo, kým som „stretol Fowlera“.

Etapa 4. Finále. Dosť bolo technických otázok. Chceme vedieť, kto ste!

Úprimne povedané, táto formulácia otázky ma trochu zarazila. Ako môžete počas jednej hodiny rozhovoru pochopiť, aký som človek? A ešte viac, ako tomu môžete rozumieť, keď hovorím jazykom, ktorý nie je mojím rodným jazykom, a úprimne povedané, veľmi mizerným a jazykom viazaným. V predchádzajúcich rozhovoroch sa mne osobne ľahšie hovorilo, ako odpovedalo na otázky a na vine bol prízvuk. Aspoň jeden z anketárov bol Ázijčan – a ich prízvuk, no, povedzme, je trochu špecifický pre európske ucho. Preto som sa rozhodol pre proaktívny prístup – pripraviť si prezentáciu o sebe a na začiatku pohovoru ponúknuť, aby som sa touto prezentáciou porozprával. Ak budú súhlasiť, tak aspoň bude na mňa menej otázok, ak ponuku odmietnu, nuž, 3 hodiny môjho života strávené na prezentácii nie sú až taká vysoká cena. Čo by ste však mali napísať vo svojej prezentácii? Životopis - Narodil sa tam, v tom čase chodil do školy, vyštudoval univerzitu - ale koho to zaujíma?

Ak zadáte na Googli niečo o kultúre Thoughtworks, nájdete článok Martina Fowlera [https://martinfowler.com/bliki/ThreePillars.html], ktorý popisuje 3 piliere: udržateľné podnikanie, softvérová dokonalosť a sociálna spravodlivosť.

Predpokladajme, že softvérová dokonalosť už bola pre mňa skontrolovaná. Zostáva ukázať trvalo udržateľné podnikanie a sociálnu spravodlivosť.

Navyše som sa rozhodol zamerať na to posledné.

Na začiatok som mu povedal, prečo ThoughtWorks – ešte na vysokej škole som čítal blog Martina Fowlera, a preto milujem čistý kód.

Projekty môžu byť prezentované aj z rôznych uhlov pohľadu. Vyvinul aj softvér pre medicínu, ktorý zjednodušil životy pacientov, a dokonca podľa klebiet zachránil jeden život. Vyvíjal som aj softvér pre banky, ktorý uľahčil život aj občanom. Najmä ak túto banku využíva 70 % obyvateľov krajiny. Tu nejde o Sberbank a dokonca ani o Rusko.

Chcete o mne vedieť? OK. Mojím koníčkom je fotografovanie, tak či onak držím fotoaparát v rukách asi 10 rokov, sú fotografie, ktoré sa nehanbím ukázať. Svojho času som tiež pomáhal útulku pre mačky: fotografoval som mačky, ktoré potrebovali trvalý domov. A s dobrými fotografiami je oveľa jednoduchšie umiestniť mačku. Nafotil som snáď sto mačiek :)

Nakoniec 80% mojej prezentácie zaplnili mačky.

Hneď po prezentácii mi personalista napísal, že výsledky pohovoru ešte nepozná, no na celý úrad už zapôsobili mačky.

Nakoniec som čakal na spätnú väzbu - uspokojil som každého ako človek.

Počas záverečného rozhovoru však personalista taktne povedal, že sociálna spravodlivosť je veľmi dobrá a potrebná, no nie všetky projekty sú takéto. A spýtal sa, či ma to vystrašilo. Vo všeobecnosti som to so sociálnou spravodlivosťou trochu prehnal, to sa stáva :)

Celkový

Výsledkom je, že už niekoľko mesiacov pracujem v Singapure v spoločnosti Thoughtworks a vidím, že príliš veľa spoločností si tu osvojuje „najlepšie postupy rozhovorov“ od spoločnosti Google, pričom na kódovanie používajú listy a tabuľu, hoci majú viac vedomostí ako Spring, Symfony, RubyOnRails (podčiarknite, čo je potrebné) sa v práci nevyžaduje. Inžinieri si pred pohovorom berú týždeň voľna, aby sa „pripravili“.

V Thoughtworks sú okrem adekvátnych požiadaviek na kandidáta v popredí aj tieto zásady:
Radosť z rozhovoru. Navyše pre obe strany. V skutočnosti, ak chcete získať najlepší personál (a kto nie?), potom pohovor nie je trh, kde sa vyberajú otroci, ale show, kde sa navzájom hodnotia zamestnávateľ aj kandidát. A ak si kandidát so spoločnosťou spája príjemné emócie, je pravdepodobné, že si vyberie práve túto spoločnosť

Viacerí anketári na zmiernenie zaujatosti. V Thoughtworks je párové programovanie de facto štandardom. A ak sa táto prax dá aplikovať aj na iné oblasti, TW sa o to pokúša. V každej fáze pohovor vedú 2 osoby. Každého človeka teda hodnotí minimálne 8 ľudí a TW sa snaží vyberať anketárov s rôznym zázemím, rôznymi smermi (nielen technikov) a pohlavím.

V konečnom dôsledku sa o prijatí do zamestnania rozhodne na základe názorov aspoň 8 ľudí a nikto nemá rozhodujúci hlas.

Nábor na základe atribútov Namiesto rozhodovania na základe toho, čo sa kandidátovi páči alebo nepáči, sa pre každú rolu a každú fázu vytvorí formulár, ktorý obsahuje hodnotené atribúty. Zároveň sa pri posudzovaní dôrazne odporúča hodnotiť nie skúsenosť v určitej zručnosti, ale schopnosť ju uplatniť. Ak teda kandidát nedokázal uplatniť žiadne zručnosti, ako napríklad TDD, no napriek tomu sa ich snaží uplatniť, vypočuje si rady, ako ich správne používať, má šancu prejsť pohovorom.

Nevyžadujú sa certifikáty o vzdelaní TW nevyžaduje žiadnu certifikáciu ani vzdelanie v oblasti informatiky. Hodnotia sa iba zručnosti.

Toto je môj prvý pohovor so zahraničnými spoločnosťami, na ktorý som sa nemusel pripravovať. Po každej etape som sa necítil vyčerpaný, ale naopak, bol som rád, že môžem aplikovať osvedčené postupy, že to ľudia na druhej strane monitora ocenili a aplikovali ich každý deň.

Po niekoľkých mesiacoch môžem povedať, že moje očakávania boli plne naplnené. V čom sa ThoughtWorks líši od bežnej spoločnosti? V bežnej spoločnosti nájdete dobrých vývojárov a príjemných ľudí, no v TW je ich koncentrácia mimo rebríčka.

Ak máte záujem pripojiť sa k ThoughtWorks, môžete si pozrieť naše otvorené pozície tu
Odporúčam tiež venovať pozornosť zaujímavým voľným pracovným miestam:
Vedúci softvérový inžinier: Nemecko, Londýn, Madrid, Singapore
Hlavný softvérový inžinier: Sydney, Nemecko, manchester, Bangkok
Softvérový inžinier: Sydney, Barcelona, Miláno
Senior Data Engineer: Miláno
Analytik kvality: Nemecko Čína
Infraštruktúra: Nemecko, Londýn, Čile
(Chcel by som vás úprimne upozorniť, že odkaz je odkaz na odporúčanie, ak pôjdete na TW, dostanem pekný bonus). Vyberte si kanceláriu, ktorá sa vám páči, nemusíte sa obmedzovať len na Európu, napokon, každé 2 roky vás TW radi presťahujú do inej krajiny, pretože... toto je súčasťou politiky ThoughtWorks, takže kultúra sa šíri a homogenizuje.

Neváhajte sa opýtať v komentároch alebo sa ma spýtajte na odporúčania.
Ak sa vám téma zdá zaujímavá, napíšem o tom, aké je to pracovať v ThoughtWorks a aký je život v Singapure.

Zdroj: hab.com

Pridať komentár