Kako sem prišel v ThoughtWorks ali vzorčni intervju

Kako sem prišel v ThoughtWorks ali vzorčni intervju

Ali se vam ne zdi nenavadno, da ko ste tik pred menjavo službe in se pojavi potreba po razgovoru, prva stvar, na katero pomislite, je »pripraviti se morate na razgovor«. Rešite težave na HackerRank, preberite Crack the coding interview, zapomnite si, kako ArrayList deluje in kako se razlikuje od LinkedList. Oh ja, morda bodo vprašali tudi o sortiranju in očitno bi bilo neprofesionalno reči, da bi bilo hitro sortiranje najverjetneje najboljša izbira.
Ampak počakajte, programirate 8 ur na dan, rešujete zanimive in nepomembne probleme in na novem delovnem mestu boste delali isto, plus ali minus. Toda kljub temu se je treba za opravljanje intervjuja nekako dodatno pripraviti, niti ne izpopolniti vsakodnevnih veščin, ampak se naučiti nečesa, česar v trenutni službi niste potrebovali in verjetno ne boste potrebovali v naslednji. Na vaše ugovore, da nam je računalništvo v krvi in ​​če nas zbudite sredi noči, moramo z zaprtimi očmi pisati na prevleki za blazino sprehod po širini drevesa, ne da bi sploh prišli k sebi, bom odgovoril, da če dobim službo v cirkusu in bi bila moja glavna stvar trik točno to - potem morda ja, se strinjam. To veščino je treba preizkusiti.

Toda zakaj bi preizkušali veščine, ki niso pomembne za vaše trenutno delo? Samo zato, ker je postalo modno? Ker Google to počne? Ali pa zato, ker se je moral vaš bodoči vodja ekipe pred razgovorom naučiti vseh metod razvrščanja in zdaj verjame, da mora "vsak dober programer znati na pamet implementacijo iskanja palindroma v nizu."

No, vi niste Google (c). Kar si lahko privošči Google, navadna podjetja ne morejo. Google je po analizi podatkov svojih zaposlenih prišel do zaključka, da se inženirji z olimpijado dobro znajdejo pri reševanju njegovih specifičnih nalog. Poleg tega si lahko z oblikovanjem izbirnega postopka privoščijo tveganje, da morda ne bodo zaposlili nekaj dobrih inženirjev, ker ne morejo zlahka rešiti matematičnih problemov. Ampak to za njih ni problem, veliko je ljudi, ki želijo delati v Googlu, delovno mesto bo zaprto.
Zdaj pa poglejmo skozi okno in če pred vašo pisarno inženirji, ki želijo delati za vas, še niso postavili šotorskega kampa in vaši razvijalci pogosteje iščejo stackoverflow, kaj je treba namestiti naslednjo pomladno opombo, namesto zapletenosti algoritmov za razvrščanje, potem je očitno čas, da razmislite o tem, ali bi morali kopirati Google.

No, če tokrat Google spodleti in ne ponudi odgovora, kaj storiti? Natančno preverite, kaj bo razvijalec naredil pri delu. Kaj cenite pri razvijalcih?
Ustvarite merila za to, koga želite zaposliti, in razvijte teste, ki preverjajo točno te sposobnosti.

ThoughtWorks

Kaj ima ThoughtWorks s tem? Tu sem našel primer vzorčnega intervjuja zase. Kdo so ThoughtWorks? Skratka, to je High-End svetovalno podjetje s pisarnami po celem svetu, od Kitajske, Singapurja do ameriških celin, ki svetuje na področju razvoja že približno 25 let, ima lastno divizijo Science, ki jo vodi Martin Fowler. Če iščete seznam 10 knjig, ki jih mora prebrati programski inženir, potem bodo morda 2-3 izmed njih napisali fantje iz ThoughtWorksa, na primer Refactoring Martin Fowler in Building Microservices: Designing Fine-Grained Systems Sam Newman ali gradnja evolucijskih arhitektur
od Patrick Kua, Rebecca Parsons, Neal Ford.

Poslovanje podjetja temelji na zagotavljanju dokaj dragih storitev, vendar stranka plača fenomenalno kakovost, ki jo sestavljajo strokovnost, interni standardi in seveda ljudje. Zato je zaposlovanje pravih ljudi tu ključnega pomena.
Kakšni ljudje imajo prav? Seveda so za vsakogar različne. ThoughtWorks je ugotovil, da so najpomembnejša merila za njihov poslovni model razvijalcev:

  • Sposobnost razvoja v parih. To je sposobnost, ne izkušnje ali spretnost. Nihče ne pričakuje, da bodo prišli ljudje, ki se s programiranjem v parih ukvarjajo že 5 let, a biti dovzeten za mnenja drugih ljudi in znati prisluhniti je potrebna veščina.
  • Sposobnost pisanja testov in idealno vadbe TDD
  • Razumeti SOLID in OOP ter ju znati uporabiti.
  • Predstavite svoje mnenje. Kot svetovalec moraš sodelovati z naročnikovimi razvijalci, z drugimi svetovalci in ni velike koristi, če človek zna nekaj dobro narediti, pa popolnoma ne zna posredovati preostali ekipi.

Zdaj je pomembno oceniti te posebne sposobnosti pri kandidatu. Tukaj želim govoriti o svoji izkušnji intervjujev pri ThoughtWorks. Takoj bom rekel, da sem šel v Singapur in opravil, vendar je postopek zaposlovanja enoten in se od države do države ne bo veliko razlikoval.

Stopnja 0. HR

Kot se pogosto zgodi, 20-minutni razgovor s kadrovsko službo. Ne bom razglabljal o tem, rekel bom le, da še nisem srečal kadrovika, ki bi lahko 15 minut govoril o razvojni kulturi v podjetju, zakaj uporabljajo TDD, zakaj programiranje v parih. Običajno kadroviki na to vprašanje oklenejo in rečejo, da je njihov proces normalen: razvijalci razvijajo, preizkuševalci testirajo, menedžerji vozijo.

Stopnja 1. Kako dobri ste v OOP, TDD?

1.5 ure pred začetkom intervjuja sem dobil nalogo izdelati simulator Mars Rover.

Misija roverja MarsOdred robotskih roverjev naj bi NASA pristala na planoti na Marsu. Po tej planoti, ki je nenavadno pravokotne oblike, morajo roverji krmariti, da lahko njihove kamere na krovu dobijo popoln pogled na okoliški teren in ga pošljejo nazaj na Zemljo. Položaj in lokacija roverja sta predstavljena s kombinacijo koordinat x in y ter črke, ki predstavlja eno od štirih kardinalnih točk kompasa. Planota je za lažjo navigacijo razdeljena v mrežo. Primer položaja je lahko 0, 0, N, kar pomeni, da je rover v spodnjem levem kotu in obrnjen proti severu. Za upravljanje roverja NASA pošlje preprost niz črk. Možne črke so 'L', 'R' in 'M'. Z 'L' in 'R' se rover zavrti za 90 stopinj levo oziroma desno, ne da bi se premaknil s trenutnega položaja. 'M' pomeni premik naprej za eno točko mreže in ohranjanje iste smeri.
Predpostavimo, da je kvadrat neposredno severno od (x, y) (x, y+1).
VHOD:
Prva vrstica vnosa je zgornje desne koordinate planote, spodnje leve koordinate pa so predpostavljene kot 0,0.
Preostali vnos so informacije, ki se nanašajo na roverje, ki so bili nameščeni. Vsak rover ima dve vrstici vnosa. Prva vrstica podaja položaj roverja, druga vrstica pa niz navodil, ki roverju povedo, kako naj raziskuje planoto. Položaj je sestavljen iz dveh celih števil in črke, ločene s presledki, ki ustreza koordinatama x in y ter orientaciji roverja.
Vsak rover bo končan zaporedno, kar pomeni, da se drugi rover ne bo začel premikati, dokler se prvi ne konča.
IZHOD:
Rezultat za vsak rover bi morale biti njegove končne koordinate in smer.
OPOMBE:
Preprosto izvedite zgornje zahteve in dokažite, da sesalnik deluje, tako da zanj napišete teste enot.
Ustvarjanje kakršne koli oblike uporabniškega vmesnika je izven obsega.
Zaželena bo rešitev težave s pristopom TDD (testno usmerjen razvoj).
V kratkem razpoložljivem času nas bolj skrbi kakovost kot popolnost.
*Naloge, ki so mi jo poslali, ne morem objaviti, to je stara naloga, ki je bila dana pred nekaj leti. A verjemite mi, v bistvu vse ostaja isto.

Posebej bi opozoril na kriterije ocenjevanja. Kolikokrat ste se že srečali s situacijo, ko so stvari, ki so za kandidata pomembne, med revizijo popolnoma nepomembne in obratno. Ne razmišljajo vsi enako kot vi, vendar mnogi lahko sprejmejo in sledijo vašim vrednotam, če so jasno izražene. Tako je iz meril ocenjevanja takoj jasno, da so na tej stopnji najpomembnejše veščine

  • TDD;
  • Sposobnost uporabe OOP in pisanja vzdržljive kode;
  • sposobnosti programiranja v paru

Tako sem bil opozorjen, naj te 1.5 ure porabim za razmišljanje o tem, kako bom opravil nalogo, namesto za pisanje kode. Kodo bomo napisali skupaj.

Ko smo se pogovarjali po telefonu, so nam fantje na kratko povedali, kdo so in kaj delajo ter ponudili, da se lotimo razvoja.

Med celotnim intervjujem niti enkrat nisem imela občutka, da me intervjuvajo. Obstaja občutek, da kodo razvijate v skupini. Če se kje zatakne, pomagajo, svetujejo, razpravljajo, se tudi prepirajo med seboj, kako bi bilo najbolje. Na razgovoru sem pozabil, kako v JUnit 5 preveriti, ali metoda vrže Exception - ponudili so mi, da nadaljujem s pisanjem testa, medtem ko je eden guglal, kako se to naredi.

Dobesedno nekaj ur po intervjuju sem prejel konstruktivne povratne informacije - kaj mi je bilo všeč in kaj ne. V mojem primeru so me pohvalili, ker sem uporabil razrede Sealed kot alternativo ničelnemu objektu; za to, da sem pred pisanjem kode v psevdokodi napisal, kako bi rad krmilil rover in tako dobil skico razredov, vsaj tistih, ki so vključeni v robotov API.

2. korak: Povejte nam

Teden dni pred intervjujem so me prosili, da pripravim predstavitev na katero koli temo, ki me zanima. Format je preprost in poznan: 15 minut predstavitev, 15 minut odgovarjanje na vprašanja.
Izbral sem Čisto arhitekturo strica Boba. In spet me je intervjuvalo nekaj ljudi. To je bila moja prva izkušnja s predstavitvijo v angleščini in morda, če bi bila v stresni situaciji, ne bi zdržala. Ampak spet, nikoli nisem imela občutka, da sem na razgovoru. Vse je kot običajno - jim povem, pozorno poslušajo. Tudi tradicionalna seja vprašanj in odgovorov ni bila podobna intervjuju; jasno je bilo, da vprašanja niso bila zastavljena zato, da bi »potonila«, ampak tista, ki so jih v moji predstavitvi resnično zanimala.

Nekaj ​​ur po intervjuju sem prejel povratno informacijo – predstavitev je bila zelo koristna in resnično so uživali ob poslušanju.

Faza 3. Kodeks kakovosti proizvodnje

Po opozorilu, da je to zadnja stopnja tehničnih razgovorov, so me prosili, naj kodo doma pripeljem v stanje, pripravljeno za produkcijo, nato pošljem kodo v pregled in načrtujem razgovore, na katerih se bodo zahteve za nalogo spremenile in koda zahtevati spremembo. Če pogledam naprej, lahko rečem, da pregled kode poteka na slepo, pregledovalci ne poznajo delovnega mesta, za katerega se kandidat prijavlja, ne vidijo njegovega življenjepisa, ne vidijo niti njegovega imena.

Zazvonil je telefon in spet je bilo nekaj fantov na drugi strani monitorja. Vse je enako kot na prvem intervjuju: glavna stvar je, da ne pozabite na TDD, povejte, kaj počnete in zakaj. Če še niste prakticirali TDD, vam priporočam, da ga začnete izvajati takoj, ne zato, ker je to nujno v podjetjih, ampak zato, ker vam bistveno poenostavi življenje, zmanjša raven stresa, če želite. Se spomnite, kako ste morali z razhroščevalnikom mrzlično iskati napako, ki jo je mogoče reproducirati samo prek brskalnika, ne morete pa je reproducirati s testi? Zdaj pa si predstavljajte, da boste morali takšno napako ujeti med intervjujem - nekaj sivih las vam je zagotovljenih. Kaj dobimo s TDD? Spremenili smo kodo in nepričakovano ugotovili, da so zdaj testi rdeči, toda kakšna je napaka, ki je ne moremo ugotoviti prvič? V redu, anketarjem rečemo "Ojoj", pritisnemo Ctrl-Z in začnemo z majhnimi koraki naprej. In ja, v sebi morate razviti sposobnost razvoja z uporabo TDD, sposobnost iti proti cilju, da bodo vaši testi trajno zeleni in ne rdeči pol dneva, ker "imate veliko refactoringa." To je popolnoma enaka veščina kot pisanje kode, ki jo je mogoče vzdrževati, ali pisanje produktivne kode.

Torej, kako dobro je mogoče spremeniti vašo kodo, je odvisno od tega, kakšno zasnovo imate v mislih na začetku, kako preprosta je in kako dobri so vaši testi.

Po razgovoru sem v nekaj urah prejel povratno informacijo. Na tej stopnji sem ugotovil, da sem že skoraj končal in da je ostalo zelo malo, dokler nisem »srečal Fowlerja«.

Faza 4. Končna. Dovolj tehničnih vprašanj. Želimo vedeti, kdo ste!

Če sem iskren, me je ta formulacija vprašanja nekoliko zmedla. Kako v eni uri pogovora razumeti, kakšen človek sem? In še bolj, kako to razumeti, ko pa govorim jezik, ki ni moj materni in, odkrito povedano, zelo zanič in jezikosloven. V prejšnjih intervjujih je bilo zame osebno lažje govoriti kot odgovarjati na vprašanja, kriv je bil naglas. Vsaj eden od spraševalcev je bil Azijec – in njihov naglas, no, recimo samo, je nekoliko specifičen za evropsko uho. Zato sem se odločila za proaktiven pristop – pripravim predstavitev o sebi in na začetku razgovora ponudim, da s to predstavitvijo spregovorim o sebi. Če se bodo strinjali, bo zame vsaj manj vprašanj, če bodo zavrnili ponudbo, no, 3 ure mojega življenja, porabljenega za predstavitev, niso tako visoka cena. Toda kaj bi morali napisati v svoji predstavitvi? Biografija - Takrat rojen tam, hodil v šolo, diplomiral na univerzi - a koga briga?

Če poguglate malo o kulturi Thoughtworks, boste našli članek Martina Fowlerja [https://martinfowler.com/bliki/ThreePillars.html], ki opisuje 3 stebre: trajnostno poslovanje, odličnost programske opreme in socialno pravičnost.

Predpostavimo, da je bila programska odličnost zame že preverjena. Treba je še pokazati trajnostno poslovanje in socialno pravičnost.

Poleg tega sem se odločil, da se osredotočim na slednje.

Za začetek sem mu povedal, zakaj ThoughtWorks – na fakulteti sem bral blog Martina Fowlerja, od tod tudi moja ljubezen do čiste kode.

Projekte je mogoče predstaviti tudi z različnih zornih kotov. Razvil je tudi programsko opremo za medicino, ki je bolnikom poenostavila življenja in po govoricah celo rešila eno življenje. Razvil sem tudi programsko opremo za banke, ki je olajšala življenje tudi državljanom. Še posebej, če to banko uporablja 70% prebivalstva države. Ne gre za Sberbank in niti za Rusijo.

Želite vedeti o meni? V REDU. Moj hobi je fotografija, tako ali drugače držim fotoaparat v rokah kakšnih 10 let, obstajajo fotografije, ki mi jih ni preveč nerodno pokazati. Enkrat sem pomagala tudi mačjemu zavetišču: fotografirala sem mačke, ki so potrebovale stalni dom. In z dobrimi fotografijami je veliko lažje postaviti mačko. Najbrž sem slikal sto mačk :)

Na koncu je bilo 80% moje predstavitve zapolnjenih z mačkami.

Takoj po predstavitvi mi je kadrovik napisal, da še ne pozna rezultatov razgovora, je pa že cela pisarna navdušena nad mačkami.

Na koncu sem čakal na povratne informacije – zadovoljil sem vse kot osebe.

Toda med zadnjim pogovorom je HR taktno rekel, da je socialna pravičnost zelo dobra in potrebna, vendar niso vsi projekti takšni. In vprašal me je, če me je strah. Na splošno sem malo pretiraval s socialno pravičnostjo, se zgodi :)

Skupaj

Kot rezultat, že nekaj mesecev delam v Singapurju pri Thoughtworks, vidim, da tukaj preveč podjetij prevzema »najboljše prakse intervjujev« od Googla, uporabljajo liste in tablo za kodiranje, kljub dejstvu, da imajo več znanja kot Spring , Symfony, RubyOnRails ( Podčrtaj, kar je potrebno) ni potrebno pri delu. Inženirji si pred razgovorom vzamejo teden dni dopusta, da se "pripravijo".

Pri Thoughtworks so poleg ustreznih zahtev do kandidata v ospredju naslednja načela:
Veselje do intervjuja. Še več, za obe strani. Res, če hočeš dobiti najboljše kadre (kdo pa ne?), potem razgovor ni tržnica, kjer se izbirajo sužnji, ampak predstava, kjer se ocenjujeta delodajalec in kandidat. In če kandidat s podjetjem povezuje prijetna čustva, je verjetno, da bo izbral prav to podjetje

Več anketarjev za ublažitev pristranskosti. Pri Thoughtworks je programiranje v parih de facto standard. In če je to prakso mogoče uporabiti na drugih področjih, TW to poskuša storiti. Na vsaki stopnji intervju vodita 2 osebi. Tako vsako osebo ocenjuje vsaj 8 ljudi, TW pa poskuša izbrati anketarje z različnimi ozadji, različnimi usmeritvami (ne samo tehniki) in spolom.

Na koncu bo odločitev o zaposlitvi sprejeta na podlagi mnenj vsaj 8 ljudi in nihče nima odločilnega glasu.

Zaposlovanje na podlagi lastnosti Namesto sprejemanja odločitve na podlagi kandidatovih všečnosti ali nevšečnosti se za vsako vlogo in vsako stopnjo razvije obrazec, ki vključuje lastnosti, ki se ocenjujejo. Hkrati je zelo priporočljivo, da pri ocenjevanju ne ocenjujete izkušenj z določeno veščino, temveč sposobnost njene uporabe. Torej, če kandidat ni znal uporabiti nobenih veščin, kot je TDD, pa jih kljub temu poskuša uporabiti, posluša nasvete, kako jih pravilno uporabiti, ima vse možnosti, da opravi razgovor.

Potrdila o izobraževanju niso potrebna TW ne zahteva nobenega certifikata ali izobrazbe iz računalništva. Ocenjuje se samo znanje.

To je moj prvi razgovor s tujimi podjetji, na katerega se mi ni bilo treba pripravljati. Po vsaki stopnji se nisem počutil izčrpanega, ampak ravno nasprotno, bil sem vesel, da lahko uporabim najboljše prakse, da ljudje na drugi strani monitorja to cenijo in uporabljajo vsak dan.

Po nekaj mesecih lahko rečem, da so se moja pričakovanja popolnoma izpolnila. Kako se ThoughtWorks razlikuje od navadnega podjetja? V navadnem podjetju lahko najdeš dobre razvijalce in prijetne ljudi, v TW pa je njihova koncentracija izven lestvic.

Če se želite pridružiti ThoughtWorks, si lahko ogledate naša odprta delovna mesta tukaj
Predlagam tudi, da ste pozorni na zanimiva prosta delovna mesta:
Vodilni programski inženir: Nemčiji, London, Madrid, Slovenija
Višji programski inženir: Sydney, Nemčiji, Manchester, Bangkok
Programski inženir: Sydney, Barcelona, Milan
Višji podatkovni inženir: Milan
Analitik kakovosti: Nemčiji Kitajsko
Infrastruktura: Nemčiji, London, Chile
(Pošteno vas želim opozoriti, da je povezava napotitvena, če greste na TW, bom prejel lep bonus). Izberite pisarno, ki vam je všeč, ni vam treba biti omejen na Evropo, navsezadnje vas bo TW vsaki 2 leti z veseljem preselil v drugo državo, ker... to je del politike ThoughtWorks, zato se kultura širi in homogenizira.

V komentarjih lahko postavljate vprašanja ali me prosite za priporočila.
Če se bo tema zdela zanimiva, bom pisal o tem, kako je delati v ThoughtWorks in kakšno je življenje v Singapurju.

Vir: www.habr.com

Dodaj komentar