
Kas see ei tundu kummaline, et kui plaanite töökohta vahetada ja peate lĂ€bima intervjuu, mĂ”tle esimese asjana âpean intervjuuks valmistumaâ. Tuleb lahendada ĂŒlesandeid HackerRankis, lugeda Crack the coding interview, pĂ€he Ă”ppida, kuidas ArrayList töötab ja mille poolest see erineb LinkedListist. Ah jah, vĂ”idakse kĂŒsida ka sorteerimismeetodeid ja oleks ilmselgelt ebaaus öelda, et quick sort on tĂ”enĂ€oliselt parim valik.
Aga oota, sa ju programmeerid 8 tundi pĂ€evas, lahendad huvitavaid ja mittetriviaalseid ĂŒlesandeid ning uues töökohas teed pĂ”himĂ”tteliselt samasugust tööd. Siiski, et intervjuust lĂ€bi saada, tuleb kuidagi eraldi valmistuda, mitte et hakatakse harjutama igapĂ€evaseid oskusi, vaid tuleb meelde jĂ€tta see, mis sulle ei ole vajalik olnud praeguses töökohas ja mis tĂ”enĂ€oliselt ei ole vajalik ka jĂ€rgmisel. Kui sa tuled mulle ĂŒtlema, et computer science on meie veres ja kui meid Ă€ratada keset ööd, oleme me kohustatud kirjutama puusasĂ€hvatusega puude laiuse lĂ€bimise algoritmi, isegi mitte Ă€rkvel olles, siis ma vastan, et kui ma peaksin tsirkusesse tööle minema ja minu peamine trikk oleks just see - siis jah, ma nĂ”ustun. Seda oskust tuleb testida.
Aga miks siis kontrollida oma töökohaga seotud oskusi? Ainult seetĂ”ttu, et see on moes? Kuni Google nii teeb? VĂ”i seetĂ”ttu, et teie tulevane tiimijuht pidi enne intervjuud kĂ”ik sorteerimismeetodid Ă€ra Ă”ppima ja nĂŒĂŒd arvab, et âiga hea programmija peab teadma peast, kuidas leida palindroomi stringisâ.
Aga sina ei ole Google (c). Mida Google endale lubada saab, ei saa tavalised ettevĂ”tted. Google on analĂŒĂŒsinud oma töötajate andmeid ja jĂ”udnud jĂ€reldusele, et just nende spetsiifiliste ĂŒlesannetega tegelevad hĂ€sti insenerid, kellel on olĂŒmpiapĂ€ritolu. Veelgi enam, oma valikuprotsessi ehitades saavad nad endale lubada riski, et nad ei palka mĂ”nd head inseneri lihtsalt seetĂ”ttu, et nad ei suuda nii lihtsalt matemaatilisi ĂŒlesandeid lahendada. Kuid see ei ole nende jaoks probleem - soovijaid Google'i töökohtadele on palju, positsioon leiab lĂ”puks ikka tĂ€itmise.
NĂŒĂŒd vaatame aknast vĂ€lja ja kui teie bĂŒroo ees ei ole insenere, kes soovivad teie juures töötada ja ei ole ĂŒles seadnud telkimislaager, ning teie arendajad otsivad vĂ€hem Stack Overflow's enamat kui soritusesprings tingimusi, mitte algoritmide ĂŒksikasju, siis on ilmselgelt aeg mĂ”elda, kas tasub Google'i mudelit kopeerida.
Hea kĂŒll, kui seekord Google ei aidanud ja ei andnud vastuseid, mida siis teha? Kontrollida just neid oskusi, mida arendaja oma töös vajab. Mida te arendajates hindate?
Koostage kriteeriumid, keda soovite palgata, ja töötage vÀlja testid, mis kontrollivad just neid oskusi.
ThoughtWorks
Mida see ThoughtWorks siia puutub? Just siin leidsin enda jaoks nĂ€ite ideaalsest intervjuust. Kes on ThoughtWorks? LĂŒhidalt öeldes, see on High-End konsultatsioonifirma, millel on kontorid ĂŒle kogu maailma alates Hiinast, Singapurist kuni Ameerika mandriteni, mis on tegelenud arendusvaldkonna nĂ”ustamisega juba umbes 25 aastat, omab oma teadusosakonda, mida juhib Martin Fowler. Kui otsite nimekirja 10 raamatust, mida peab lugema tarkvarainsener, siis ilmselt on 2-3 neist kirjutatud ThoughtWorksi inimestelt, nagu nĂ€iteks Refactoring Martin Fowler ja Building Microservices: Designing Fine-Grained Systems by Sam Newman vĂ”i Building Evolutionary Architectures
by Patrick Kua, Rebecca Parsons, Neal Ford.
EttevÔtte Àri pÔhineb piisavalt kallite teenuste pakkumisel, kuid klient maksab fenomenaalse kvaliteedi eest, mis tuleneb ekspertiisist, sisemistest standarditest ja loomulikult inimestest. SeetÔttu on hÀdavajalik palkata Ôiged inimesed.
Aga kes on Ă”iged inimesed? Loomulikult on igaĂŒhe jaoks oma tĂ”ekspidamised. ThoughtWorks on mÀÀratlenud, et nende Ă€rimudelile on arendajate jaoks kĂ”ige olulisemad kriteeriumid:
- VÔime pargis töötada. Just vÔime, mitte kogemus vÔi oskused. Keegi ei oota, et inimesed, kes harjutavad Pair programming't juba 5 aastat, tulevad. Aga olema avatud teiste arvamusele, oskama kuulata - see on vajalik oskus.
- VÔime kirjutada teste ja ideaaljuhul praktiseerida TDD-d.
- MÔista SOLID'i ja OOP-d ning osata neid rakendada.
- Esitada oma arvamust. Konsultandina tuleb töötada kliendi arendajatega, teiste konsultantidega, ja pole palju kasu, kui inimene oskab midagi hÀsti teha, kuid ei suuda seda teistele meeskonna liikmetele edastada.
NĂŒĂŒd on oluline hinnata just neid oskusi kandidaadi juures. Siin tahan rÀÀkida oma kogemusest ThoughtWorksi intervjuus. Ătlen kohe, et ma kĂ€isin intervjuul Singapuris ja sain töökoha, kuid vĂ€rbamisprotsess on ĂŒhtne ja ei erine riigist riiki oluliselt.
Etapp 0. HR
Kuidas see sageli on, HR-iga 20-minutiline intervjuu. Siin ei jÀÀks ma pikalt peatuma, vaid ĂŒtlen, et ma pole kunagi varem kohtunud HR-iga, kes suudaks 15 minutit rÀÀkida ettevĂ”tte arenduskultuurist, miks nad rakendavad TDD-d, miks paaristöö toimub. Tavaliselt on HR-id sellel teemal tuhmiks muutunud ja rÀÀgivad lihtsalt, et protsess on neil tavapĂ€rane: arendajad arendavad, testijad testivad, juhid juhivad.
Etapp 1. Kui hea sa oled OOP-s, TDD-s?
1,5 tundi enne intervjuu algust saatsid nad mulle ĂŒlesande simuleerida Marsi roverit.
Marsi roveri ĂŒlesanneNASA peab maandama meeskonna robotroversid Marsi platoodile. See platood, mis on kummaliselt neljakujuline, peab olema roverite poolt navigeeritud nii, et nende pardakaamerad saaksid tĂ€ieliku ĂŒlevaate ĂŒmbritsevast maastikust, et saata see tagasi Maale. Roveri asukohta ja suunda esindab x ja y koordinaatide kombinatsioon ning tĂ€ht, mis tĂ€histab ĂŒhte neljast pĂ”hikaart suunast. Platood on jagatud ruudustikuks, et lihtsustada navigeerimist. NĂ€iteks asukoht vĂ”ib olla 0, 0, P, mis tĂ€hendab, et rover on alumises vasakus nurgas ja suunatud PĂ”hja poole. Roveri juhtimiseks saadab NASA lihtsa tĂ€he stringi. VĂ”imalikud tĂ€hed on 'L', 'R' ja 'M'. 'L' ja 'R' pööravad roverit 90 kraadi vasakule vĂ”i paremale, liikumatult oma praeguselt kohalt. 'M' tĂ€hendab edasi liikuda ĂŒhe ruudupunkti vĂ”rra, sĂ€ilitades samas suuna.
Eeldage, et ruut otse PÔhja (x, y) kohal on (x, y+1).
SISEND:
Sisendi esimene rida on platoodi ĂŒlemise parema nurga koordinaadid, alumise poole koordinaadid eeldatakse olevat 0,0.
ĂlejÀÀnud sisend on teave juba saadetud roverite kohta. Iga roveri jaoks on kaks sisendirida. Esimene rida annab roveri asukoha ja teine rida on juhiste seeria, mis ĂŒtleb roverile, kuidas platood avastada. Asukoht koosneb kahest tĂ€isarvust ja ĂŒhest tĂ€hest, mis on eraldatud tĂŒhikutega ja vastab x ja y koordinaatidele ning roveri suunale.
Iga rover lÔpetatakse jÀrjestikku, mis tÀhendab, et teine rover ei hakka liikuma enne, kui esimene on oma liikumise lÔpetanud.
VĂLJA:
Iga roveri vÀljund peaks olema selle lÔplikud koordinaadid ja suund.
MĂRKUSED:
Lihtsalt rakendada ĂŒlaltoodud nĂ”udeid ja tĂ”estada, et tolmuimeja töötab, kirjutades selle jaoks ĂŒksusi testima.
Kasutajaliidese loomine jÀÀb vÀlja oma ulatusest.
Probleemi lahendamine TDD (Test Driven Development) lÀhenemise jÀrgimisega on eelistatud.
LĂŒhikese aja jooksul on kvaliteet meie jaoks olulisem kui tĂ€ielikkus.
*Ma ei saa jagada ĂŒlesannet, mis mulle saadeti, see on vana ĂŒlesanne, mis anti paar aastat tagasi. Kuid uskuge, pĂ”himĂ”tteliselt on kĂ”ik jÀÀnud samaks.
RĂ”hutan eraldi hindamiskriteeriume. Kui sageli on tekkinud olukord, kus kandidaadi jaoks olulised asjad ei ole hindamise kĂ€igus ĂŒldse tĂ€htsad ja vastupidi. Mitte kĂ”ik ei mĂ”tle sama moodi nagu teie, kuid paljud vĂ”ivad omaks vĂ”tta teie vÀÀrtused ja jĂ€rgida neid, kui need on selgelt kirja pandud. Nii et hindamiskriteeriumitest on kohe selge, et selle etapi kĂ”ige olulisemad oskused on:
- TDD;
- OOP kasutamise oskus ja hooldatava koodi kirjutamine;
- paaristöö oskused
Nii et mind hoiatati, et peaksin nende 1,5 tunni jooksul mĂ”tlema sellele, kuidas ma ĂŒlesannet lahendan, mitte koodi kirjutama. Koodi kirjutame koos.
Kui me kokku saime, rÀÀkisid poisid lĂŒhidalt, kes nad on ja millega nad tegelevad, ning pakkusid, et saaksime arendamisega alustada.
Kogu intervjuu jooksul ei olnud mul kunagi tunnet, et olen intervjuul. On tunne, et arendad koodi meeskonnas. Kui sa mingil hetkel kinni jÀÀd â nad aitavad, nĂ”uavad, arutavad, isegi vaieldavad omavahel, kuidas paremini teha. Intervjuul unustasin, kuidas JUnit 5-s kontrollida, et meetod viskab erandi â nad pakkusid edasi kirjutada testimist, samal ajal kui keegi otsis Google'ist, kuidas seda teha.
Koheselt pĂ€rast intervjuud sain konstruktiivse tagasiside â mis meeldis ja mis mitte. Minu puhul kiideti Sealed klasside kasutamist nulli objekti alternatiivina; et enne koodi kirjutamist kirjutasin pseudokoodi, kuidas ma tahaksin roverit 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 esitlus mistahes teema kohta, mis mind huvitab. Formaat on lihtne ja tuttav: 15-minutiline esitlus, 15-minutiline kĂŒsimuste ja vastuste sessioon.
Valisin Uncle Bobi Clean Architecture'i. Ja jĂ€lle intervjueeris mind paar inimest. See oli minu esimene kogemus esitlemisel inglise keeles ja vĂ”ib-olla, kui ma oleksin stressirohkes olukorras â ma ei oleks sellega toime tulnud. Kuid siiski, mul ei olnud kunagi tunnet, et ma olen intervjuul. KĂ”ik kĂ€ib nagu tavaliselt â rÀÀgin, nad kuulavad hoolikalt. Isegi traditsiooniline kĂŒsimuste ja vastuste sessioon ei olnud nagu intervjuu, oli nĂ€ha, et kĂŒsimusi ei kĂŒsita selleks, et "töötuks" teha, vaid need, mis neid tĂ”eliselt huvitasid minu esituses.
MĂ”ni tund pĂ€rast intervjuud sain tagasisidet â esitluses oli palju kasulikku ning nemad nautisid seda kuulamist tĂ”eliselt.
Etapp 3. Toote kvaliteediga kood
Eelnevalt hoiatades, et see on viimane etapp tehnilistes intervjuudes, paluti mul kodus kood viia tootmisvalmidusse, pĂ€rast mida peaksin saatma koodi ĂŒlevaatamiseks ning mÀÀrama intervjuud, kus ĂŒlesande nĂ”uded muutuvad ja kood vajab kohandamist. Eelnevalt vĂ”in öelda, et koodi ĂŒlevaatus toimub pimesi, ĂŒlevaatajad ei tea ei positsiooni, millele kandidaat kandideerib, ei nĂ€e tema CV-d, isegi mitte tema nime.
Helistamine, ja taas paar poissi ekraani taga. KĂ”ik nagu esimeses intervjuus: peamine on mitte unustada TDD-d, rÀÀkida, mida sa teed ja miks. Kui te pole varem TDD-d praktiseerinud, soovitan kohe alustada, mitte sellepĂ€rast, et see on ettevĂ”tetes vajalik, vaid seetĂ”ttu, et see teeb teie elu oluliselt lihtsamaks, vĂ€hendab stressitaset. Kas mĂ€letate, kuidas pidite hirmsasti otsima debuggerit, et leida viga, mis ilmneb ainult brauseris, kuid mille ĂŒle ei saa te testide abil reproduktsiooni? Kujutage nĂŒĂŒd ette, et peate sellist viga leidma intervjuu ajal â paar halli juuksesĂ€hvatust on garanteeritud. Mida me TDD-st siis saame? Muutsime koodi ja ootamatult avastasime, et testid on punased, ja ei saa esmakordselt aru, kus on viga? Okei, ĂŒtlebime intervjueerijatele "Ups", vajutame Ctrl-Z ja hakkame liikuma vĂ€ikeste sammudega edasi. Ja jah, TDD kasutamine on oskus, mida tuleb endas arendada, oskus liikuda eesmĂ€rgi suunas nii, et testid oleksid pidevalt rohelised, mitte punased pool pĂ€eva, kuna "teie suur refaktoreerimine". See on sama oskus, nagu vĂ”ime kirjutada hooldatavat vĂ”i tootlikku koodi.
Nii et teie koodi muudetavus sÔltub suuresti sellest, kui hea disain teil algselt oli, kui lihtne see on ja kui head on teie testid.
PÀrast intervjuud sain tagasisidet mÔne tunni jooksul. Sel hetkel mÔistsin, et olin sisuliselt lÀbinud ning jÀi veel vaid vÀike samm "Fowleriga kohtumise" suunas.
Etapp 4. Finaal. Piisavalt tehnilisi kĂŒsimusi. Tahame teada, kes sa oled!
TĂ”eliselt rÀÀkides, see kĂŒsimuse esitamise vorm jĂ€tab mind veidi hĂ€mmingusse. Kuidas saab ĂŒhe tunni vestluse jooksul aru saada, milline inimene ma olen? Ja veel enam, kuidas saab seda mĂ”ista, kui ma rÀÀgin mulle mitte emakeeles, ja ausalt öeldes, ĂŒsna kehvas ja kangelaslikus keeles. Varasemates intervjuudes oli minul lihtsam rÀÀkida, kui vastata kĂŒsimustele, ja pĂ”hjuseks oli aktsent. VĂ”imalik, et ĂŒks intervjueerijatest oli aasialane â nende aktsent on, ĂŒtleme nii, Euroopa kĂ”rvale natuke spetsiifilisem. Seega otsustasin vĂ”tta proaktiivse lĂ€henemise â koostada enda kohta esitlus ja intervjuu alguses pakkuda ennast selle esitlusest rÀÀkida. Kui nad nĂ”ustuvad, siis vĂ€hemalt on minuga vĂ€hem kĂŒsimusi, kui nad esialgu lĂŒkkavad mu ettepaneku tagasi â noh, 3 tundi minu elust, mis kulus esitlusele, pole kĂŒll suur hind. Aga mis peaks olema esitlusel? Elulugu â SĂŒndisin seal ja seal, kĂ€isin koolis, lĂ”petasin ĂŒlikooli â kellele see huvitav on?
Kui veidi otsida Thoughtworks'i kultuuri kohta, vÔite leida Martin Fowlers'i artikli [https://martinfowler.com/bliki/ThreePillars.html], kus kirjeldatakse 3 sambat: JÀtkusuutlik Àri, Tarkvara tipptase ja Sotsiaalne Ôiglus.
Eeldame, et Tarkvara tipptasu on juba lÀbi vaadatud. JÀtkub vaid JÀtkusuutliku Àri ja Sotsiaalse Ôiguse demonstreerimine.
Ja ma otsustasin keskenduda viimasele.
Alustasin rÀÀkimisega, miks ThoughtWorks â juba ĂŒlikoolis lugesin Martin Fowlers'i blogi, seega armastus Clean Code'i vastu.
Projekte saab samuti esitleda erinevatest vaatenurkadest. Olen arendanud tarkvara meditsiini jaoks, mis lihtsustas patsientide elu ja kuuldavasti pÀÀstis isegi ĂŒhe elu. Olen arendanud ka tarkvara pankade jaoks, samuti inimeste elude lihtsustamiseks. Eriti kui seda panka kasutab 70% riigi elanikkonnast. Jutt ei ole Sberbankist ega isegi Venemaast.
Soovid teada minu kohta rohkem? Okei. Minu hobi on fotograafia, hoian kaamerat kĂ€es juba 10 aastat, on fotosid, mida ei ole hĂ€bi nĂ€idata. Samuti aitasin ĂŒhel ajal kasside varjupaika: pildistasin kasse, kes vajasid pĂŒsivalt kodu. Ja headest fotodest on kassi kodustamine kindlasti palju lihtsam. Olen ilmselt pildistanud umbes sada kassi đ
LÔppkokkuvÔttes oli 80% esitlusest tÀidetud kassidega.
Vahetult pÀrast esitlust kirjutas HR, et ta ei tea veel intervjuu tulemusi, kuid kogu kontor on kassidest vaimustuses.
LĂ”puks sain tagasisidet â rahuldasin kĂ”iki inimesena.
Kuid HR rÀÀkis lĂ”ppvestluses taktitundeliselt, et sotsiaalne Ă”iglus on vĂ€ga hea ja vajalik, kuid mitte kĂ”ik projektid sellised. Ja kĂŒsis, kas see mind ei hirmuta. KokkuvĂ”ttes, ma natuke ĂŒle pingutasin sotsiaalse Ă”igluse osas, juhtub đ
KokkuvÔte
KokkuvĂ”ttes olen juba mitmeid kuu töödanud Singapurist Thoughtworks'is, nĂ€en, et ka siin paljud ettevĂ”tted vĂ”tavad ĂŒle âparimaid intervjuupraktikaidâ Google'ist, kasutades paberit ja valgeid tahve kodeerimiseks, kuigi töös ei nĂ”uta teadmisi kaugemale Spring'st, Symfony'st, RubyOnRails'st (tooge vajalik vĂ€lja). Insenerid vĂ”tavad nĂ€dala puhkust enne intervjuud, et "valmistuda".
Thoughtworks'is pannakse rÔhk lisaks mÔistlikele nÔuetele kandidaatide suhtes ka jÀrgmistele pÔhimÔtetele:
Intervjueerimise rÔÔm. See kehtib mĂ”lema poole jaoks. TĂ”eliselt, kui soovite saada parimaid talente (kas keegi ei tahaks?), siis intervjuu ei ole turg, kus valitakse orje, vaid nĂ€itus, kus nii tööandja kui kandidaat hindavad ĂŒksteist. Ja kui kandidaadi jaoks seondub ettevĂ”ttega positiivne emotsioon â on tĂ€iesti tĂ”enĂ€oline, et ta valib just selle ettevĂ”tte.
Mitmed intervjueerijad kallutamise vĂ€hendamiseks. Thoughtworks'is on paarist programmeerimine de facto standard. Ja kui seda praktikat saab rakendada teistes valdkondades, pĂŒĂŒab TW seda teha. Igal intervjuu etapil viib lĂ€bi 2 inimest. Nii hinnatakse igat kandidaati minimaalset 8 inimese poolt, ja TW pĂŒĂŒab valida intervjueerijaid erineva taustaga, erinevate suundade (mitte ainult tehnikud) ja soo kohaselt.
LÔpuks tehakse töölevÔtmise otsus vÀhemalt 8 inimese arvamuse pÔhjal, ja kellelgi ei ole vetoÔigust.
Atribuutide pĂ”hine palkamine Kandidaadi valiku asemel, tuginedes sellele, kas kandidaadist meeldib vĂ”i mitte, on iga rolli ja iga etapi jaoks vĂ€lja töötatud vorm, mis sisaldab hindatavaid atribuute. Samuti on soovitatav hinnata mitte teatud oskuse kogemust, vaid vĂ”imet seda rakendada. Seega, kui kandidaadil ei ole olnud vĂ”imalust rakendada mĂ”ningaid oskusi, nagu TDD, kuid siiski pĂŒĂŒab ta seda rakendada, kuulates Ă”ige kasutamise nĂ”uandeid â tal on suur vĂ”imalus intervjuust lĂ€bi minna.
HaridustÔendid pole vajalikud. TW ei nÔua kandidaadilt kohustuslikke sertifikaate vÔi haridust infotehnoloogia valdkonnas. Hinnatakse ainult oskusi.
See on esimene intervjuu, mille jaoks ma ei pidanud valmistuma, kui rÀÀkida vÀlisettevÔtetest. PÀrast iga etappi ei tundnud ma end nagu sidrun, vaid vastupidi, olin Ônnelik, et saan rakendada parimaid praktikaid, et inimesed monitori taga hindavad seda ja rakendavad seda igapÀevaselt.
MĂ”ne kuu möödudes, vĂ”in öelda, et ootused on tĂ€ielikult tĂ€idetud. Mida ThoughtWorks erineb tavalisest ettevĂ”ttest? Tavalises ettevĂ”ttes leiate head arendajad ja toredad inimesed, kuid TW-s on nende kontsentratsioon ĂŒlemÀÀra kĂ”rge.
Kui soovite liituda ThoughtWorks'iga, siis avatud töökohti saab vaadata
Pakun samuti tÀhelepanu pöörata huvitavatele töökohtadele:
Juhtiv tarkvarainsener: , , ,
Vanem tarkvarainsener: , , ,
Tarkvarainsener: , ,
Vanem andmeinsener:
Kvaliteedi analĂŒĂŒtik:
Infrastruktuur: , ,
(Soovin ausalt hoiatada, et link on soovituslik, kui te TW-sse pÀÀsete, siis saan meeldiva boonuse). Valige oma lemmikkontor, pole vaja piirduda ainult Euroopaga, lĂ”puks on TW-l iga 2 aasta jĂ€rel rÔÔm viia teid teise riiki, kuna see on osa ThoughtWorks'i poliitikast, nii levib ja ĂŒhtlustub kultuur.
Ărge kartke esitada kommentaarides kĂŒsimusi vĂ”i paluda mul teid soovitada.
Kui teema tundus huvitav, kirjutan selle kohta, kuidas on töötada ThoughtWorks'is ja kuidas on elada Singapuris.
Allikas: habr.com
