Kuidas ma ThoughtWorksi või näidisintervjuusse sattusin

Kuidas ma ThoughtWorksi või näidisintervjuusse sattusin

Kas teile ei tundu kummaline, et kui olete töökohta vahetamas ja tekib vajadus intervjuule pääseda, siis esimese asjana mõtlete, et "peate intervjuuks valmistuma". Lahendage HackerRanki probleeme, lugege lahti kodeerimisintervjuu, jätke meelde, kuidas ArrayList töötab ja kuidas see LinkedListist erineb. Oh jah, nad võivad küsida ka sorteerimise kohta ja ilmselgelt oleks ebaprofessionaalne väita, et kiirsorteerimine oleks tõenäoliselt parim valik.
Aga oota, sa programmeerid 8 tundi päevas, lahendad huvitavaid ja mittetriviaalseid ülesandeid ning uuel töökohal teed sama asja, pluss või miinus. Kuid sellest hoolimata peate intervjuu läbimiseks kuidagi täiendavalt valmistuma, isegi mitte lihvima oma igapäevaseid oskusi, vaid õppima midagi, mida te praegusel töökohal ei vajanud ja tõenäoliselt ei vaja ka järgmisel. Teie vastuväidetele, et arvutiteadus on meil veres ja kui te meid keset ööd üles äratate, oleme kohustatud kirjutama suletud silmadega padjapüürile jalutuskäigu ümber puu laiuse isegi teadvusele tulemata, vastan, et kui ma tsirkuses tööle saan ja minu põhiline nipp oleks just see - siis võib-olla jah, olen nõus. See oskus tuleb proovile panna.

Miks aga testida oskusi, mis ei ole sinu praeguse töö jaoks olulised? Lihtsalt sellepärast, et see sai moes? Sest Google teeb seda? Või sellepärast, et teie tulevane meeskonnajuht pidi enne intervjuud kõik sorteerimismeetodid selgeks õppima ja nüüd usub ta, et "iga hea programmeerija peab peast teadma stringist palindroomi leidmise rakendamist."

Noh, sa ei ole Google (c). Mida Google saab endale lubada, seda tavalised ettevõtted ei saa. Google jõudis oma töötajate andmeid analüüsides järeldusele, et olümpiaaditaustaga insenerid saavad tema spetsiifiliste ülesannetega hästi hakkama. Lisaks saavad nad oma valikuprotsessi kavandades endale lubada riski, et nad ei pruugi palgata mõnda head inseneri, kuna nad ei suuda matemaatikaprobleeme kergesti lahendada. Aga see pole nende jaoks probleem, Google’sse tööle soovijaid on palju, koht suletakse.
Vaatame nüüd aknast välja ja kui teie kontori ees pole teie heaks töötada soovivad insenerid veel telklaagrit püsti pannud ja teie arendajad otsivad sagedamini stackoverflow kaudu, mida järgmise kevadise annotatsiooni installimiseks on vaja, järjestamisalgoritmide keerukuse asemel, siis ilmselt on teil aeg mõelda, kas peaksite Google'i kopeerima.

Noh, kui seekord Google ebaõnnestus ega andnud vastust, mida peaksite tegema? Kontrollige täpselt, mida arendaja tööl teeb. Mida hindate arendajate juures?
Määrake kriteeriumid, keda soovite palgata, ja töötage välja testid, mis testivad täpselt neid oskusi.

Mõttetööd

Mis on ThoughtWorksil sellega pistmist? Siit leidsin enda jaoks näidisintervjuu näite. Kes on ThoughtWorks? Ühesõnaga, tegemist on tipptasemel konsultatsioonifirmaga, millel on esindused üle maailma Hiinast, Singapurist kuni Ameerika mandriteni ja mis on arendusvaldkonnas nõustanud umbes 25 aastat ja millel on oma teaduse divisjon, mida juhib Martin. Fowler. Kui otsida nimekirja kümnest tarkvarainsenerile kohustuslikust raamatust, siis võib-olla on 10-2 neist kirjutanud ThoughtWorksi poisid, näiteks Martin Fowleri Refactoring ja Building Microservices: Designing Fine-Grained Systems by Sam. Newman ehk Building Evolutionary Architectures
autor: Patrick Kua, Rebecca Parsons, Neal Ford.

Ettevõtte äri on üles ehitatud üsna kallite teenuste osutamisele, kuid klient maksab fenomenaalse kvaliteedi eest, mis koosneb asjatundlikkusest, sisemistest standarditest ja loomulikult inimestest. Seetõttu on õigete inimeste palkamine siin ülioluline.
Millistel inimestel on õigus? Muidugi on igaühe jaoks erinevaid. ThoughtWorks on kindlaks teinud, et nende arendaja ärimudeli kõige olulisemad kriteeriumid on:

  • Võime areneda paaris. See on võime, mitte kogemus või oskus. Keegi ei oota, et tuleksid inimesed, kes on paarisprogrammeerimisega tegelenud 5 aastat, kuid teiste inimeste arvamuste vastuvõtlikkus ja kuulamisoskus on vajalik oskus.
  • Oskus kirjutada teste ja ideaalis harjutada TDD-d
  • Mõistke SOLID ja OOP ning oskate neid rakendada.
  • Esitage oma arvamus. Konsultandina tuleb teha koostööd kliendi arendajatega, teiste konsultantidega ja sellest pole suurt kasu, kui inimene oskab midagi hästi teha, aga ei suuda seda ülejäänud meeskonnale täiesti edasi anda.

Nüüd on oluline hinnata neid konkreetseid kandidaadi oskusi. Ja siin tahan ma rääkida oma kogemusest ThoughtWorksis intervjueerimisel. Ütlen kohe ära, et käisin Singapuris ja läbisin, aga värbamisprotsess on ühtne ega erine riigiti palju.

Etapp 0. HR

Nagu sageli juhtub, 20-minutiline intervjuu HR-iga. Ma ei hakka sellel pikemalt peatuma, ütlen lihtsalt, et ma pole kunagi kohanud personalitöötajat, kes suudaks 15 minutit rääkida arenduskultuurist ettevõttes, miks nad kasutavad TDD-d, miks paarisprogrammeerimist. Tavaliselt närbuvad personalitöötajad selle küsimuse peale ja ütlevad, et nende protsess on normaalne: arendajad arendavad, testijad testivad, juhid juhivad.

1. etapp. Kui hea sa oled OOPis, TDD?

1.5 tundi enne intervjuu algust saadeti mulle ülesanne teha Mars Roveri simulaator.

Marsi kulguri missioonNASA peab Marsi platool maanduma robotkulgurite rühma. Sellel kummalisel kombel ristkülikukujulisel platool peab kulgurid navigeerima, et nende pardakaamerad saaksid ümbritsevast maastikust täieliku ülevaate, et need Maale tagasi saata. Kulguri asukohta ja asukohta tähistab x- ja y-koordinaatide kombinatsioon ning täht, mis tähistab ühte neljast kompassi põhipunktist. Navigeerimise lihtsustamiseks on platoo jagatud ruudustikuks. Näidisasend võib olla 0, 0, N, mis tähendab, et kulgur on vasakus alanurgas ja on suunatud põhja poole. Kulguri juhtimiseks saadab NASA lihtsa tähejada. Võimalikud tähed on "L", "R" ja "M". "L" ja "R" panevad kulguri pöörlema ​​vastavalt 90 kraadi vasakule või paremale, liikumata praegusest kohast. "M" tähendab ühe ruudustikupunkti võrra edasi liikumist ja sama pealkirja säilitamist.
Oletame, et (x, y)-st otse põhja pool olev ruut on (x, y+1).
SISEND:
Esimesel sisendireal on platoo ülemised parempoolsed koordinaadid, vasakpoolsete alumiste koordinaatide väärtus on 0,0.
Ülejäänud sisend on teave, mis on seotud kasutusele võetud kulguritega. Igal kulguril on kaks sisendirida. Esimene rida annab kulguri asukoha ja teine ​​rida on juhiste jada, mis ütleb kulgurile, kuidas platood uurida. Asukoht koosneb kahest tühikutega eraldatud täisarvust ja tähest, mis vastavad x- ja y-koordinaatidele ning kulguri orientatsioonile.
Iga kulgur valmib järjestikku, mis tähendab, et teine ​​kulgur ei hakka liikuma enne, kui esimene on liikumise lõpetanud.
VÄLJUND:
Iga kulguri väljund peaks olema selle lõplikud koordinaadid ja suund.
MÄRKUSED:
Rakendage lihtsalt ülaltoodud nõuded ja tõestage, et tolmuimeja töötab, kirjutades sellele ühikutestid.
Mis tahes vormis kasutajaliidese loomine on väljaspool rakendust.
Eelistatakse probleemi lahendamist TDD (Test Driven Development) lähenemisviisi järgi.
Olemasoleva lühikese aja jooksul oleme rohkem mures kvaliteedi kui täielikkuse pärast.
*Ma ei saa postitada mulle saadetud ülesannet, see on vana ülesanne, mis anti mitu aastat tagasi. Kuid uskuge mind, põhimõtteliselt jääb kõik samaks.

Eelkõige juhin tähelepanu hindamiskriteeriumidele. Kui palju kordi olete kokku puutunud olukorraga, kus kandidaadi jaoks olulised asjad on auditi käigus täiesti ebaolulised ja vastupidi. Mitte igaüks ei mõtle samamoodi kui sina, kuid paljud võivad aktsepteerida ja järgida teie väärtusi, kui need on selgelt välja öeldud. Seega on hindamiskriteeriumide põhjal kohe selge, et selles etapis on kõige olulisemad oskused

  • TDD;
  • Oskus kasutada OOP-i ja kirjutada hooldatavat koodi;
  • paarisprogrammeerimise oskused

Nii et mind hoiatati, et ma pean need 1.5 tundi koodi kirjutamise asemel mõtlema sellele, kuidas ma seda ülesannet teen. Kirjutame koodi koos.

Telefoni jõudes rääkisid poisid lühidalt, kes nad on ja millega tegelevad ning pakkusid välja, et hakkame arendusega tegelema.

Kogu intervjuu jooksul ei olnud mul kordagi tunnet, et mind intervjueeritakse. On tunne, et arendad koodi meeskonnas. Kui jääd kuhugi toppama, siis aidatakse, nõustatakse, arutatakse, isegi vaieldakse omavahel, kuidas kõige õigem oleks. Intervjuul unustasin ära, kuidas JUnit 5-s kontrollida, et meetod viskab Erandi - nad pakkusid, et jätkavad testi kirjutamist, samal ajal kui üks guugeldas, kuidas seda teha.

Sõna otseses mõttes paar tundi pärast intervjuud sain konstruktiivset tagasisidet – mis mulle meeldis ja mis mitte. Minu puhul kiideti mind Sealed klasside kasutamise eest nullobjekti alternatiivina; selle eest, et enne koodi kirjutamist kirjutasin pseudokoodis, kuidas tahaksin kulgurit juhtida ja sain seega klasside sketši, vähemalt need, mis on seotud roboti API-ga.

2. samm: rääkige meile

Nädal enne intervjuud paluti mul koostada ettekanne igal mind huvitaval teemal. Formaat on lihtne ja tuttav: 15 minutit esitlust, 15 minutit küsimustele vastamist.
Valisin onu Bobi puhta arhitektuuri. Ja jälle intervjueerisid mind paar inimest. See oli minu esimene kogemus inglise keeles esinedes ja võib-olla poleks ma stressisituatsioonis olnud. Kuid jällegi ei olnud mul kordagi tunnet, et olen intervjuul. Kõik on nagu tavaliselt – ma ütlen neile, nad kuulavad hoolega. Isegi traditsiooniline küsimuste-vastuste seanss ei olnud intervjuu moodi, oli selge, et küsimusi ei küsitud mitte „upuda“, vaid neid, mis neid minu esitluses tõeliselt huvitasid.

Paar tundi pärast intervjuud sain tagasisidet – esitlus oli väga kasulik ja kuulamine meeldis neile väga.

3. etapp. Tootmise kvaliteedikood

Olles hoiatanud, et see on tehniliste intervjuude viimane etapp, paluti mul viia kood kodus tootmisvalmis, seejärel saata kood ülevaatamiseks ja ajastada intervjuud, kus ülesande nõuded muutuvad ja kood muutub. nõuda muutmist. Tulevikku vaadates võin öelda, et koodiülevaatus toimub pimesi, retsensendid ei tea ametikohta, millele kandidaat kandideerib, ei näe tema CV-d, ei näe isegi nime.

Telefon helises ja jälle oli paar kutti teisel pool monitori. Kõik on sama, mis esimesel intervjuul: peamine on mitte unustada TDD-d, öelda, mida teete ja miks. Kui sa pole TDD-d varem praktiseerinud, siis soovitan sellega kohe tegelema hakata, mitte sellepärast, et see ettevõtetes vajalik oleks, vaid sellepärast, et see lihtsustab oluliselt sinu elu, vähendab soovi korral stressitaset. Mäletate, kuidas pidite paaniliselt otsima siluriga viga, mida saab reprodutseerida ainult brauseri kaudu, kuid te ei saa seda testidega reprodutseerida? Kujutage nüüd ette, et peate intervjuu ajal sellise vea tabama - paar halli juuksekarva on teile garanteeritud. Mida me TDD-ga saame? Muutsime koodi ja saime ootamatult aru, et nüüd on testid punased, kuid mis on viga, mida me esimesel korral välja ei saa? Olgu, ütleme intervjueerijatele "Oops", vajutame Ctrl-Z ja hakkame väikeste sammudega edasi liikuma. Ja jah, sa pead arendama endas TDD-d kasutades arenemisvõimet, oskust minna eesmärgi poole nii, et testid oleksid püsivalt rohelised, mitte pool päeva punased, sest “teil on palju ümbertöötamist”. See on täpselt sama oskus kui hooldatava koodi kirjutamine või produktiivse koodi kirjutamine.

Seega sõltub see, kui hästi teie koodi saab muuta, sellest, millist kujundust te alustate, kui lihtne see on ja kui head on teie testid.

Pärast intervjuud sain tagasisidet mõne tunni jooksul. Selles etapis mõistsin, et olen peaaegu läbi saanud ja Fowleriga kohtumiseni oli jäänud väga vähe.

4. etapp. Finaal. Piisavalt tehnilistest küsimustest. Me tahame teada, kes sa oled!

Kui aus olla, siis olin selle küsimuse sõnastuse pärast mõnevõrra hämmingus. Kuidas saate ühetunnise vestluse jooksul aru, milline inimene ma olen? Ja veelgi enam, kuidas te sellest aru saate, kui ma räägin keelt, mis ei ole mu emakeel ja ausalt öeldes väga närune ja keeleline. Varasemates intervjuudes oli mul isiklikult lihtsam pigem rääkida kui küsimustele vastata ja selles oli süüdi aktsent. Vähemalt üks intervjueerijatest oli asiaat – ja nende aktsent, noh, ütleme nii, on eurooplasele mõneti omane. Seetõttu otsustasin läheneda ennetavalt – koostada endast ettekanne ja intervjuu alguses pakkuda selle esitlusega endast juttu. Kui nad on nõus, siis on vähemalt minu jaoks vähem küsimusi, kui nad pakkumise tagasi lükkavad, siis ei ole 3 tundi minu elust esitlusele kulutatud nii kõrge hind. Aga mida peaksite oma esitlusse kirjutama? Biograafia - Sündis seal, sel ajal, käis koolis, lõpetas ülikooli - aga keda see huvitab?

Kui guugeldate veidi Thoughtworksi kultuuri kohta, leiate Martin Fowleri artikli [https://martinfowler.com/bliki/ThreePillars.html], mis kirjeldab kolme sammast: jätkusuutlik äri, tarkvara tipptase ja sotsiaalne õiglus.

Oletame, et Software Excellence on minu jaoks juba kontrollitud. Jääb üle näidata jätkusuutlikku ettevõtlust ja sotsiaalset õiglust.

Pealegi otsustasin keskenduda viimasele.

Alustuseks ütlesin talle, miks ThoughtWorks – lugesin Martin Fowleri ajaveebi juba ülikooli ajal, sellest ka armastus Clean koodi vastu.

Projekte saab esitada ka erinevate nurkade alt. Samuti töötas ta välja meditsiini jaoks tarkvara, mis lihtsustas patsientide elu ja päästis kuulujuttude kohaselt isegi ühe elu. Samuti arendasin tarkvara pankadele, mis tegi ka kodanike elu lihtsamaks. Eriti kui seda panka kasutab 70% riigi elanikest. See ei puuduta Sberbanki ega isegi Venemaad.

Tahad minu kohta teada? OKEI. Minu hobiks on fotograafia, nii või teisiti olen kaamerat käes hoidnud umbes 10 aastat, on fotosid, mida pole piinlik näidata. Samuti aitasin omal ajal kasside varjupaika: pildistasin kasse, kes vajasid alalist kodu. Ja heade fotodega on kassi paigutamine palju lihtsam. Pildistasin vist sada kassi :)

Lõpuks oli 80% minu esitlusest täidetud kassidega.

Kohe pärast esitlust kirjutas HR mulle, et ta ei tea veel intervjuu tulemusi, kuid kogu kontor oli juba kassidest vaimustuses.

Lõppkokkuvõttes jäin tagasisidet ootama – jäin inimesena kõigiga rahule.

Kuid lõpuvestlusel ütles HR taktitundeliselt, et sotsiaalne õiglus on väga hea ja vajalik, aga mitte kõik projektid pole sellised. Ja ta küsis, kas see hirmutab mind. Üldiselt läksin sotsiaalse õiglusega veidi liiale, seda juhtub :)

Summaarne

Selle tulemusel olen töötanud Singapuris Thoughtworksis juba mitu kuud ja näen, et siin kasutavad liiga paljud ettevõtted Google'i "parimaid intervjuude tavasid", kasutades kodeerimiseks lehti ja tahvlit, hoolimata sellest, et neil on rohkem teadmisi kui Spring. Symfony, RubyOnRails (vajalikule joon alla) ei ole töös nõutav. Insenerid võtavad enne intervjuud nädalaks pausi, et valmistuda.

Thoughtworksis on lisaks kandidaadile esitatavatele piisavatele nõuetele esiplaanil järgmised põhimõtted:
Intervjueerimise rõõm. Pealegi mõlemale poolele. Tõepoolest, kui soovite saada parimat personali (ja kes mitte?), siis intervjuu pole turg, kus valitakse orje, vaid saade, kus nii tööandja kui ka kandidaat hindavad üksteist. Ja kui kandidaat seostab meeldivaid emotsioone mõne ettevõttega, siis tõenäoliselt valib ta just selle ettevõtte

Mitu küsitlejat eelarvamuste leevendamiseks. Thoughtworksis on paarisprogrammeerimine de facto standard. Ja kui seda praktikat saab rakendada ka muudes valdkondades, proovib TW seda teha. Igas etapis viib intervjuu läbi 2 inimest. Seega hindab iga inimest vähemalt 8 inimest ning TW püüab valida erineva taustaga, eri suundadega (mitte ainult tehnikaspetsialistid) ja sooga intervjueerijaid.

Lõppkokkuvõttes tehakse töölevõtmise otsus vähemalt 8 inimese arvamuste põhjal ja kellelgi pole otsustavat häält.

Atribuutidepõhine töölevõtmine Selle asemel, et teha otsus kandidaadi meeldimise või mittemeeldimise põhjal, töötatakse iga rolli ja etapi jaoks välja vorm, mis sisaldab hinnatavaid omadusi. Samas on hindamisel väga soovitatav hinnata mitte mingi oskuse kogemust, vaid oskust seda rakendada. Seega, kui kandidaat ei osanud mingeid oskusi, näiteks TDD-d, rakendada, kuid sellegipoolest proovib neid rakendada, kuulab nõuandeid, kuidas neid õigesti kasutada, on tal kõik võimalused vestlusest läbida.

Haridustunnistusi pole vaja TW ei nõua arvutiteaduse sertifikaati ega haridust. Hinnatakse ainult oskusi.

See on esimene intervjuu, mille olen pidanud välismaiste ettevõtetega, milleks ma ei pidanud valmistuma. Pärast iga etappi ei tundnud ma end kurnatuna, vaid vastupidi, mul oli hea meel, et sain rakendada parimaid praktikaid, et inimesed teisel pool monitori hindasid seda ja rakendasid neid iga päev.

Pärast mitut kuud võin öelda, et mu ootused täitusid täielikult. Mille poolest erineb ThoughtWorks tavalisest ettevõttest? Tavalises seltskonnas võib leida häid arendajaid ja toredaid inimesi, kuid TW-s on nende keskendumine edetabelitest väljas.

Kui olete huvitatud ThoughtWorksiga liitumisest, saate vaadata meie avatud positsioone siin
Soovitan pöörata tähelepanu ka huvitavatele vabadele töökohtadele:
Juhtiv tarkvarainsener: Saksamaa, London, Madridi, Singapur
Vanemtarkvarainsener: Sydney, Saksamaa, Manchester, Bangkok
Tarkvarainsener: Sydney, Barcelona, Milano
Vanemandmeinsener: Milano
Kvaliteedianalüütik: Saksamaa Hiina
Infrastruktuur: Saksamaa, London, Tšiili
(Hoiatan ausalt, et link on suunamislink, kui lähete TW-sse, saan kena boonuse). Valige endale meelepärane kontor, te ei pea piirduma Euroopaga, sest iga 2 aasta tagant kolib TW teid hea meelega teise riiki, sest... see on osa ThoughtWorksi poliitikast, nii et kultuur levib ja homogeniseeritakse.

Küsige julgelt küsimusi kommentaarides või küsige minult soovitusi.
Kui teema tundub huvitav, siis kirjutan sellest, mis tunne on ThoughtWorksis töötada ja milline on elu Singapuris.

Allikas: www.habr.com

Lisa kommentaar