
Kas teie arvates ei tundu kummaline, et kui te kavatsete vahetada töökohta ja peab lĂ€bima intervjuu, siis mĂ”tlete kĂ”igepealt "pean intervjuuks valmistuma". Lahendage ĂŒlesandeid HackerRankis, lugege Crack the Coding Interview, Ă”ppige peast, kuidas töötab ArrayList ja kuidas see erineb LinkedList'ist. Ahjaa, vĂ”idakse kĂŒsida ka sorteerimismeetodeid, ja oleks ilmselgelt ebaaus öelda, et quick sort oleks tĂ”enĂ€oliselt parim valik.
Aga oodake, te ju programmeerite 8 tundi pĂ€evas, lahendate huvitavaid ja mitte triviaalset ĂŒlesandeid ning uues töökohas teete enam-vĂ€hem sama. Kuid siiski, et intervjuust lĂ€bi saada, on vaja kuidagi lisaks valmistuda, isegi mitte oma igapĂ€evaseid oskusi lihvida, vaid Ă”ppida seda, mis ei olnud vajalik ei teie praeguses ametis ega tĂ”enĂ€oliselt ka uues. Teie vĂ€idete peale, et arvutiteadus on meie veres ja isegi keset ööd Ă€ratades peame kirja panema, kuidas puudutada puu laiust silmade kinni padjal, isegi teadvusse tulemata, vastan, et kui ma lĂ€heksin sirkusesse ja minu peamine trikk oleks just see - siis ma ilmselt nĂ”ustun. Seda oskust tuleb testida.
Aga miks kontrollida mitteseotud praeguse tööga oskusi? Ainult seetĂ”ttu, et see on muutunud moes? Sest Google teeb nii? VĂ”i sellepĂ€rast, et teie tulevane tiimijuht pidid intervjuu lĂ€bimiseks selgeks Ă”ppima kĂ”ik sorteerimismeetodid ja nĂŒĂŒd arvab, et "iga hea programmeerija peab peas teadma, kuidas leida palindroomi stringis".
Nii et, te ei ole Google (c). Mis on Google'i jaoks lubatud, ei saa tavalised ettevĂ”tted endale lubada. Google on analĂŒĂŒsinud oma töötajate andmeid ja jĂ”udnud jĂ€reldusele, et just nende konkreetsed ĂŒlesanded sobivad hĂ€sti olĂŒmpia taustaga inseneridele. Veelgi enam, valikuprotsessi ĂŒles seadmisel saavad nad endale lubada riski, et nad ei palka mĂ”nda head inseneri, kuna nad ei oska nii lihtsalt matemaatilisi ĂŒlesandeid lahendada. Kuid neile ei ole see probleem, soovijaid Google'i tööle on palju ja positsioon suletakse.
NĂŒĂŒd vaatame aknast vĂ€lja, ja kui teie bĂŒroo ees ei ole insenere, kes tahavad teie juures töötada, kes on telkimise ĂŒles seadnud, ja teie arendajad otsivad rohkem StackOverflow'st, millist Springi annotatsiooni paigaldada, mitte aga algoritmide jĂ€rjekorra nĂŒansse, siis ilmselt on aeg mĂ”elda, kas tasub Google'it kopeerida.
Kui seekord Google alt vedas ja vastust ei andnud, mida teha? Kontrollige tÀpselt seda, mida arendaja teeb tööl. Mida hindate arendajate juures?
Koostage kriteeriumid, kelle soovite palgata, ja töötage vÀlja testid, mis kontrollivad just neid oskusi.
ThoughtWorks
Mida siin ThoughtWorks'i kohta öelda? Just siin leidsin eeskujuliku vestluse nĂ€ite. Kes on ThoughtWorks? LĂŒhidalt öeldes on see High-End konsultatsioonifirma, millel on kontorid ĂŒle kogu maailma alates Hiinast ja Singapurist kuni Ameerika mandriteni, kes on tegelenud arenduse konsulteerimisega ligikaudu 25 aastat, omab oma teadusosakonda, mida juhib Martin Fowler. Kui otsite nimekirja 10 raamatust, mis on tarkvara inseneride jaoks must-read, siis ilmselt 2â3 neist on kirjutatud ThoughtWorks'i meestelt, nĂ€iteks Refactoring autor Martin Fowler ja Building Microservices: Designing Fine-Grained Systems autor Sam Newman vĂ”i Building Evolutionary Architectures.
autor Patrick Kua, Rebecca Parsons, Neal Ford.
EttevÔtte Àri pÔhineb piisavalt kallite teenuste osutamisel, kuid klient maksab fenomenaalse kvaliteedi eest, mis tuleneb ekspertiisist, sisemisest standardist ja loomulikult inimestest. SeetÔttu on siin ÀÀrmiselt oluline palgata Ôigeid inimesi.
Millised on siis Ă”iged inimesed? Loomulikult on see igaĂŒhe jaoks erinev. ThoughtWorks on mÀÀratlenud, et nende Ă€rimudeli jaoks on arendajate tĂ€htsaimad kriteeriumid:
- Oskus paaridena arendada. Just oskus, mitte kogemus vÔi osavus. Keegi ei oota, et inimesed, kes praktiseerivad paar-programmeerimist, on seda teinud juba viis aastat. Kuid teiste arvamusele vastuvÔtlik olemine ja kuulamisoskus on hÀdavajalik oskus.
- Oskus kirjutada teste, ja ideaaljuhul praktiseerida TDD-d.
- MÔista SOLID pÔhimÔtteid ja OOP-d ning osata neid rakendada.
- Esitada oma arvamust. Konsultandina tuleb töötada kliendi arendajatega, teiste konsultantidega, ja ei ole liiga palju kasu, kui inimene oskab midagi hÀsti teha, kuid ei suuda seda meeskonna teistele liikmetele edastada.
NĂŒĂŒd on oluline hinnata neid oskusi kandidaadis. Ja siin tahan rÀÀkida oma kogemusest intervjuu lĂ€bimisel ThoughtWorks'is. Ătlen kohe, et lĂ€bisime seda Singapuris ja sain töökoha, kuid vĂ€rbamismenetlus on ĂŒhtne ja ei erine oluliselt riigiti.
Etapp 0. HR
Kuidas see tihti on, 20-minutiline intervjuu HR-iga. Ma ei peatu sellel pikalt, ĂŒtleksin vaid, et ma pole kunagi varem kohtunud HR-iga, kes suudaks 15 minutit rÀÀkida arenduskultuurist ettevĂ”ttes, miks nad kasutavad TDD-d, miks paaritöö programmeerimisel. Tavaliselt selle kĂŒsimuse juures HR'id langevad ja rÀÀgivad, et nende protsess on tavaline: arendajad arendavad, testijad testivad ja juhid pressivad.
Etapp 1. Kui hea sa oled OOP-s, TDD-s?
1,5 tundi enne intervjuu algust saatsid nad mulle ĂŒlesande simuleerida Mars Rover'i.
Mars rover'i ĂŒlesanneNASA peab Marsile maanduma rikka tuvastusega robotroovide rikka seltskonda. See tasand, mis on kummaliselt ristkĂŒlikukujuline, peab olema roovide navigeeritav, et nende kaamerad saaksid tĂ€ieliku ĂŒlevaate ĂŒmbritsevast maastikust, et saata see tagasi Maale. Roovri positsioon ja asukoht esindavad x ja y koordinaate ning tĂ€hte, mis esindab ĂŒht neljast pĂ”hissuundast. Tasand on jagatud ruudustikku, et lihtsustada navigeerimist. NĂ€iteks positsioon vĂ”ib olla 0, 0, N, mis tĂ€hendab, et roover on vasakus alanurgas ja vaatab pĂ”hja poole. Rooveri juhtimiseks saadab NASA lihtsa tĂ€hestringi. VĂ”imalikud tĂ€hed on 'L', 'R' ja 'M'. 'L' ja 'R' panevad rooveri pöörama 90 kraadi vasakule vĂ”i paremale, liikumatuks jÀÀdes. 'M' tĂ€hendab ette liikumist ĂŒhe ruudupunkti vĂ”rra ja sama suuna hoidmist.
Eeldage, et ruut otse pÔhja suunas (x, y) on (x, y+1).
SISEND:
Esimene rida sisendist on tasandi ĂŒlemised paremad koordinaadid, alumised vasakud koordinaadid on eeldatavalt 0,0.
ĂlejÀÀnud sisendiga on seotud teave juurutatud roovaride kohta. Iga rooveri kohta on kaks sisendi rida. Esimene rida annab rooveri positsiooni, teine rida on juhiste seeria, mis ĂŒtleb rooverile, kuidas tasandit uurida. Positsioon koosneb kahest tĂ€isarvust ja ĂŒhest tĂ€htest, mis on eraldatud tĂŒhermudega, ja mis vastab x ja y koordinaatidele ning rooveri orientatsioonile.
Iga roover lÔpetatakse jÀrjestikku, mis tÀhendab, et teine roover ei alusta liikumist enne, kui esimene on lÔpetanud.
VĂLJUND:
Iga rooveri vÀljund peaks olema selle lÔplikud koordinaadid ja suund.
MĂRKUSED:
Lihtsalt rakenda ĂŒlaltoodud nĂ”udeid ja tĂ”esta vaakumipuhasti toimimist, kirjutades sellele ĂŒksuste testid.
Kasu igasuguse kasutajaliidese loomine on vÀlja jÀÀnud.
Probleemi lahendamine jÀrgides TDD (Test Driven Development) lÀhenemist on eelistatud.
LĂŒhikese aja jooksul, mis meil on, oleme rohkem mures kvaliteedi kui tĂ€iuslikkuse pĂ€rast.
*Ma ei saa jagada ĂŒlesannet, mille nad mulle saatsid, see on vana ĂŒlesanne, mis anti paar aastat tagasi. Kuid uskuge mind, pĂ”himĂ”tteliselt on kĂ”ik jÀÀnud samaks.
Erald soovib tÀhelepanu pöörata hindamiskriteeriumidele. Kui tihti olete sattunud olukorda, kus kandidaadi jaoks olulised asjad ei oma mingit tÀhtsust hindamisel ja vastupidi? Mitte kÔik ei mÔtle samamoodi nagu sina, kuid paljud vÔivad omaks vÔtta teie vÀÀrtused ja jÀrgida neid, kui need on selgelt kirja pandud. Seega, hindamiskriteeriumidest on kohe aru saada, et selle etapi kÔige olulisemad oskused on
- TDD;
- Oskus kasutada OOP-d ja kirjutada hooldatavat koodi;
- paari programmeerimise oskus
Nii et mind hoiatati, et kulutaksin need 1,5 tundi mĂ”tlema sellele, kuidas ma kavatsege ĂŒlesannet lahendada, mitte koodi kirjutamisele. Koodi kirjutame koos.
Kui me helistasime, rÀÀkisid poisid lĂŒhidalt, kes nad on, millega nad tegelevad ja pakkusid vĂ€lja, et alustada arendust.
Kogu intervjuu jooksul ei olnud mul kordagi tunnet, et olen vestlusel. Tundub, et kirjutad koodi meeskonnas. Kui sa jÀÀd kuskil kinni - nad aitavad, annavad nÔu, arutavad, isegi vaidlevalt, kuidas paremini teha. Vestlusel unustasin, kuidas JUnit 5-s kontrollida, et meetod viskab Exception'i - nad pakkusid, et jÀtkaksime testi kirjutamist, samal ajal kui keegi neist google'is otsis, kuidas seda teha.
Juba paar tundi pÀrast intervjuud sain konstruktiivset tagasisidet - mis meeldis ja mis mitte. Minu puhul kiideti heaks Sealed klasside kasutamine objekti null alternatiivina; et enne koodi kirjutamist kirjutasin pseudokoodina, kuidas ma tahaksin rooverit juhtida, ja seega sain klasside visandi, vÀhemalt nende, mis on seotud roboti API-ga.
Etapp 2. RÀÀgi meile
NĂ€dal enne intervjuud paluti mul valmistada ette esitluse igasugusel minu jaoks huvitaval teemal. Formaat on lihtne ja tuttav: 15 minutit esitlust, 15 minutit kĂŒsimustele vastuseid.
Valisin Clean Architecture by Uncle Bob. Ja taas kĂŒsitles mind paar inimest. See oli minu esimene kogemus ettekanne inglise keeles ja tĂ”enĂ€oliselt, kui ma oleksin stressirohkes olukorras â ma ei oleks sellega hakkama saanud. Kuid jĂ€lle, mul ei olnud kunagi tunnet, et olen intervjuul. KĂ”ik nagu tavaliselt â rÀÀgin mina, nemad kuulavad tĂ€helepanelikult. Ievena traditsiooniline kĂŒsimuste ja vastuste sessioon ei olnud intervjueerimise moodi, oli nĂ€ha, et kĂŒsimusi esitati mitte selleks, et âsukeldudaâ, vaid need, mis neid tĂ”eliselt huvitavad mu ettekandes.
MĂ”ni tund pĂ€rast intervjuud sain tagasisidet â ettekande sisu oli vĂ€ga kasulik ja nad said kuulamisest siiralt naudingut.
Etapp 3. Tootmisvalmis kood
Teavitades, et see on viimane etapp tehnilistest intervjuudest, paluti mul kodus kood viia tootmisvalmis olekusse, pĂ€rast mida saata kood ĂŒlevaatamiseks ja mÀÀrata intervjuud, mille kĂ€igus nĂ”udmised ĂŒlesandele muutuvad ja kood vajab modifitseerimist. Eelnevalt vĂ”in öelda, et koodi ĂŒlevaatus toimub pimesi, ĂŒlevaatajad ei tea ei positsioonist, millele kandidaat kandideerib, ei nĂ€e tema CV-d, isegi ei nĂ€e tema nime.
KĂ”ne, ja taas on paar tĂŒĂŒpi monitori teisel poolel. KĂ”ik nagu esimesel vestlusel: peamine on mitte unustada TDD-d, selgitada, mida sa teed ja miks. Kui sa ei ole varem TDD-d praktiseerinud, siis ma soovitan seda kohe alustada, mitte seepĂ€rast, et see on ettevĂ”tetes vajalik, vaid et see lihtsustab sinu elu oluliselt, vĂ€hendades, kui soovid, stressitaset. Kas mĂ€letad, kuidas tuli meeleheitlikult otsida debugeerijaga viga, mis esines ainult brauseris ja mida sa testimisega paljundada ei saanud? Kujuta nĂŒĂŒd ette, et pead sellist viga leidma intervjuu ajal â paar halli karva on sulle garanteeritud. Mida me TDD-s saavutame? Muudame koodi ja ootamatult saame aru, et testimine on punane, kuid mis viga see on, ei saa esimesel katsel aru? Okei, ĂŒtleme intervjuud lĂ€bi viijatele âUpsâ, vajutame Ctrl-Z ja hakkame vĂ€ikeste sammudega edasi liikuma. Ja jah, TDD kasutamise oskus on midagi, mida tuleb endas arendada, oskus liikuda eesmĂ€rgi poole nii, et sinu testid oleksid pidevalt rohelised, mitte punased pool pĂ€eva, sest âsul on suur refaktoreerimineâ. See on tĂ€pselt sama oskus, mis on toetatava koodi kirjutamine vĂ”i tootlikkuse kood.
Nii et, kui hÀsti su kood muudatustele allub, sÔltub sellest, kui hea kujundus sul algselt oli, kui lihtne see on ja kui head on sinu testid.
PĂ€rast intervjuud sain tagasiside paar tunni pĂ€rast. Sel hetkel mĂ”istsin, et olen praktiliselt lĂ€binud ja jÀÀnud on vaid vĂ€ike samm âkohtumiseni Fowlerigaâ.
Etapp 4. Finaal. Piisavalt tehnilisi kĂŒsimusi. Tahame teada, kes sa oled!
Ahnestusena, see kĂŒsimuse esitlemine pani mind veidi muretsema. Kuidas saab ĂŒhe tunni vestluse pĂ”hjal aru saada, millisest inimesest tegu? Ja veel vĂ€hem, kuidas seda aru saada, kui ma rÀÀgin mitte emakeeles, ausalt öeldes, ĂŒsna viletsalt ja kohmakalt. Eelmistel intervjuudel oli mul lihtsam rÀÀkida, mitte vastata kĂŒsimustele ja sĂŒĂŒdistus langeb aktsendile. Ăks intervjuu pidaja oli vĂ€hemalt aasialane â ja nende aktsent on, ĂŒtleme nii, eurooplasele ĂŒsna eriline. SeetĂ”ttu otsustasin rakendada proaktiivset lĂ€henemist â valmistada ette esitluse enda kohta ja pakkuda intervjuu alguses rÀÀkida enda kohta selle esitluse saatel. Kui nad nĂ”ustuvad, on mul vĂ€hemalt vĂ€hem kĂŒsimusi, kui nad ei aksepteeri selle ettepaneku â noh, 3 tundi minu elust, kulutatud esitlusele, ei tundu just mĂ”ttekas hind. Aga mida ette nĂ€idata esitluses? Elulugu â SĂŒndinud seal ja siis, lĂ€ksin kooli, lĂ”petasin ĂŒlikooli â kes sellest ĂŒldse huvitatud on?
Kui veidi Google'ist otsida Thoughtworks'i kultuuri kohta, siis vÔib leida Martine Fowler'i artikli [https://martinfowler.com/bliki/ThreePillars.html], kus on kirjas 3 pÔhikallakut: JÀtkusuutlik Àri, Tarkvara tipptase ja Sotsiaalne Ôiglus.
Eeldades, et Tarkvara tippkvaliteet on juba kontrollitud. JÀÀnud on nÀidata JÀtkusuutlikku Àri ja Sotsiaalset Ôiglust.
Olen otsustanud rÔhku panna viimasele.
Alustuseks rÀÀkisin, miks ThoughtWorks â juba ĂŒlikoolis lugesin Martine Fowler'i blogi, sealt ka armastus Clean code'i vastu.
Projekte saab ka erinevatest nurkadest esitleda. Olen arendanud meditsiiniliseks tarkvaraks, mis lihtsustas patsientide elu ja isegi kuuldavasti pÀÀstis ĂŒhe elu. Olen arendanud ka panka suunatud tarkvara, samuti liialt lihtsustades kodanike elu. Eriti kui sellega kasutab 70% elanikkonnast. Ei rÀÀgi Sberbankist ja isegi mitte Venemaast.
Tahad minust rohkem teada? Okei. Minu hobi on fotograafia, ma olen olnud kaamera taga umbes 10 aastat, mul on fotosid, mida ei ole hĂ€bi nĂ€idata. Ka, mĂ”nda aega aitasin kasside varjupaika: pildistasin kasse, kes vajasid pĂŒsivat kodu. HĂ€id pilte, et leida kassile uus kodu, on palju lihtsam. TĂ”enĂ€oliselt olen pildistanud umbes sada kassi đ
LÔpuks oli 80% esitusest tÀidetud kassidega.
Otse pÀrast esitlust kirjutas mulle HR, et tal ei ole veel vestluse tulemusi, kuid kogu kontor on juba kassidest muljet avaldanud.
LÔpuks sain tagasisidet - ma rahuldasin kÔiki isikuna.
Kuid HR rÀÀkis lĂ”ppvestluses taktitunne, et sotsiaalne Ă”igusjustice on vĂ€ga hea ja vajalik, kuid mitte kĂ”ik projektid on sellised. Ta kĂŒsis, ega see mind ei hirmuta. ĂhesĂ”naga, ma natuke ĂŒle pingutasin sotsiaalse Ă”iglusega, juhtub đ
KokkuvÔte
KokkuvĂ”ttes olen ma juba mitu kuud töötanud Singapuris Thoughtworksis, nĂ€en, et paljud ettevĂ”tted siin vĂ”tavad ĂŒle Google'i 'parimaid praktikaid' vestlustel, kasutades paberit ja Whiteboardi kodeerimiseks, kuigi töötamiseks ei ole teadmisi kaugemale Springâist, Symfonyâst, RubyOnRailsâist (vajalik allkirjastada) vaja. Insenerid vĂ”tavad nĂ€dalase puhkuse enne vestlust, et 'valmistuda'.
Thoughtworksis, lisaks adekvaatsetele nÔudmistele kandidaadile, pannakse rÔhku jÀrgnevatele pÔhimÔtetele:
Vestlemise nauding. KĂŒll aga mĂ”lema poole jaoks. TĂ”eliselt, kui soovite saada parimaid töötajaid (kes ei tahaks?), siis vestlemine ei ole turg, kus valitakse orje, vaid kohtumine, kus nii tööandja kui kandidaat hindavad ĂŒksteist. Ja kui kandidaadil on ettevĂ”ttega meeldivate emotsioonide assotsiatsioon - on tĂ€iesti vĂ”imalik, et ta valib just selle ettevĂ”tte.
Mitmed vestlejate, et vĂ€hendada kallutatust. Thoughtworksis on paaristetöötamine de facto standard. Ja kui seda praktikat saab rakendada teistes valdkondades, pĂŒĂŒab TW seda teha. Iga vestluse etapis viivad vestluse lĂ€bi kaks inimest. Nii et igaĂŒht hindavad minimaalset 8 inimest, ja TW pĂŒĂŒab sobitada vestlejaid erineva tausta, erinevate suundade (mitte ainult tehnika) ja soo jĂ€rgi.
LÔpuks teeb töölevÔtmisotsuse vÀhemalt 8 inimese arvamus, ja kellelgi ei ole Ôigust otsustavaks hÀÀleks.
AtribuudipĂ”hine vĂ€rbamine Kandidaatide otsuste tegemiseks on vĂ€lja töötatud vorm, mis sisaldab hinnatavaid omadusi, mitte mitte ainult 'meeldib/ei meeldi' lĂ€henemist. Lisaks tuleks hindamisel keskenduda mitte ainult teatud oskuste kogemusele, vaid ka vĂ”imele neid rakendada. Seega, kui kandidaadil pole kunagi olnud vĂ”imalust kasutada oskusi nagu TDD, kuid ta pĂŒĂŒab seda rakendada ja kuulab nĂ”uandeid Ă”ige kasutamise kohta â on tal head vĂ”imalused intervjuust lĂ€bi minna.
Haridustunnistused ei ole vajalikud TW ei nÔua kandidaatidelt arvutiteaduse alaseid haridustunnistusi. Oluline on vaid oskuste hindamine.
See oli esimene intervjuu, mille jaoks ma ei pidanud ette valmistuma, kui ma olen kandideerinud vÀlisfirmadesse. Iga etapi jÀrel ei tundnud ma end nagu sidrun, vastupidi, olin rÔÔmus, et sain rakendada parimaid tavasid ja et inimesed monitori taga hindavad seda ning rakendavad neid igapÀevaselt.
MÔne kuu pÀrast vÔin öelda, et ootused on tÀielikult tÀidetud. Kuidas erineb ThoughtWorks tavalisest ettevÔttest? Tavalisest ettevÔttest leiad hÀid arendajaid ja toredaid inimesi, kuid TW-s on nende kontsentratsioon ÀÀrmiselt kÔrge.
Kui soovite ThoughtWorksiga liituda, saate vaadata avatud töökohti
Soovitan ka tutvuda huvitavate tööpakkumistega:
Juhtiv tarkvarainsener: , , ,
Vanem tarkvarainsener: , , ,
Tarkvarainsener: , ,
Vanem andmeinsener:
KvaliteedianalĂŒĂŒtik:
Infrastruktuur: , ,
(Tahan ausalt hoiatada, et link on suunamislink; kui te lĂ€hete TW-sse, saan ma meeldiva boonuse). Valige endale meelepĂ€rane kontor, ei pea piirduma vaid Euroopaga, igal juhul on TW Ă”nnelik teid igal teisel aastal teise riiki viia, kuna see on osa ThoughtWorksi poliitikast, kultuur laieneb ja muutub ĂŒhtlasemaks.
Ărge kartke kĂŒsimusi esitada kommentaarides vĂ”i paluda mul teid soovitada.
Kui teema tundub huvitav, kirjutan sellest, kuidas on töötada ThoughtWorksis ja kuidas elada Singapuris.
Allikas: habr.com
