Kaip aš patekau į ThoughtWorks arba pavyzdinį interviu

Kaip aš patekau į ThoughtWorks arba pavyzdinį interviu

Ar jums neatrodo keista, kad kai ruošiatės keisti darbą ir iškyla poreikis praeiti pokalbį, pirmiausia pagalvojate, kad „reikia pasiruošti pokalbiui“. Išspręskite „HackerRank“ problemas, perskaitykite Kodavimo interviu, įsiminkite, kaip veikia „ArrayList“ ir kuo jis skiriasi nuo „LinkedList“. O taip, jie taip pat gali paklausti apie rūšiavimą, ir būtų neprofesionalu sakyti, kad greitas rūšiavimas greičiausiai būtų geriausias pasirinkimas.
Bet palauk, tu programuoji 8 valandas per dieną, spręsi įdomias ir nereikšmingas problemas, o naujame darbe darysi tą patį, plius ar minus. Bet vis dėlto, norint išlaikyti pokalbį, reikia kažkaip papildomai pasiruošti, net ne tobulinti savo kasdienių įgūdžių, o išmokti tai, ko dabartiniame darbe neprireikė ir vargu ar prireiks kitame. Į jūsų prieštaravimus, kad informatika yra mūsų kraujyje, o jei pažadinsite mus vidury nakties, mes privalome užmerktomis akimis ant pagalvės užvalkalo parašyti pasivaikščiojimą medžio plotyje net neatgavus sąmonės, aš atsakys, kad jei aš įsidarbinsiu cirke, o mano pagrindinis dalykas, triukas būtų būtent toks - tada galbūt taip, sutinku. Šį įgūdį reikia išbandyti.

Bet kam tikrinti įgūdžius, kurie nėra svarbūs jūsų dabartiniam darbui? Tik todėl, kad tapo madinga? Nes „Google“ tai daro? Arba todėl, kad jūsų būsimasis komandos vadovas turėjo išmokti visus rūšiavimo metodus prieš pokalbį ir dabar jis mano, kad „kiekvienas geras programuotojas turi mintinai žinoti palindromo paieškos eilutėje įgyvendinimą“.

Na, jūs nesate „Google“ (c). Ką „Google“ gali sau leisti, paprastos įmonės negali. „Google“, išanalizavusi savo darbuotojų duomenis, padarė išvadą, kad olimpiadų išsilavinimą turintys inžinieriai puikiai susidoroja su specifinėmis užduotimis. Be to, kurdami savo atrankos procesą, jie gali sau leisti rizikuoti, kad gali nepasamdyti kelių gerų inžinierių, nes negali lengvai išspręsti matematikos problemų. Bet tai jiems ne problema, norinčių dirbti Google yra daug, pareigybė bus uždaryta.
Dabar pažiūrėkime pro langą ir jei priešais jūsų biurą norintys dirbti inžinieriai dar neįrengė palapinių stovyklos, o jūsų kūrėjai dažniau ieško stackoverflow, ką reikia įdiegti kito pavasario anotaciją, o ne reitingavimo algoritmų sudėtingumas, matyt, laikas pagalvoti, ar nereikėtų kopijuoti Google.

Na, o jei šį kartą Google nepavyko ir nepateikė atsakymo, ką daryti? Patikrinkite, ką tiksliai kūrėjas veiks darbe. Ką vertinate kūrėjuose?
Nustatykite kriterijus, kuriuos norite samdyti, ir sukurkite testus, kurie patikrintų būtent šiuos įgūdžius.

Minties darbai

Ką su tuo turi ThoughtWorks? Čia radau pavyzdinio interviu pavyzdį sau. Kas yra ThoughtWorks? Trumpai tariant, tai aukščiausios klasės konsultacinė įmonė, turinti biurus visame pasaulyje, nuo Kinijos, Singapūro iki Amerikos žemynų, jau apie 25 metus konsultuojanti plėtros srityje, turinti savo Mokslo padalinį, kuriam vadovauja Martinas. Fowleris. Jei ieškote 10 knygų, kurias privalo perskaityti programinės įrangos inžinierius, sąrašo, galbūt 2–3 iš jų parašys ThoughtWorks vaikinai, pvz., Martino Fowlerio „Refactoring“ ir „Building Microservices: Designing Fine-Grained Systems by Sam“ Newman arba Building Evolutionary Architectures
Patrickas Kua, Rebecca Parsons, Nealas Fordas.

Įmonės verslas remiasi gana brangių paslaugų teikimu, tačiau klientas moka už fenomenalią kokybę, kurią sudaro kompetencija, vidiniai standartai ir, žinoma, žmonės. Todėl čia labai svarbu samdyti tinkamus žmones.
Kokie žmonės teisūs? Žinoma, kiekvienam yra skirtingų. „ThoughtWorks“ nustatė, kad svarbiausi jų kūrėjo verslo modelio kriterijai yra šie:

  • Gebėjimas vystytis poromis. Tai gebėjimai, o ne patirtis ar įgūdžiai. Niekas nesitiki, kad ateis žmonės, kurie jau 5 metus praktikuoja porinį programavimą, tačiau būti imliems kitų žmonių nuomonei ir mokėti išklausyti yra būtinas įgūdis.
  • Gebėjimas rašyti testus ir idealiai praktikuoti TDD
  • Suprasti SOLID ir OOP ir mokėti juos taikyti.
  • Pateikite savo nuomonę. Kaip konsultantas turi dirbti su kliento kūrėjais, su kitais konsultantais ir nėra didelės naudos, jei žmogus moka ką nors gerai padaryti, bet visiškai nesugeba to perteikti likusiai komandai.

Dabar svarbu įvertinti šiuos konkrečius kandidato įgūdžius. Ir čia noriu pakalbėti apie savo patirtį interviu ThoughtWorks. Iš karto pasakysiu, kad nuvažiavau į Singapūrą ir išlaikiau, tačiau įdarbinimo procesas yra vieningas ir labai nesiskirs įvairiose šalyse.

0 etapas. HR

Kaip dažnai nutinka, 20 minučių interviu su HR. Prie to nesigilinsiu, tik pasakysiu, kad nesutikau HR žmogaus, kuris galėtų 15 minučių kalbėti apie plėtros kultūrą įmonėje, kodėl jie naudoja TDD, kodėl porinis programavimas. Paprastai personalo darbuotojai nutyla šiuo klausimu ir sako, kad jų procesas yra normalus: kūrėjai kuria, testuotojai testuoja, vadovai vairuoja.

1 etapas. Ar jums sekasi OOP, TDD?

Likus 1.5 valandos iki pokalbio pradžios, man buvo išsiųsta užduotis pagaminti Mars Rover simuliatorių.

Marsaeigio misijaNASA turi išlaipinti Marso plynaukštėje robotų marsaeigių būrį. Šį keistai stačiakampį plokščiakalnį turi naršyti marsaeigiai, kad jų kameros galėtų matyti visą aplinkinį reljefą ir išsiųsti atgal į Žemę. Marsaeigio padėtis ir vieta vaizduojama x ir y koordinačių ir raidės, žyminčios vieną iš keturių pagrindinių kompaso taškų, derinys. Plokščiakalnis yra padalintas į tinklelį, kad būtų supaprastinta navigacija. Padėties pavyzdys gali būti 0, 0, N, o tai reiškia, kad roveris yra apatiniame kairiajame kampe ir atsuktas į šiaurę. Siekdama valdyti marsaeigį, NASA siunčia paprastą raidžių eilutę. Galimos raidės yra „L“, „R“ ir „M“. „L“ ir „R“ priverčia marsaeigį pasisukti atitinkamai 90 laipsnių į kairę arba į dešinę, nejudėdamas iš dabartinės vietos. „M“ reiškia judėti vienu tinklelio tašku į priekį ir išlaikyti tą pačią antraštę.
Tarkime, kad kvadratas tiesiai į šiaurę nuo (x, y) yra (x, y+1).
INPUT:
Pirmoji įvesties eilutė yra plokščiakalnio viršutinės dešinės koordinatės, o apatinės kairiosios koordinatės yra 0,0.
Likusi įvesties dalis yra informacija, susijusi su dislokuotais roveriais. Kiekvienas roveris turi dvi įvesties eilutes. Pirmoje eilutėje nurodoma marsaeigio padėtis, o antroje eilutėje yra nurodymų, nurodančių, kaip tyrinėti plynaukštę. Padėtį sudaro du sveikieji skaičiai ir tarpais atskirtos raidės, atitinkančios x ir y koordinates bei marsaeigio orientaciją.
Kiekvienas marsaeigis bus baigtas nuosekliai, o tai reiškia, kad antrasis marsaeigis nepradės judėti, kol pirmasis nepabaigs judėti.
IŠĖJIMAS:
Kiekvieno roverio išvestis turėtų būti jo galutinės koordinatės ir antraštė.
PASTABOS:
Tiesiog įgyvendinkite aukščiau nurodytus reikalavimus ir įrodykite, kad dulkių siurblys veikia, parašydami jo testus.
Bet kokios formos vartotojo sąsajos kūrimas nepatenka.
Pirmenybė bus teikiama problemos sprendimui taikant TDD (bandoma plėtra) metodą.
Per trumpą laiką mums labiau rūpi kokybė nei išsamumas.
*Negaliu paskelbti man atsiųstos užduoties, tai sena užduotis, duota prieš keletą metų. Bet patikėkite manimi, iš esmės viskas lieka taip pat.

Ypač norėčiau atkreipti dėmesį į vertinimo kriterijus. Kiek kartų teko susidurti su situacija, kai audito metu kandidatui svarbūs dalykai yra visiškai nesvarbūs ir atvirkščiai. Ne visi mąsto taip pat kaip jūs, tačiau daugelis gali priimti jūsų vertybes ir jomis vadovautis, jei jos aiškiai išdėstytos. Taigi iš vertinimo kriterijų iš karto aišku, kad šiame etape svarbiausi įgūdžiai yra

  • TDD;
  • Gebėjimas naudoti OOP ir rašyti prižiūrimą kodą;
  • porinio programavimo gebėjimai

Taigi, buvau įspėtas, kad tas 1.5 valandos galvočiau, kaip atliksiu užduotį, o ne rašyčiau kodą. Kodą parašysime kartu.

Kai susisiekėme su telefonu, vaikinai trumpai papasakojo, kas jie tokie ir ką veikia bei pasiūlė pradėti kurti.

Viso interviu metu nė karto nepajutau, kad esu apklausiamas. Kyla jausmas, kad kodą kuriate komandoje. Jei kur nors užstringi, padeda, pataria, diskutuoja, net ginčijasi tarpusavyje, kaip geriausia tai padaryti. Interviu metu pamiršau, kaip patikrinti JUnit 5, kad metodas meta išimtį - jie pasiūlė toliau rašyti testą, o vienas iš jų googlino, kaip tai padaryti.

Žodžiu, praėjus kelioms valandoms po interviu, sulaukiau konstruktyvių atsiliepimų – kas man patiko, o kas ne. Mano atveju buvau pagirtas už tai, kad naudojau Sealed klases kaip alternatyvą nuliniam objektui; už tai, kad prieš rašydamas kodą pseudokodu parašiau kaip norėčiau valdyti roverį ir taip gavau klasių eskizą, bent jau tų, kurios dalyvauja roboto API.

2 veiksmas: pasakykite mums

Likus savaitei iki pokalbio, manęs paprašė paruošti pristatymą bet kokia mane dominančia tema. Formatas paprastas ir pažįstamas: 15 minučių pristatymas, 15 minučių atsakymas į klausimus.
Pasirinkau dėdės Bobo švarią architektūrą. Ir vėl mane apklausė pora žmonių. Tai buvo mano pirmoji pristatymo anglų kalba patirtis ir, galbūt, jei būčiau atsidūręs stresinėje situacijoje, nebūčiau galėjęs susitvarkyti. Bet vėlgi, aš niekada neturėjau jausmo, kad dalyvaučiau interviu. Viskas kaip įprasta – sakau jiems, jie atidžiai klauso. Net tradicinė klausimų ir atsakymų sesija buvo ne kaip interviu, buvo aišku, kad klausimai buvo užduodami ne „paskęsti“, o tie, kurie juos tikrai domina mano pristatyme.

Praėjus porai valandų po interviu sulaukiau atsiliepimų – pristatymas buvo labai naudingas ir jiems tikrai patiko klausytis.

3 etapas. Gamybos kokybės kodas

Įspėjus, kad tai paskutinis techninių pokalbių etapas, manęs paprašė atnešti kodą namuose į paruoštą gamybai, tada nusiųsti kodą peržiūrai ir suplanuoti pokalbius, kurių metu pasikeis užduoties reikalavimai ir kodas pasikeis. reikalauti modifikavimo. Žvelgiant į priekį galiu pasakyti, kad kodo peržiūra vykdoma aklai, recenzentai nežino, į kokias pareigas kandidatas pretenduoja, nemato jo CV, nemato net vardo.

Suskambo telefonas, o kitoje monitoriaus pusėje vėl buvo pora vaikinų. Viskas taip pat, kaip ir per pirmąjį pokalbį: svarbiausia nepamiršti TDD, papasakoti, ką darai ir kodėl. Jei anksčiau nepraktikavote TDD, tai rekomenduoju pradėti tuojau pat ne todėl, kad tai būtina įmonėse, o todėl, kad tai žymiai supaprastina jūsų gyvenimą, sumažina streso lygį, jei norite. Prisiminkite, kaip turėjote įnirtingai ieškoti klaidos su derintuvu, kurią galima atkurti tik per naršyklę, bet negalite jos atkurti naudojant testus? Dabar įsivaizduokite, kad per pokalbį teks pagauti tokią klaidą – pora žilų plaukų jums garantuota. Ką mes gauname su TDD? Pakeitėme kodą ir netikėtai supratome, kad dabar testai raudoni, bet kokios klaidos negalime išsiaiškinti pirmą kartą? Gerai, mes sakome pašnekovams „Oi“, paspaudžiame Ctrl-Z ir pradedame žengti mažais žingsneliais į priekį. Ir taip, jūs turite išsiugdyti gebėjimą tobulėti naudojant TDD savyje, gebėjimą eiti tikslo link, kad jūsų testai visą dieną būtų žali, o ne raudoni pusę dienos, nes „turite daug persitvarkymo“. Tai lygiai toks pat įgūdis, kaip rašyti prižiūrimą kodą arba rašyti produktyvų kodą.

Taigi, kaip gerai bus galima pakeisti kodą, priklauso nuo to, kokį dizainą turite omenyje, koks jis paprastas ir kokie geri jūsų testai.

Po pokalbio per kelias valandas gavau atsiliepimą. Šiame etape supratau, kad jau beveik baigiau ir liko labai nedaug iki „susipažinau su Fowleriu“.

4 etapas. Finalas. Užteks techninių klausimų. Mes norime žinoti, kas tu esi!

Tiesą sakant, mane šiek tiek suglumino tokia klausimo formuluotė. Kaip suprasti, koks aš esu žmogus per vieną pokalbio valandą? Ir juo labiau, kaip jūs galite tai suprasti, kai aš kalbu ne mano gimtoji kalba, o atvirai kalbant, labai niūriai ir liežuviais. Ankstesniuose interviu man asmeniškai buvo lengviau kalbėti, o ne atsakyti į klausimus, o kaltas buvo akcentas. Bent vienas pašnekovas buvo azijietis – ir jų akcentas, na, sakykime, europietiškai ausiai kažkiek būdingas. Todėl nusprendžiau imtis iniciatyvos – paruošti prezentaciją apie save ir interviu pradžioje pasiūlyti pakalbėti apie save šiuo pristatymu. Jei sutiks, tai bent jau man klausimų bus mažiau, jei pasiūlymą atmes, na, 3 mano gyvenimo valandos prezentacijai nėra tokia didelė kaina. Bet ką turėtumėte parašyti savo pristatyme? Biografija - Gimė ten, tuo metu, lankė mokyklą, baigė universitetą - bet kam tai rūpi?

Jei šiek tiek paieškote Google apie Thoughtworks kultūrą, rasite Martino Fowlerio straipsnį [https://martinfowler.com/bliki/ThreePillars.html], kuriame aprašomi 3 ramsčiai: tvarus verslas, programinės įrangos tobulumas ir socialinis teisingumas.

Tarkime, kad „Software Excellence“ jau buvo patikrintas. Belieka parodyti tvarų verslą ir socialinį teisingumą.

Be to, nusprendžiau sutelkti dėmesį į pastarąjį.

Pirmiausia aš jam pasakiau, kodėl „ThoughtWorks“ – dar koledže skaičiau Martino Fowlerio tinklaraštį, todėl man patinka „Clean Code“.

Projektai taip pat gali būti pateikiami įvairiais kampais. Jis taip pat sukūrė programinę įrangą medicinai, kuri supaprastino pacientų gyvenimą ir, pasak gandų, netgi išgelbėjo vieną gyvybę. Taip pat sukūriau programinę įrangą bankams, kuri taip pat palengvino piliečių gyvenimą. Ypač jei šiuo banku naudojasi 70% šalies gyventojų. Tai ne apie „Sberbank“ ir net ne apie Rusiją.

Nori sužinoti apie mane? GERAI. Mano pomėgis yra fotografija, vienaip ar kitaip fotoaparatą rankose laikau apie 10 metų, yra nuotraukų, kurias man nelabai gėda rodyti. Be to, vienu metu padėjau kačių prieglaudai: fotografavau kates, kurioms reikėjo nuolatinių namų. O su geromis nuotraukomis katę pastatyti daug lengviau. Nufotografavau turbūt šimtą kačių :)

Galų gale 80% mano pristatymo buvo užpildyta katėmis.

Iš karto po pristatymo HR man parašė, kad pokalbio rezultatų dar nežino, bet visas biuras jau buvo sužavėtas katėmis.

Galiausiai laukiau atsiliepimų – visus patenkinau kaip asmenybę.

Tačiau baigiamojo pokalbio metu HR taktiškai pasakė, kad socialinis teisingumas yra labai geras ir reikalingas, tačiau ne visi projektai tokie. Ir jis paklausė, ar tai manęs negąsdina. Apskritai aš šiek tiek persistengiau su socialiniu teisingumu, taip būna :)

Visas

Todėl jau keletą mėnesių dirbu Singapūre, įmonėje „Thoughtworks“ ir matau, kad čia per daug įmonių taiko „geriausią interviu praktiką“ iš „Google“, naudodamos lapus ir „Whiteboard“ kodavimui, nors turi daugiau žinių nei „Spring“, Symfony, RubyOnRails (pabraukite, kas būtina) darbe nereikalingi. Prieš pokalbį inžinieriai pasidaro savaitės pertrauką, kad „pasiruoštų“.

„Thoughtworks“ be tinkamų reikalavimų kandidatui, svarbiausi yra šie principai:
Interviu džiaugsmas. Be to, abiem pusėms. Išties, jei nori gauti geriausius darbuotojus (o kas ne?), tai pokalbis yra ne turgus, kuriame renkami vergai, o laida, kurioje vienas kitą vertina ir darbdavys, ir kandidatas. O jei kandidatas malonias emocijas sieja su įmone, tikėtina, kad jis pasirinks būtent šią įmonę

Keli pašnekovai, kad sumažintų šališkumą. „Thoughtworks“ porinis programavimas yra de facto standartas. Ir jei ši praktika gali būti pritaikyta kitose srityse, TW bando tai padaryti. Kiekviename etape pokalbį atlieka 2 žmonės. Taigi kiekvieną žmogų vertina ne mažiau kaip 8 žmonės, o TW stengiasi atrinkti skirtingo išsilavinimo, skirtingų krypčių (ne tik technikų) ir lyties pašnekovus.

Galiausiai sprendimas dėl įdarbinimo bus priimtas remiantis ne mažiau kaip 8 žmonių nuomonėmis ir niekas neturi lemiamo balso.

Įdarbinimas pagal atributus Užuot priėmus sprendimą pagal kandidato simpatijas ar antipatijas, kiekvienam vaidmeniui ir kiekvienam etapui sukuriama forma, apimanti vertinamas savybes. Kartu vertinant labai rekomenduojama vertinti ne tam tikro įgūdžio patirtį, o gebėjimą jį pritaikyti. Taigi, jei kandidatas nesugebėjo pritaikyti jokių įgūdžių, pavyzdžiui, TDD, bet vis dėlto stengiasi juos pritaikyti, klauso patarimų, kaip teisingai juos panaudoti, jis turi visas galimybes išlaikyti pokalbį.

Išsilavinimo pažymėjimai nebūtini TW nereikalauja jokio sertifikavimo ar informatikos išsilavinimo. Vertinami tik įgūdžiai.

Tai pirmas mano vestas interviu su užsienio kompanijomis, kuriam nereikėjo ruoštis. Po kiekvieno etapo nesijaučiau išsekęs, o priešingai – džiaugiausi, kad galiu pritaikyti geriausią praktiką, kad žmonės kitoje monitoriaus pusėje tai įvertino ir taiko kasdien.

Po kelių mėnesių galiu pasakyti, kad mano lūkesčiai buvo visiškai patenkinti. Kuo ThoughtWorks skiriasi nuo įprastos įmonės? Įprastoje kompanijoje galite rasti gerų kūrėjų ir malonių žmonių, tačiau TW jų koncentracija yra iškritusi iš sąrašų.

Jei jus domina prisijungti prie „ThoughtWorks“, galite peržiūrėti mūsų laisvas pozicijas čia
Taip pat siūlau atkreipti dėmesį į įdomias laisvas darbo vietas:
Vadovaujantis programinės įrangos inžinierius: Vokietija, Londonas, Madridas, Singapūras
Vyresnysis programinės įrangos inžinierius: Sidnėjus, Vokietija, Mančesteris, Bankokas
Programinės įrangos inžinierius: Sidnėjus, Barselona, Milanas
Vyresnysis duomenų inžinierius: Milanas
Kokybės analitikas: Vokietija Kinija
Infrastruktūra: Vokietija, Londonas, Čilė
(norėčiau nuoširdžiai perspėti, kad nuoroda yra nukreipimo nuoroda, jei eisite į TW, gausiu gražią premiją). Pasirinkite biurą, kuris jums patinka, jums nereikia apsiriboti tik Europa, juk kas 2 metus TW mielai perkels jus į kitą šalį, nes... Tai yra „ThoughtWorks“ politikos dalis, todėl kultūra skleidžiama ir homogenizuojama.

Nedvejodami užduokite klausimus komentaruose arba paprašykite manęs rekomendacijų.
Jei tema pasirodys įdomi, parašysiu apie tai, ką reiškia dirbti ThoughtWorks ir koks gyvenimas Singapūre.

Šaltinis: www.habr.com

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster