Jak jsem se dostal k ThoughtWorks aneb ukázkový rozhovor

Jak jsem se dostal k ThoughtWorks aneb ukázkový rozhovor

Nezdá se vám zvláštní, že když se chystáte změnit zaměstnání a vyvstane potřeba absolvovat pohovor, první věc, kterou si pomyslíte, je „na pohovor se musíte připravit“. Vyřešte problémy na HackerRanku, přečtěte si Crack the coding interview, zapamatujte si, jak ArrayList funguje a jak se liší od LinkedListu. Ach ano, mohou se také zeptat na třídění a bylo by zjevně neprofesionální říkat, že rychlé třídění by s největší pravděpodobností bylo nejlepší volbou.
Ale počkejte, programujete 8 hodin denně, řešíte zajímavé a netriviální problémy a v nové práci budete plus mínus dělat to samé. Abyste však mohli projít pohovorem, musíte se nějak dodatečně připravit, dokonce ani nezdokonalit své každodenní dovednosti, ale naučit se něco, co jste ve své současné práci nepotřebovali a pravděpodobně nebudete potřebovat ve svém příštím. Na vaše námitky, že informatiku máme v krvi, a pokud nás probudíte uprostřed noci, jsme povinni napsat se zavřenýma očima na povlak na procházku po šířce stromu, aniž bychom se probudili k vědomí. odpoví, že když dostanu práci v cirkuse a můj hlavní trik bude přesně tohle - tak možná ano, souhlasím. Tuto dovednost je třeba vyzkoušet.

Proč ale testovat dovednosti, které nejsou pro vaši současnou práci relevantní? Jen proto, že se to stalo módou? Protože to dělá Google? Nebo proto, že se váš budoucí vedoucí týmu musel před pohovorem naučit všechny metody třídění a nyní věří, že „každý dobrý programátor musí znát nazpaměť implementaci hledání palindromu v řetězci“.

No, vy nejste Google (c). Co si může dovolit Google, běžné firmy ne. Společnost Google po analýze dat svých zaměstnanců dospěla k závěru, že inženýři se zkušenostmi z olympiád jsou dobří v řešení jeho konkrétních úkolů. Navíc si tím, že navrhnou svůj výběrový proces, mohou dovolit riskovat, že možná nenajme pár dobrých inženýrů, protože nedokážou snadno vyřešit matematické problémy. Ale to pro ně není problém, lidí, kteří chtějí pracovat v Googlu, je mnoho, pozice bude uzavřena.
Nyní se podívejme z okna, a pokud před vaší kanceláří inženýři, kteří pro vás chtějí pracovat, ještě nezřídili stanový tábor a vaši vývojáři častěji hledají na stackoverflow, co je potřeba nainstalovat příští Spring anotace, spíše než složitosti hodnotících algoritmů, pak je zjevně čas, abyste se zamysleli nad tím, zda byste měli zkopírovat Google.

Pokud tentokrát Google selhal a neposkytl odpověď, co byste měli dělat? Zkontrolujte, co přesně bude vývojář při práci dělat. Čeho si na vývojářích ceníte?
Stanovte si kritéria pro to, koho chcete najmout, a vypracujte testy, které otestují přesně tyto dovednosti.

ThoughtWorks

Co s tím má společného ThoughtWorks? Zde jsem pro sebe našel příklad modelového rozhovoru. Kdo jsou ThoughtWorks? Ve zkratce se jedná o High-End konzultační společnost s kancelářemi po celém světě od Číny, Singapuru až po americké kontinenty, která se poradenstvím v oblasti vývoje zabývá již cca 25 let, má vlastní Science Division v čele s Martinem Fowler. Pokud hledáte seznam 10 knih, které si musí softwarový inženýr přečíst, pak možná 2-3 z nich napíší kluci z ThoughtWorks, jako Refactoring by Martin Fowler a Building Microservices: Designing Fine-Grained Systems od Sama Newman nebo Building Evolutionary Architectures
Autor: Patrick Kua, Rebecca Parsons, Neal Ford.

Podnikání společnosti je postaveno na poskytování docela drahých služeb, ale zákazník platí za fenomenální kvalitu, kterou tvoří odbornost, interní normy a samozřejmě lidé. Proto je zde najímání správných lidí životně důležité.
Jací lidé mají pravdu? Pro každého jsou samozřejmě jiné. Společnost ThoughtWorks zjistila, že nejdůležitějšími kritérii pro jejich vývojářský obchodní model jsou:

  • Schopnost rozvíjet se ve dvojicích. Je to schopnost, ne zkušenost nebo dovednost. Nikdo neočekává, že přijdou lidé, kteří se párovému programování věnují 5 let. Ale být vnímavý k názorům ostatních a umět naslouchat je nezbytná dovednost.
  • Schopnost psát testy a ideálně cvičit TDD
  • Rozumět SOLID a OOP a umět je aplikovat.
  • Prezentujte svůj názor. Jako konzultant musíte spolupracovat s vývojáři klienta, s dalšími konzultanty a není moc přínosné, když člověk něco umí, ale úplně to nedokáže zprostředkovat zbytku týmu.

Nyní je důležité zhodnotit tyto konkrétní dovednosti u kandidáta. A zde chci mluvit o své zkušenosti s pohovory v ThoughtWorks. Hned řeknu, že jsem jel do Singapuru a prošel, ale náborový proces je jednotný a nebude se v jednotlivých zemích příliš lišit.

Fáze 0. HR

Jak se často stává, 20minutový pohovor s personalistou. Nebudu se tím zdržovat, jen řeknu, že jsem nikdy nepotkal HR člověka, který by dokázal 15 minut mluvit o kultuře vývoje ve firmě, proč používají TDD, proč párové programování. Obvykle HR na tuto otázku vadnou a říkají, že jejich proces je normální: vývojáři vyvíjejí, testeři testují, manažeři řídí.

Fáze 1. Jak dobrý jsi v OOP, TDD?

1.5 hodiny před začátkem rozhovoru mi byl zaslán úkol vyrobit simulátor Mars Rover.

Mise roveru na MarsNa náhorní plošině na Marsu má NASA přistát četu robotických roverů. Tato náhorní plošina, která je podivně obdélníková, musí být navigována rovery, aby jejich palubní kamery mohly získat úplný pohled na okolní terén a poslat je zpět na Zemi. Poloha a umístění roveru je reprezentováno kombinací souřadnic x a y a písmenem představujícím jeden ze čtyř hlavních světových stran. Plošina je rozdělena do mřížky pro zjednodušení navigace. Příkladem pozice může být 0, 0, N, což znamená, že rover je v levém dolním rohu a směřuje na sever. Aby bylo možné ovládat rover, NASA posílá jednoduchý řetězec písmen. Možná písmena jsou „L“, „R“ a „M“. „L“ a „R“ způsobí, že se rover otočí o 90 stupňů doleva nebo doprava, aniž by se pohnul ze svého aktuálního místa. 'M' znamená posun vpřed o jeden bod mřížky a zachování stejného kurzu.
Předpokládejme, že čtverec přímo na sever od (x, y) je (x, y+1).
VSTUP:
První řádek vstupu jsou pravé horní souřadnice plošiny, souřadnice vlevo dole se považují za 0,0.
Zbytek vstupu jsou informace týkající se roverů, které byly nasazeny. Každý rover má dva vstupní řádky. První řádek udává polohu roveru a druhý řádek je řada instrukcí, které roveru říkají, jak prozkoumat plošinu. Pozice se skládá ze dvou celých čísel a písmene oddělených mezerami, které odpovídají souřadnicím x a y a orientaci roveru.
Každý rover bude dokončen postupně, což znamená, že druhý rover se nezačne pohybovat, dokud první nedokončí pohyb.
VÝSTUP:
Výstupem pro každý rover by měly být jeho konečné souřadnice a směr.
POZNÁMKY:
Jednoduše implementujte výše uvedené požadavky a dokažte, že vysavač funguje napsáním jednotkových testů.
Vytváření jakékoli formy uživatelského rozhraní je mimo rozsah.
Bude preferováno řešení problému pomocí přístupu TDD (Test Driven Development).
V krátké době, kterou máme k dispozici, nám jde více o kvalitu než o úplnost.
*Nemohu odeslat úkol, který mi byl zaslán, toto je starý úkol, který byl zadán před několika lety. Ale věřte mi, v zásadě zůstává vše při starém.

Zvláště bych chtěl upozornit na hodnotící kritéria. Kolikrát jste se setkali se situací, kdy věci, které jsou pro kandidáta důležité, jsou při auditu zcela nedůležité a naopak. Ne každý myslí stejně jako vy, ale mnozí mohou přijmout a následovat vaše hodnoty, pokud jsou jasně vyjádřeny. Takže z hodnotících kritérií je okamžitě jasné, že nejdůležitější dovednosti jsou v této fázi

  • TDD;
  • Schopnost používat OOP a psát udržovatelný kód;
  • schopnost párového programování

Byl jsem tedy varován, abych těch 1.5 hodiny strávil přemýšlením o tom, jak úkol provedu, než psaním kódu. Společně napíšeme kód.

Když jsme se dostali k telefonu, kluci nám krátce řekli, kdo jsou a co dělají, a nabídli, že zahájíme vývoj.

Během celého pohovoru jsem ani jednou neměl pocit, že bych byl dotazován. Existuje pocit, že vyvíjíte kód v týmu. Pokud se někde zaseknete, pomáhají, radí, diskutují, dokonce se mezi sebou hádají, jak to nejlépe udělat. Na pohovoru jsem zapomněl, jak v JUnit 5 zkontrolovat, že metoda hází Výjimku - nabídli pokračování psaní testu, zatímco jeden z nich googloval, jak na to.

Doslova pár hodin po rozhovoru jsem dostal konstruktivní zpětnou vazbu – co se mi líbilo a co ne. V mém případě jsem byl pochválen za použití tříd Sealed jako alternativy k nulovému objektu; za to, že jsem před napsáním kódu v pseudokódu napsal, jak bych chtěl rover ovládat, a dostal jsem tak náčrt tříd, alespoň těch, které jsou zapojeny do API robota.

Krok 2: Řekněte nám

Týden před pohovorem jsem byl požádán, abych připravil prezentaci na jakékoli téma, které mě zaujalo. Formát je jednoduchý a známý: 15 minut prezentace, 15 minut odpovídání na otázky.
Vybral jsem si Clean Architecture od strýčka Boba. A opět se mnou dělalo rozhovor pár lidí. Byla to moje první zkušenost s prezentací v angličtině a možná, kdybych byl ve stresové situaci, nezvládl bych to. Ale ani jednou jsem neměl pocit, že jsem na pohovoru. Všechno je jako obvykle - říkám jim, oni pozorně poslouchají. Ani tradiční sezení otázek a odpovědí nebylo jako rozhovor, bylo jasné, že otázky nebyly pokládány tak, aby se „potopily“, ale ty, které je v mé prezentaci skutečně zaujaly.

Pár hodin po rozhovoru jsem dostal zpětnou vazbu – prezentace byla velmi užitečná a poslech si opravdu užili.

Fáze 3. Kód kvality výroby

Po upozornění, že se jedná o poslední fázi technických pohovorů, jsem byl požádán, abych kód uvedl domů do stavu připraveného pro výrobu, poté kód poslal ke kontrole a naplánoval pohovory, na kterých se změní požadavky na úkol a kód se změní. vyžadovat úpravu. Výhledově mohu říci, že code review probíhá naslepo, recenzenti neznají pozici, na kterou se uchazeč hlásí, nevidí jeho životopis, nevidí ani jeho jméno.

Zazvonil telefon a na druhé straně monitoru bylo opět pár chlapů. Všechno je stejné jako u prvního rozhovoru: hlavní věcí je nezapomenout na TDD, říct, co děláte a proč. Pokud jste TDD ještě nepraktikovali, pak doporučuji začít s tím okamžitě, ne proto, že je to ve firmách nutné, ale protože vám to výrazně zjednodušuje život, snižuje hladinu stresu, chcete-li. Pamatujete si, jak jste museli zběsile hledat pomocí debuggeru chybu, kterou lze reprodukovat pouze prostřednictvím prohlížeče, ale nemůžete ji reprodukovat testy? Teď si představte, že takovou chybu budete muset zachytit při pohovoru – pár šedivých vlasů máte zaručeně. Co získáme s TDD? Změnili jsme kód a nečekaně jsme si uvědomili, že nyní jsou testy červené, ale co je chyba, kterou nemůžeme napoprvé zjistit? Dobře, řekneme tazatelům „Jejda“, stiskneme Ctrl-Z a začneme dělat malé kroky vpřed. A ano, musíte v sobě vyvinout schopnost rozvíjet se pomocí TDD, schopnost jít k cíli, aby vaše testy byly trvale zelené, a ne červené po dobu půl dne, protože „máte spoustu refaktoringu“. Je to přesně stejná dovednost jako psaní udržovatelného kódu nebo psaní produktivního kódu.

To, jak dobře lze váš kód změnit, tedy závisí na tom, jaký návrh máte na mysli, jak je jednoduchý a jak dobré jsou vaše testy.

Po rozhovoru jsem během několika hodin obdržel zpětnou vazbu. V této fázi jsem si uvědomil, že jsem téměř skončil a zbývalo jen velmi málo, než jsem „potkal Fowlera“.

Etapa 4. Finále. Dost technických otázek. Chceme vědět, kdo jste!

Abych byl upřímný, byl jsem touto formulací otázky poněkud zmaten. Jak můžete během jedné hodiny rozhovoru pochopit, jaký jsem člověk? A ještě více, jak tomu můžete rozumět, když mluvím jazykem, který není mým rodným jazykem, a upřímně řečeno, velmi mizerně a jazykem svázaný. V předchozích rozhovorech bylo pro mě osobně snazší mluvit, než odpovídat na otázky a na vině byl přízvuk. Alespoň jeden z tazatelů byl Asiat – a jejich přízvuk, řekněme, je poněkud specifický pro evropské ucho. Rozhodl jsem se proto pro aktivní přístup – připravit si prezentaci o sobě a na začátku pohovoru nabídnout, že o sobě budu touto prezentací mluvit. Když budou souhlasit, tak aspoň na mě bude méně otázek, když nabídku odmítnou, no, 3 hodiny mého života stráveného na prezentaci nejsou zas tak vysoká cena. Ale co byste měli ve své prezentaci napsat? Životopis - Narodil se tam, v té době, chodil do školy, vystudoval univerzitu - ale koho to zajímá?

Pokud si na Googlu něco málo o kultuře Thoughtworks, najdete článek Martina Fowlera [https://martinfowler.com/bliki/ThreePillars.html], který popisuje 3 Pilíře: Udržitelné podnikání, Software Excellence a Sociální spravedlnost.

Předpokládejme, že Software Excellence již byl u mě zkontrolován. Zbývá ukázat udržitelné podnikání a sociální spravedlnost.

Navíc jsem se rozhodl zaměřit se na to druhé.

Nejprve jsem mu řekl, proč ThoughtWorks – na vysoké škole jsem četl blog Martina Fowlera, odtud moje láska k čistému kódu.

Projekty lze také prezentovat z různých úhlů pohledu. Vyvinul také software pro medicínu, který zjednodušil život pacientů, a podle pověstí dokonce zachránil jeden život. Vyvíjel jsem také software pro banky, který také usnadnil život občanům. Zvláště pokud tuto banku využívá 70 % obyvatel země. Nejde o Sberbank a dokonce ani o Rusko.

Chceš o mně vědět? OK. Mým koníčkem je fotografování, tak či onak držím fotoaparát v rukou asi 10 let, jsou fotografie, které se nestydím ukázat. Také jsem svého času pomáhal kočičímu útulku: fotil jsem kočky, které potřebovaly trvalý domov. A s dobrými fotografiemi je mnohem snazší umístit kočku. Vyfotil jsem snad sto koček :)

Nakonec bylo 80 % mé prezentace zaplněno kočkami.

Ihned po prezentaci mi personalista napsal, že výsledky pohovoru ještě nezná, ale celá kancelář už byla z koček ohromena.

Nakonec jsem čekal na zpětnou vazbu - jako člověk jsem uspokojil všechny.

Během závěrečného rozhovoru ale HR taktně řekl, že sociální spravedlnost je velmi dobrá a potřebná, ale ne všechny projekty jsou takové. A zeptal se, jestli mě to vyděsilo. Obecně jsem to se sociální spravedlností trochu přehnal, to se stává :)

Celkový

V důsledku toho už několik měsíců pracuji v Singapuru ve společnosti Thoughtworks a vidím, že zde příliš mnoho společností přejímá „nejlepší postupy pro pohovory“ od Googlu, které ke kódování používají listy a Whiteboard, přestože mají více znalostí než Spring, Symfony, RubyOnRails (Podtrhněte, co je nutné) není v práci vyžadováno. Inženýři si před pohovorem berou týden volna, aby se „připravili“.

V Thoughtworks jsou kromě adekvátních požadavků na kandidáta v popředí tyto zásady:
Radost z rozhovoru. Navíc pro obě strany. Pokud chcete získat nejlepší personál (a kdo ne?), pak pohovor není trh, kde se vybírají otroci, ale show, kde se zaměstnavatel i kandidát navzájem hodnotí. A pokud si kandidát se společností spojuje příjemné emoce, je pravděpodobné, že si vybere právě tuto společnost

Více tazatelů ke zmírnění zaujatosti. U Thoughtworks je párové programování de facto standardem. A pokud lze tuto praxi aplikovat i na jiné oblasti, TW se o to snaží. V každé fázi pohovor vedou 2 lidé. Každého člověka tedy posuzuje minimálně 8 lidí a TW se snaží vybírat tazatele různého původu, různých směrů (nejen technařů) a pohlaví.

Nakonec bude rozhodnutí o přijetí přijato na základě názorů alespoň 8 lidí a nikdo nemá rozhodující hlas.

Najímání na základě atributů Namísto rozhodování na základě toho, co se kandidátovi líbí nebo nelíbí, je pro každou roli a každou fázi vyvinut formulář, který zahrnuje posuzované atributy. Zároveň se při posuzování velmi doporučuje nehodnotit zkušenost v určité dovednosti, ale schopnost ji uplatnit. Pokud tedy uchazeč nedokázal uplatnit nějaké dovednosti, jako je TDD, ale přesto se je snaží uplatnit, poslouchá rady, jak je správně používat, má šanci pohovorem projít.

Certifikáty o vzdělání nejsou vyžadovány TW nevyžaduje žádnou certifikaci ani vzdělání v oboru informatiky. Hodnotí se pouze dovednosti.

Toto je první pohovor se zahraničními firmami, na který jsem se nemusel připravovat. Po každé etapě jsem se necítil vyčerpaný, ale naopak jsem byl rád, že jsem mohl aplikovat osvědčené postupy, že to lidé na druhé straně monitoru ocenili a aplikovali je každý den.

Po několika měsících mohu říci, že má očekávání byla plně naplněna. Jak se ThoughtWorks liší od běžné společnosti? V běžné firmě najdete dobré vývojáře a fajn lidi, ale v TW je jejich koncentrace mimo žebříčky.

Pokud máte zájem připojit se k ThoughtWorks, můžete si prohlédnout naše otevřené pozice zde
Doporučuji také věnovat pozornost zajímavým volným místům:
Vedoucí softwarový inženýr: Německo, Londýn, Madrid, Singapore
Senior softwarový inženýr: Sydney, Německo, Manchester, Bangkok
Softwarový inženýr: Sydney, Barcelona, Milán
Senior Data Engineer: Milán
Analytik kvality: Německo Čína
Infrastruktura: Německo, Londýn, Chile
(Chtěl bych vás upřímně varovat, že odkaz je odkaz na doporučení, pokud půjdete na TW, obdržím pěkný bonus). Vyberte si kancelář, která se vám líbí, nemusíte se omezovat na Evropu, vždyť každé 2 roky vás TW rádi přestěhují do jiné země, protože... toto je součástí politiky ThoughtWorks, takže kultura je rozšířena a homogenizována.

Neváhejte se zeptat v komentářích nebo mě požádat o doporučení.
Pokud se vám téma zdá zajímavé, napíšu o tom, jaké to je pracovat v ThoughtWorks a jaký je život v Singapuru.

Zdroj: www.habr.com

Přidat komentář