Hoe't ik yn ThoughtWorks kaam as in foarbyldynterview

Hoe't ik yn ThoughtWorks kaam as in foarbyldynterview

Liket it jo net frjemd dat as jo fan baan feroarje en de needsaak ûntstiet om in ynterview troch te jaan, it earste ding dat jo tinke is "jo moatte jo tariede op it ynterview." Los problemen op HackerRank, lês Crack it kodearring ynterview, ûnthâld hoe't ArrayList wurket en hoe't it ferskilt fan LinkedList. O ja, se kinne ek freegje oer sortearjen, en it soe fansels net profesjoneel wêze om te sizzen dat flugge sortearring nei alle gedachten de bêste kar wêze soe.
Mar wachtsje, jo programmearje 8 oeren deis, losse nijsgjirrige en net-triviale problemen op, en op jo nije baan sille jo itselde ding dwaan, plus of min. Mar nettsjinsteande, om in ynterview troch te jaan, moatte jo op ien of oare manier ekstra tariede, jo deistige feardigens net iens skerpe, mar wat leare dat jo net nedich hawwe by jo hjoeddeistige baan en net wierskynlik nedich binne by jo folgjende. Tsjin jo beswieren dat de kompjûterwittenskip ús yn it bloed sit, en as jo ús midden yn 'e nacht wekker meitsje, binne wy ​​ferplichte om mei de eagen ticht op in kessensloop in kuier om 'e breedte fan in beam te skriuwen sûnder sels it bewustwêzen te krijen, ik sil antwurdzje dat as ik krij in baan yn it sirkus, en myn wichtichste de trúk soe wêze krekt dit - dan miskien ja, ik mei iens. Dizze feardigens moat wurde hifke.

Mar wêrom feardigens testen dy't irrelevant binne foar jo hjoeddeistige baan? Krekt omdat it moade waard? Omdat Google dit docht? Of om't jo takomstige teamlieder alle sortearmetoaden moast leare foar it ynterview en no leaut hy dat "elke goede programmeur de ymplemintaasje fan it finen fan in palindroom yn in snaar út it hert moat witte."

No, jo binne net Google (c). Wat Google kin betelje, kinne gewoane bedriuwen net. Google, nei it analysearjen fan de gegevens fan har meiwurkers, kaam ta de konklúzje dat yngenieurs mei in Olympiade-eftergrûn goed binne yn it omgean mei har spesifike taken. Boppedat kinne se troch it ûntwerpen fan har seleksjeproses it risiko te nimmen dat se miskien net in pear goede yngenieurs ynhiere, om't se wiskundige problemen net maklik kinne kreakje. Mar dit is gjin probleem foar har, d'r binne in protte minsken dy't wolle wurkje by Google, de posysje sil sletten wurde.
Litte wy no út it finster sjen, en as de yngenieurs dy't foar jo wurkje wolle foar jo kantoar noch gjin tintekamp opset hawwe, en jo ûntwikkelders sykje faker op stackoverflow foar wat folgjende Spring-annotaasje moat wurde ynstalleare, leaver as de intricacies fan ranglist algoritmen, dan, blykber, It is tiid foar jo om te tinken oer oft jo moatte kopiearje Google.

No, as Google dizze kear mislearre en gjin antwurd joech, wat moatte jo dwaan? Kontrolearje krekt wat de ûntwikkelder sil dwaan op it wurk. Wat wurdearje jo yn ûntwikkelders?
Meitsje kritearia foar wa't jo wolle hiere en ûntwikkelje tests dy't dizze feardigens krekt testen.

ThoughtWorks

Wat hat ThoughtWorks hjirmei te krijen? It wie hjir dat ik in foarbyld fan in foarbyldinterview foar mysels fûn. Wa binne ThoughtWorks? Koartsein, dit is in High-End konsultaasjebedriuw mei kantoaren oer de hiele wrâld, fan Sina, Singapore oant de Amerikaanske kontininten, dy't al sa'n 25 jier konsultearret op it mêd fan ûntwikkeling, hat in eigen Science-divyzje, ûnder lieding fan Martin Fowler. As jo ​​​​sykje nei in list mei 10 boeken dy't jo moatte lêze foar in software-yngenieur, dan sille miskien 2-3 fan har wurde skreaun troch de jonges fan ThoughtWorks, lykas Refactoring By Martin Fowler en Building Microservices: Designing Fine-Grained Systems troch Sam Newman of Building Evolutionary Architectures
troch Patrick Kua, Rebecca Parsons, Neal Ford.

It bedriuw fan it bedriuw is boud op it leverjen fan frij djoere tsjinsten, mar de klant betellet foar fenomenale kwaliteit, dy't bestiet út ekspertize, ynterne noarmen en, fansels, minsken. Dêrom is it ynhieren fan de juste minsken hjir fan wêzentlik belang.
Wat foar minsken hawwe gelyk? Fansels binne d'r ferskate foar elkenien. ThoughtWorks hat bepaald dat de wichtichste kritearia foar har bedriuwsmodel foar ûntwikkelders binne:

  • Mooglikheid om te ûntwikkeljen yn pearen. It is fermogen, net ûnderfining of feardigens. Nimmen ferwachtet dat minsken komme dy't al 5 jier Pair-programmearring oefenje, Mar ûntfanklik wêze foar de mieningen fan oaren en harkje kinne is in needsaaklike feardigens.
  • Mooglikheid om tests te skriuwen, en by útstek oefenje TDD
  • Begryp SOLID en OOP en kinne se tapasse.
  • Presentearje jo miening. As adviseur moatte jo wurkje mei de ûntwikkelders fan 'e klant, mei oare adviseurs, en der is net folle foardiel as in persoan wit hoe't jo wat goed dwaan, mar is folslein net yn steat om it oer te bringen nei de rest fan it team.

No is it wichtich om dizze bepaalde feardichheden yn 'e kandidaat te evaluearjen. En hjir wol ik prate oer myn ûnderfining fan ynterviewen by ThoughtWorks. Ik sil daliks sizze dat ik nei Singapore gie en trochjûn, mar it wervingsproses is ferienige en sil net folle ferskille fan lân nei lân.

Stage 0. HR

Lykas faaks bart, in ynterview fan 20 minuten mei HR. Ik sil der net oer neitinke, ik sil gewoan sizze dat ik noch noait in HR-persoan haw moete dy't 15 minuten koe prate oer de ûntwikkelingskultuer yn it bedriuw, wêrom't se TDD brûke, wêrom pearprogrammearring. Gewoanlik wolle HR's oer dizze fraach en sizze dat har proses normaal is: ûntwikkelders ûntwikkelje, testers testen, managers ride.

Fase 1. Hoe goed binne jo by OOP, TDD?

1.5 oeren foar it begjin fan it ynterview krige ik in taak om in Mars Rover-simulator te meitsjen.

Mars rover missyIn squad fan robotyske rovers sil troch NASA wurde lâne op in plato op Mars. Dit plato, dat nijsgjirrich rjochthoekich is, moat troch de rovers navigearre wurde sadat har kamera's oan board in folslein sicht krije kinne fan it omlizzende terrein om werom te stjoeren nei de ierde. De posysje en lokaasje fan in rover wurdt fertsjintwurdige troch in kombinaasje fan x- en y-koördinaten en in letter dy't ien fan 'e fjouwer kardinale kompaspunten fertsjintwurdiget. It plato is opdield yn in raster om de navigaasje te ferienfâldigjen. In foarbyldposysje kin 0, 0, N wêze, wat betsjut dat de rover yn 'e linker ûnderhoeke is en nei it noarden stiet. Om in rover te kontrolearjen, stjoert NASA in ienfâldige string fan letters. De mooglike letters binne 'L', 'R' en 'M'. 'L' en 'R' meitsje dat de rover respektivelik 90 graden lofts of rjochts draait, sûnder te bewegen fan syn hjoeddeistige plak. 'M' betsjut ien rasterpunt foarút gean, en deselde koptekst behâlde.
Stel dat it plein direkt noard fan (x, y) is (x, y+1).
YNFIER:
De earste line fan ynfier is de boppeste rjochts koördinaten fan it plato, de legere-links koördinaten wurde oannommen te wêzen 0,0.
De rest fan de ynfier is ynformaasje oer de rovers dy't ynset binne. Elke rover hat twa rigels fan ynfier. De earste rigel jout de posysje fan 'e rover, en de twadde rigel is in searje ynstruksjes dy't de rover fertelle hoe't hy it plato moat ferkenne. De posysje is opboud út twa hiele getallen en in letter skieden troch spaasjes, oerienkommende mei de x- en y-koördinaten en de oriïntaasje fan 'e rover.
Elke rover sil foltôge wurde foltôge, wat betsjut dat de twadde rover net begjint te bewegen oant de earste klear is mei bewegen.
OUTPUT:
De útfier foar elke rover moat syn definitive koördinaten en koptekst wêze.
NOTES:
Implementearje gewoan de boppesteande easken en bewize dat in stofsûger wurket troch ienheidstests foar te skriuwen.
It oanmeitsjen fan elke foarm fan brûkersynterface is bûten it berik.
It probleem oplosse troch in TDD (Test Driven Development) oanpak te folgjen sil de foarkar hawwe.
Yn de koarte beskikbere tiid binne wy ​​mear soargen oer kwaliteit dan folsleinens.
*Ik kin de opdracht dy't my stjoerd is net pleatse, dit is in âlde opdracht dy't ferskate jierren lyn jûn is. Mar leau my, yn prinsipe bliuwt alles gelyk.

Ik wol foaral omtinken freegje foar de evaluaasjekritearia. Hoefolle kearen binne jo in situaasje tsjinkaam wêryn dingen dy't wichtich binne foar in kandidaat folslein ûnbelangryk binne tidens de kontrôle en oarsom? Net elkenien tinkt deselde manier as jo, mar in protte kinne jo wearden akseptearje en folgje as se dúdlik wurde oanjûn. Sa, út de beoardieling kritearia is it fuortendaliks dúdlik dat de wichtichste feardichheden yn dit stadium binne

  • TDD;
  • Mooglikheid om OOP te brûken en ûnderhâldbere koade te skriuwen;
  • pear programmearring kapasiteiten

Dat, ik waard warskôge om dy 1.5 oeren te besteegjen oan it tinken oer hoe't ik de taak soe dwaan, ynstee fan koade te skriuwen. Wy sille de koade tegearre skriuwe.

Doe't wy oan 'e telefoan krigen, fertelden de jonges ús koart wa't se binne en wat se dogge en oanbean om te begjinnen mei ûntwikkeling.

Under it hiele ynterview hie ik nea it gefoel dat ik ynterviewd waard. D'r is in gefoel dat jo koade yn in team ûntwikkelje. As jo ​​earne fêstsitten, helpe se, advisearje, beprate, sprekke sels mei-inoar oer hoe't it it bêste kin. By it ynterview fergeat ik hoe't ik yn JUnit 5 kontrolearje kin dat in metoade in útsûndering smyt - se biede oan om troch te gean mei it skriuwen fan 'e test, wylst ien fan har googlede hoe't it te dwaan.

Letterlik in pear oeren nei it ynterview krige ik konstruktive feedback - wat ik leuk fûn en wat net. Yn myn gefal, ik waard priizge foar in gebrûk Sealed klassen as in alternatyf foar de nul foarwerp; foar it feit dat ik foardat it skriuwen fan de koade yn pseudokoade skreau hoe't ik de rover kontrolearje soe, en krige dêrmei in skets fan 'e klassen, teminsten dejingen dy't belutsen binne by de API fan 'e robot.

Stap 2: Fertel it ús

In wike foar it ynterview waard ik frege om in presintaasje te meitsjen oer elk ûnderwerp dat my ynteressearre. It formaat is ienfâldich en fertroud: 15 minuten presintaasje, 15 minuten beäntwurdzjen fan fragen.
Ik keas Clean Architecture fan omke Bob. En wer waard ik ynterviewd troch in pear minsken. Dit wie myn earste ûnderfining fan presintearjen yn it Ingelsk, en, miskien, as ik yn in stressfolle situaasje west hie, soe ik it net kinnen hawwe. Mar wer, ik hie nea ien kear it gefoel dat ik by in ynterview wie. Alles is as gewoanlik - ik sis har, se harkje goed. Sels de tradisjonele fraach en antwurd sesje wie net as in ynterview; it wie dúdlik dat de fragen net waarden frege om te "sinken", mar dejingen dy't har wirklik ynteressearre yn myn presintaasje.

In pear oeren nei it ynterview krige ik feedback - de presintaasje wie heul nuttich en se genoaten wirklik fan harkjen.

Stage 3. Production Quality Code

Nei't ik warskôge dat dit de lêste etappe fan technyske ynterviews wie, waard ik frege om de koade thús te bringen nei in produksje-klear steat, stjoer dan de koade foar beoardieling en skema ynterviews wêryn de easken foar de taak feroarje en de koade soe feroarje easkje modifikaasje. Foarútsjen kin ik sizze dat de koadebeoardieling blyn wurdt útfierd, de resinsinten witte net de funksje wêrfoar de kandidaat sollisitearret, se sjogge syn CV net, se sjogge net iens syn namme.

De telefoan gie, en wer wiene d'r in pear jonges oan 'e oare kant fan 'e monitor. Alles is itselde as by it earste ynterview: it wichtichste ding is net te ferjitten oer TDD, fertel wat jo dogge en wêrom. As jo ​​​​tDD net earder hawwe oefene, dan advisearje ik it direkt te begjinnen, net om't it nedich is yn bedriuwen, mar om't it jo libben signifikant ferienfâldigt, jo stressnivo fermindert as jo wolle. Unthâld hoe't jo moasten frantically sykje mei in debugger foar in flater dy't kin allinnich wurde reprodusearre fia de browser, mar do kinst net reprodusearje it mei tests? Stel jo no foar dat jo sa'n flater sille moatte fange yn in ynterview - jo binne garandearre in pear grize hieren. Wat krije wy mei TDD? Wy feroare de koade en realisearre ûnferwachts dat no de tests read binne, mar wat is de flater dy't wy de earste kear net kinne útfine? Okee, wy sizze "Oops" tsjin de ynterviewers, drukke op Ctrl-Z en begjinne lytse stappen foarút te nimmen. En ja, jo moatte de mooglikheid ûntwikkelje om te ûntwikkeljen mei TDD yn josels, de mooglikheid om nei it doel te gean, sadat jo testen permanint grien binne, en in heale dei net read, om't "jo hawwe in protte refactoring." Dit is krekt deselde feardigens as it skriuwen fan ûnderhâldbere koade, of it skriuwen fan produktive koade.

Dat, hoe goed jo koade kin wurde feroare hinget ôf fan hokker ûntwerp jo yn gedachten hawwe om te begjinnen, hoe ienfâldich it is, en hoe goed jo tests binne.

Nei it ynterview krige ik binnen in pear oeren feedback. Op dit stadium realisearre ik dat ik hast troch wie en d'r wie heul min oer oant ik "Fowler moete."

Fase 4. Finale. Genôch technyske fragen. Wy wolle witte wa't jo binne!

Om earlik te wêzen, wie ik wat fernuvere troch dizze formulearring fan 'e fraach. Hoe kinne jo begripe hokker soarte fan persoan ik bin yn ien oere fan petear? En mear noch, hoe kinne jo dat begripe as ik in taal praat dy't net myn memmetaal is, en, earlik sein, tige swak en tongblier. Yn eardere ynterviews wie it foar my persoanlik makliker om te praten as fragen te beantwurdzjen, en it aksint wie de skuld. Op syn minst ien fan 'e ynterviewers wie Aziatyske - en har aksint, no, litte wy gewoan sizze, is wat spesifyk foar it Europeeske ear. Dêrom besleat ik in proaktive oanpak te nimmen - in presintaasje oer mysels tariede en oan it begjin fan it ynterview biede om mei dizze presintaasje oer mysels te praten. As se it iens binne, dan binne d'r teminsten minder fragen foar my; as se it oanbod ôfwize, no, 3 oeren fan myn libben bestege oan in presintaasje is net sa'n hege priis. Mar wat moatte jo skriuwe yn jo presintaasje? Biografy - Berne dêr, op dat stuit, gie nei skoalle, studearre ôf oan de universiteit - mar wa makket it út?

As jo ​​​​in bytsje Google oer de Thoughtworks-kultuer fine, sille jo in artikel fine fan Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html] dy't de 3 pylders beskriuwt: Duorsum bedriuw, Software Excellence, en Social Justice.

Lit ús oannimme dat Software Excellence al foar my kontrolearre is. It bliuwt om Duorsume Business en Sosjaal Justysje sjen te litten.

Boppedat besleat ik my op dat lêste te rjochtsjen.

Om te begjinnen, fertelde ik him wêrom ThoughtWorks - ik lies it blog fan Martin Fowler werom op 'e kolleezje, dus myn leafde foar Clean code.

Projekten kinne ek út ferskate hoeken presintearre wurde. Hy ûntwikkele ek software foar medisinen dy't it libben fan pasjinten ferienfâldige, en sels, neffens geroften, ien libben rêde. Ik ûntwikkele ek software foar banken, dy't ek it libben makliker makke foar boargers. Benammen as dizze bank wurdt brûkt troch 70% fan it lân syn befolking. Dit is net oer Sberbank en net iens oer Ruslân.

Wolle jo witte oer my? OK. Myn hobby is fotografy, op de ien of oare manier haw ik al sa'n 10 jier in kamera yn hannen, der binne foto's dy't ik net te skamje om te sjen litte. Ek holp ik in kear in kattenopfang: ik fotografearre katten dy't in permanint thús nedich wiene. En mei goede foto's is it folle makliker om in kat te pleatsen. Ik haw wierskynlik hûndert katten fotografearre :)

Uteinlik wie 80% fan myn presintaasje fol mei katten.

Fuort nei de presintaasje skreau HR my dat hy de resultaten fan it ynterview noch net wist, mar it hiele kantoar wie al ûnder de yndruk fan de katten.

Uteinlik wachte ik op feedback - ik stelde elkenien as persoan tefreden.

Mar tidens it lêste petear sei HR taktysk dat Sosjale Gerjochtigheid heul goed en needsaaklik is, mar net alle projekten binne sa. En hy frege oft it my bang wie. Yn 't algemien gie ik in bytsje oerboard mei Social Justice, it bart :)

It resultaat

As gefolch, ik wurke no ferskate moannen yn Singapore by Thoughtworks, en ik sjoch dat hjir te folle bedriuwen "bêste ynterviewpraktiken" fan Google oannimme, blêden en Whiteboard brûke foar kodearring, nettsjinsteande mear kennis as Spring, Symfony, RubyOnRails (ûnderstreekje wat nedich is) is net fereaske yn it wurk. Yngenieurs nimme in wike frij foar in ynterview om "tariede".

By Thoughtworks steane, neist adekwate easken foar de kandidaat, de folgjende prinsipes op 'e foargrûn:
Joy of Interviewing. Boppedat, foar beide kanten. Yndied, as jo it bêste personiel krije wolle (en wa wol net?), Dan is in ynterview gjin merk dêr't slaven keazen wurde, mar in show wêr't sawol de wurkjouwer as de kandidaat inoar evaluearje. En as in kandidaat assosjearret noflike emoasjes mei in bedriuw, is it wierskynlik dat hy sil kieze dit bysûndere bedriuw

Meardere ynterviewers om bias te ferminderjen. By Thoughtworks is pearprogrammearring de de facto standert. En as dizze praktyk tapast wurde kin op oare gebieten, besiket TW dat te dwaan. Yn elke poadium wurdt it ynterview útfierd troch 2 minsken. Sa wurdt elke persoan beoardiele troch op syn minst 8 minsken, en TW besiket ynterviewers te selektearjen mei ferskate eftergrûnen, ferskillende rjochtingen (net allinich technyk) en geslacht.

Uteinlik sil it ynhierbeslút wurde makke op basis fan 'e mieningen fan op syn minst 8 minsken, en gjinien hat in beslissende stim.

Attribute-basearre ynhier Ynstee fan in beslút te nimmen basearre op de likes of dislikes fan in kandidaat, wurdt in formulier ûntwikkele foar elke rol en elke poadium dy't de attributen omfettet dy't wurde beoardiele. Tagelyk, by it beoardieljen, wurdt it tige oanrikkemandearre om net ûnderfining yn in bepaalde feardigens te evaluearjen, mar de mooglikheid om it ta te passen. Dus, as in kandidaat gjin feardichheden, lykas TDD, kin tapasse, mar hy besiket se lykwols ta te passen, harket nei advys oer hoe't se se goed brûke kinne, hat hy alle kâns om it petear troch te gean.

Underwiis sertifikaten net fereaske TW fereasket gjin sertifikaasje of oplieding yn Computer Science. Allinnich feardichheden wurde beoardiele.

Dit is it earste ynterview dat ik haw hân mei bûtenlânske bedriuwen dêr't ik my net op tariede hoegde. Nei elke etappe fielde ik my net útput, mar krekt oarsom, ik wie bliid dat ik de bêste praktiken tapassen koe, dat minsken oan 'e oare kant fan' e monitor it wurdearre en se elke dei tapasse.

Nei ferskate moannen kin ik sizze dat myn ferwachtingen folslein waarden foldien. Hoe is ThoughtWorks oars fan in gewoan bedriuw? Yn in gewoan bedriuw kinne jo goede ûntwikkelders en aardige minsken fine, mar by TW is har konsintraasje fan 'e hitlisten.

As jo ​​​​ynteressearre binne om mei te dwaan oan ThoughtWorks, kinne jo ús iepen posysjes besjen hjir
Ik stel ek foar omtinken te jaan oan nijsgjirrige fakatueres:
Lead Software Engineer: Dútslân, Londen, Madrid, Сингапур
Senior Software Engineer: Sydney, Dútslân, Manchester, Bangkok
Software-technikus: Sydney, Barcelona, Milan
Senior Data Engineer: Milan
Kwaliteit Analyst: Dútslân China
Ynfrastruktuer: Dútslân, Londen, Sily
(Ik wol jo earlik warskôgje dat de keppeling in ferwizingslink is, as jo nei TW geane, krij ik in moaie bonus). Kies in kantoar dat jo leuk fine, jo hoege jo net te beheinen ta Europa, ommers, elke 2 jier sil TW jo graach nei in oar lân ferpleatse, om't ... dit is ûnderdiel fan it ThoughtWorks-belied, sadat de kultuer ferspraat en homogenisearre wurdt.

Fiel jo frij om fragen te stellen yn 'e opmerkings of freegje my foar oanbefellings.
As it ûnderwerp ynteressant liket, sil ik skriuwe oer hoe't it is om te wurkjen by ThoughtWorks en wat it libben is yn Singapore.

Boarne: www.habr.com

Add a comment