Hvordan jeg kom inn i ThoughtWorks eller et eksempelintervju

Hvordan jeg kom inn i ThoughtWorks eller et eksempelintervju

Virker det ikke rart for deg at nĂ„r du skal bytte jobb og behovet oppstĂ„r for Ă„ bestĂ„ et intervju, er det fĂžrste du tenker "du mĂ„ forberede deg til intervjuet." LĂžs problemer pĂ„ HackerRank, les Crack the coding interview, memorer hvordan ArrayList fungerer og hvordan den skiller seg fra LinkedList. Å ja, de kan ogsĂ„ spĂžrre om sortering, og det vil Ă„penbart vĂŠre uprofesjonelt Ă„ si at rask sortering mest sannsynlig vil vĂŠre det beste valget.
Men vent, du programmerer 8 timer om dagen, lÞser interessante og ikke-trivielle problemer, og pÄ den nye jobben din vil du gjÞre det samme, pluss eller minus. Men ikke desto mindre, for Ä bestÄ et intervju, mÄ du pÄ en eller annen mÄte forberede deg i tillegg, ikke engang finpusse de daglige ferdighetene dine, men lÊre noe du ikke trengte pÄ din nÄvÊrende jobb, og som neppe vil trenge pÄ din neste. Til dine innvendinger om at informatikk er i blodet vÄrt, og hvis du vekker oss midt pÄ natten, er vi forpliktet til Ä skrive med lukkede Þyne pÄ et putevar en tur rundt i bredden av et tre uten engang Ä komme til bevissthet, vil svare at hvis jeg fÄr jobb i sirkuset, og trikset mitt ville vÊrt akkurat dette - sÄ kanskje ja, jeg er enig. Denne ferdigheten mÄ testes.

Men hvorfor teste ferdigheter som er irrelevante for din nÄvÊrende jobb? Bare fordi det ble mote? Fordi Google gjÞr dette? Eller fordi din fremtidige teamleder mÄtte lÊre alle sorteringsmetodene fÞr intervjuet, og nÄ mener han at «enhver god programmerer mÄ kunne utenat implementeringen av Ä finne et palindrom i en streng».

Vel, du er ikke Google (c). Det Google har rÄd til, kan ikke vanlige selskaper. Google, etter Ä ha analysert dataene til sine ansatte, kom til den konklusjonen at ingeniÞrer med olympiadebakgrunn er gode til Ä hÄndtere sine spesifikke oppgaver. Ved Ä designe utvelgelsesprosessen kan de dessuten tillate seg Ä ta risikoen for at de kanskje ikke ansetter noen fÄ gode ingeniÞrer fordi de ikke lett kan lÞse matematiske problemer. Men dette er ikke et problem for dem, det er mange som Þnsker Ä jobbe hos Google, stillingen vil bli nedlagt.
La oss nÄ se ut av vinduet, og hvis ingeniÞrene som Þnsker Ä jobbe for deg foran kontoret ditt ennÄ ikke har satt opp en teltleir, og utviklerne dine ser oftere pÄ stackoverflow for hva neste vÄrkommentar mÄ installeres, i stedet for vanskelighetene med rangeringsalgoritmer, sÄ er det tilsynelatende pÄ tide at du tenker pÄ om du bÞr kopiere Google.

Vel, hvis Google denne gangen mislyktes og ikke ga noe svar, hva bÞr du gjÞre? Sjekk nÞyaktig hva utvikleren vil gjÞre pÄ jobben. Hva verdsetter du hos utviklere?
Lag kriterier for hvem du Ăžnsker Ă„ ansette og utvikle tester som tester akkurat disse ferdighetene.

Thought

Hva har ThoughtWorks med dette Ä gjÞre? Det var her jeg fant et eksempel pÄ et modellintervju for meg selv. Hvem er ThoughtWorks? Kort fortalt er dette et High-End konsulentselskap med kontorer over hele verden, fra Kina, Singapore til de amerikanske kontinentene, som har drevet rÄdgivning innen utvikling i ca. 25 Är, har sin egen Science-divisjon, ledet av Martin Fowler. Hvis du ser etter en liste over 10 mÄ-lese-bÞker for en programvareingeniÞr, sÄ vil kanskje 2-3 av dem vÊre skrevet av gutta fra ThoughtWorks, som Refactoring By Martin Fowler og Building Microservices: Designing Fine-Grained Systems av Sam Newman eller Building Evolutionary Architectures
av Patrick Kua, Rebecca Parsons, Neal Ford.

Selskapets virksomhet er bygget pÄ Ä levere ganske dyre tjenester, men kunden betaler for fenomenal kvalitet, som bestÄr av kompetanse, interne standarder og selvfÞlgelig mennesker. Derfor er det viktig Ä ansette de rette personene her.
Hva slags mennesker har rett? SelvfĂžlgelig er det forskjellige for alle. ThoughtWorks har bestemt at de viktigste kriteriene for deres forretningsmodell for utviklere er:

  • Evne til Ă„ utvikle seg i par. Det er evne, ikke erfaring eller ferdighet. Ingen forventer at folk som har praktisert parprogrammering i 5 Ă„r vil komme. Men Ă„ vĂŠre mottakelig for andres meninger og Ă„ kunne lytte er en nĂždvendig ferdighet.
  • Evne til Ă„ skrive tester, og ideelt sett Ăžve pĂ„ TDD
  • ForstĂ„ SOLID og OOP og kunne anvende dem.
  • Presenter din mening. Som konsulent mĂ„ du jobbe med byggherrens utviklere, med andre konsulenter, og det er ikke mye nytte om en person vet hvordan man gjĂžr noe godt, men er helt ute av stand til Ă„ formidle det til resten av teamet.

NĂ„ er det viktig Ă„ evaluere disse spesielle ferdighetene hos kandidaten. Og her vil jeg fortelle om min erfaring med Ă„ intervjue hos ThoughtWorks. Jeg vil si med en gang at jeg dro til Singapore og bestod, men rekrutteringsprosessen er enhetlig og vil ikke variere mye fra land til land.

Trinn 0. HR

Som ofte skjer, et 20-minutters intervju med HR. Jeg skal ikke dvele ved det, jeg vil bare si at jeg aldri har mÞtt en HR-person som kunne snakke i 15 minutter om utviklingskulturen i selskapet, hvorfor de bruker TDD, hvorfor parprogrammering. Vanligvis vil HR-er pÄ dette spÞrsmÄlet og si at prosessen deres er normal: utviklere utvikler, testere tester, ledere kjÞrer.

Trinn 1. Hvor god er du i OOP, TDD?

1.5 time fĂžr intervjustart fikk jeg tilsendt en oppgave om Ă„ lage en Mars Rover-simulator.

Mars rover oppdragEn gruppe med robotrovere skal landes av NASA pÄ et platÄ pÄ Mars. Dette platÄet, som er merkelig rektangulÊrt, mÄ navigeres av roverne slik at kameraene deres ombord kan fÄ en fullstendig oversikt over det omkringliggende terrenget for Ä sende tilbake til jorden. En rovers posisjon og plassering er representert av en kombinasjon av x- og y-koordinater og en bokstav som representerer ett av de fire kardinalkompasspunktene. PlatÄet er delt opp i et rutenett for Ä forenkle navigeringen. Et eksempelposisjon kan vÊre 0, 0, N, som betyr at roveren er nederst i venstre hjÞrne og vendt mot nord. For Ä kontrollere en rover sender NASA en enkel rekke med bokstaver. De mulige bokstavene er 'L', 'R' og 'M'. 'L' og 'R' fÄr roveren til Ä spinne henholdsvis 90 grader til venstre eller hÞyre, uten Ä flytte seg fra det nÄvÊrende stedet. 'M' betyr Ä gÄ ett rutenettpunkt fremover, og opprettholde samme kurs.
Anta at kvadratet rett nord fra (x, y) er (x, y+1).
INNGANG:
Den fÞrste inndatalinjen er de Þvre hÞyre koordinatene til platÄet, de nedre venstre koordinatene antas Ä vÊre 0,0.
Resten av innspillet er informasjon knyttet til rovere som er utplassert. Hver rover har to inngangslinjer. Den fÞrste linjen viser roverens posisjon, og den andre linjen er en serie instruksjoner som forteller roveren hvordan han skal utforske platÄet. Posisjonen bestÄr av to heltall og en bokstav atskilt med mellomrom, tilsvarende x- og y-koordinatene og roverens orientering.
Hver rover vil bli ferdig sekvensielt, noe som betyr at den andre roveren ikke begynner Ă„ bevege seg fĂžr den fĂžrste er ferdig med Ă„ bevege seg.
PRODUKSJON:
Utgangen for hver rover skal vĂŠre dens endelige koordinater og kurs.
NB:
Bare implementer kravene ovenfor og bevis at en stĂžvsuger fungerer ved Ă„ skrive enhetstester for den.
Å lage noen form for brukergrensesnitt er utenfor omfanget.
Å lĂžse problemet ved Ă„ fĂžlge en TDD (Test Driven Development) tilnĂŠrming vil bli foretrukket.
PĂ„ den korte tiden som er tilgjengelig, er vi mer opptatt av kvalitet enn fullstendighet.
*Jeg kan ikke legge ut oppgaven som ble sendt til meg, dette er en gammel oppgave som ble gitt for flere Är siden. Men tro meg, i utgangspunktet forblir alt det samme.

Jeg vil spesielt gjÞre oppmerksom pÄ evalueringskriteriene. Hvor mange ganger har du vÊrt i en situasjon hvor ting som er viktige for en kandidat er helt uviktige under tilsynet og omvendt. Ikke alle tenker pÄ samme mÄte som deg, men mange kan akseptere og fÞlge verdiene dine hvis de er tydelig uttalt. SÄ fra evalueringskriteriene er det umiddelbart klart at de viktigste ferdighetene pÄ dette stadiet er

  • TDD;
  • Evne til Ă„ bruke OOP og skrive vedlikeholdbar kode;
  • par programmeringsevner

SÄ jeg ble advart om Ä bruke de 1.5 timene pÄ Ä tenke pÄ hvordan jeg skulle gjÞre oppgaven, i stedet for Ä skrive kode. Vi skal skrive koden sammen.

Da vi kom pĂ„ telefonen fortalte gutta oss kort hvem de er og hva de gjĂžr og tilbĂžd oss ​​Ä starte utviklingen.

Under hele intervjuet hadde jeg aldri en eneste gang fÞlelsen av at jeg ble intervjuet. Det er en fÞlelse av at du utvikler kode i et team. Hvis du blir sittende fast et sted, hjelper de, gir rÄd, diskuterer, til og med argumenterer med hverandre om hvordan det best kan gjÞres. PÄ intervjuet glemte jeg hvordan jeg sjekket i JUnit 5 at en metode gir et unntak - de tilbÞd seg Ä fortsette Ä skrive testen, mens en av dem googlet hvordan de skulle gjÞre det.

Bokstavelig talt noen timer etter intervjuet fikk jeg konstruktive tilbakemeldinger - hva jeg likte og hva jeg ikke likte. I mitt tilfelle fikk jeg ros for Ă„ bruke Sealed-klasser som et alternativ til null-objektet; for det faktum at jeg fĂžr jeg skrev koden skrev i pseudokode hvordan jeg Ăžnsker Ă„ styre roveren, og fikk dermed en skisse av klassene, i hvert fall de som er involvert i robotens API.

Trinn 2: Fortell oss

En uke fÞr intervjuet ble jeg bedt om Ä forberede en presentasjon om ethvert tema som interesserte meg. Formatet er enkelt og kjent: 15 minutter presentasjon, 15 minutter svar pÄ spÞrsmÄl.
Jeg valgte Clean Architecture av onkel Bob. Og igjen ble jeg intervjuet av et par personer. Dette var min fÞrste erfaring med Ä presentere pÄ engelsk, og kanskje, hvis jeg hadde vÊrt i en stressende situasjon, ville jeg ikke ha klart Ä takle det. Men igjen, jeg hadde aldri fÞlelsen av at jeg var pÄ et intervju. Alt er som vanlig - jeg forteller dem, de lytter nÞye. Selv den tradisjonelle spÞrsmÄl og svar-sesjonen var ikke som et intervju; det var tydelig at spÞrsmÄlene ikke ble stilt for Ä "synke", men de som virkelig interesserte dem i presentasjonen min.

Et par timer etter intervjuet fikk jeg tilbakemelding – presentasjonen var veldig nyttig og de likte virkelig Ă„ lytte.

Trinn 3. Produksjonskvalitetskode

Etter Ä ha advart om at dette var siste fase av tekniske intervjuer, ble jeg bedt om Ä bringe koden hjemme til en produksjonsklar tilstand, deretter sende koden for gjennomgang og planlegge intervjuer der kravene til oppgaven ville endres og koden ville krever modifikasjon. NÄr jeg ser fremover, kan jeg si at kodegjennomgangen gjennomfÞres i blinde, anmelderne vet ikke hvilken stilling kandidaten sÞker pÄ, de ser ikke CV-en hans, de ser ikke engang navnet hans.

Telefonen ringte, og igjen var det et par karer pÄ den andre siden av skjermen. Alt er det samme som ved det fÞrste intervjuet: det viktigste er ikke Ä glemme TDD, fortell hva du gjÞr og hvorfor. Hvis du ikke har praktisert TDD fÞr, sÄ anbefaler jeg Ä begynne Ä gjÞre det umiddelbart, ikke fordi det er nÞdvendig i bedrifter, men fordi det forenkler livet ditt betydelig, reduserer stressnivÄet ditt om du vil. Husker du hvordan du febrilsk mÄtte sÞke med en debugger etter en feil som bare kan reproduseres gjennom nettleseren, men du kan ikke reprodusere den med tester? Tenk deg nÄ at du mÄ ta en slik feil under et intervju - du er garantert et par grÄ hÄr. Hva fÄr vi med TDD? Vi endret koden og innsÄ uventet at nÄ er testene rÞde, men hva er feilen vi ikke kan finne ut fÞrste gang? Ok, vi sier "Oops" til intervjuerne, trykker Ctrl-Z og begynner Ä ta smÄ skritt fremover. Og ja, du mÄ utvikle evnen til Ä utvikle deg ved Ä bruke TDD i deg selv, evnen til Ä gÄ mot mÄlet slik at testene dine er permanent grÞnne, og ikke rÞde pÄ en halv dag, fordi "du har mye refactoring." Dette er nÞyaktig samme ferdighet som Ä skrive vedlikeholdbar kode, eller skrive produktiv kode.

SĂ„ hvor godt koden din kan endres avhenger av hvilket design du har i tankene til Ă„ begynne med, hvor enkelt det er og hvor gode testene dine er.

Etter intervjuet fikk jeg tilbakemelding i lÞpet av noen timer. PÄ dette stadiet skjÞnte jeg at jeg nesten var ferdig og det var veldig lite igjen fÞr jeg «mÞtte Fowler».

Etappe 4. Finale. Nok tekniske spÞrsmÄl. Vi vil vite hvem du er!

For Ă„ vĂŠre ĂŠrlig, ble jeg litt forundret over denne formuleringen av spĂžrsmĂ„let. Hvordan kan du forstĂ„ hva slags person jeg er i en times samtale? Og enda mer, hvordan kan du forstĂ„ dette nĂ„r jeg snakker et sprĂ„k som ikke er mitt morsmĂ„l, og, ĂŠrlig talt, veldig elendig og tungemĂ„lt. I tidligere intervjuer var det lettere for meg personlig Ă„ snakke fremfor Ă„ svare pĂ„ spĂžrsmĂ„l, og aksenten hadde skylden. Minst en av intervjuerne var asiatisk – og aksenten deres, vel, la oss bare si, er noe spesifikk for det europeiske Ăžret. Derfor bestemte jeg meg for Ă„ ta en proaktiv tilnĂŠrming - forberede en presentasjon om meg selv og i begynnelsen av intervjuet tilby Ă„ snakke om meg selv med denne presentasjonen. Hvis de er enige, vil det i det minste vĂŠre fĂŠrre spĂžrsmĂ„l for meg; hvis de avslĂ„r tilbudet, vel, 3 timer av livet mitt brukt pĂ„ en presentasjon er ikke sĂ„ hĂžy pris. Men hva bĂžr du skrive i presentasjonen din? Biografi - FĂždt der, pĂ„ den tiden, gikk pĂ„ skole, ble uteksaminert fra universitetet - men hvem bryr seg?

Hvis du Googler litt om Thoughtworks-kulturen, finner du en artikkel av Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html] som beskriver de 3 pilarene: Sustainable Business, Software Excellence, and Social Justice.

La oss anta at Software Excellence allerede er sjekket for meg. Det gjenstÄr Ä vise bÊrekraftig virksomhet og sosial rettferdighet.

Dessuten bestemte jeg meg for Ä fokusere pÄ sistnevnte.

Til Ă„ begynne med fortalte jeg ham hvorfor ThoughtWorks – jeg leste Martin Fowlers blogg pĂ„ college, derav min kjĂŠrlighet til Clean code.

Prosjekter kan ogsÄ presenteres fra ulike vinkler. Han utviklet ogsÄ programvare for medisin som forenklet livet til pasienter, og til og med, ifÞlge ryktene, reddet ett liv. Jeg utviklet ogsÄ programvare for banker, som ogsÄ gjorde livet enklere for innbyggerne. Spesielt hvis denne banken brukes av 70 % av landets befolkning. Dette handler ikke om Sberbank og ikke engang om Russland.

Vil du vite om meg? OK. Hobbyen min er fotografering, pÄ en eller annen mÄte har jeg holdt et kamera i hendene i ca 10 Är, det er bilder jeg ikke er sÄ flau til Ä vise. En gang hjalp jeg ogsÄ et kattehjem: Jeg fotograferte katter som trengte et permanent hjem. Og med gode bilder er det mye lettere Ä plassere en katt. Jeg har sikkert fotografert hundre katter :)

Til slutt var 80 % av presentasjonen min fylt med katter.

Rett etter presentasjonen skrev HR til meg at han ennÄ ikke visste resultatet av intervjuet, men hele kontoret var allerede imponert over kattene.

Til syvende og sist ventet jeg pĂ„ tilbakemelding – jeg tilfredsstilte alle som person.

Men under den siste samtalen sa HR taktfullt at sosial rettferdighet er veldig bra og nĂždvendig, men ikke alle prosjekter er slik. Og han spurte om det skremte meg. Generelt gikk jeg litt over bord med sosial rettferdighet, det skjer :)

Total

Som et resultat har jeg jobbet i Singapore hos Thoughtworks i flere mÄneder nÄ, og jeg ser at ogsÄ her tar mange bedrifter i bruk «beste intervjupraksis» fra Google, bruker blader og tavle for koding, til tross for at de har mer kunnskap enn Spring, Symfony, RubyOnRails ( Understrek det som er nÞdvendig) er ikke nÞdvendig i arbeidet. IngeniÞrer tar en uke fri fÞr et intervju for Ä "forberede seg."

Hos Thoughtworks er, i tillegg til tilstrekkelige krav til kandidaten, fĂžlgende prinsipper i forkant:
Intervjuglede. Dessuten for begge sider. Faktisk, hvis du Þnsker Ä fÄ det beste personellet (og hvem gjÞr ikke det?), sÄ er ikke et intervju et marked der slaver blir valgt, men et show hvor bÄde arbeidsgiver og kandidat vurderer hverandre. Og hvis en kandidat forbinder hyggelige fÞlelser med et selskap, er det sannsynlig at han vil velge akkurat dette selskapet

Flere intervjuere for Ä dempe skjevheter. Hos Thoughtworks er parprogrammering de facto-standarden. Og hvis denne praksisen kan brukes pÄ andre omrÄder, prÞver TW Ä gjÞre det. PÄ hvert trinn gjennomfÞres intervjuet av 2 personer. Dermed blir hver person vurdert av minst 8 personer, og TW prÞver Ä velge ut intervjuere med ulik bakgrunn, ulik retning (ikke bare teknologer) og kjÞnn.

Til syvende og sist vil ansettelsesbeslutningen bli tatt basert pÄ meningene til minst 8 personer, og ingen har en avgjÞrende stemme.

Attributtbasert ansettelse I stedet for Ä ta en beslutning basert pÄ en kandidats liker eller misliker, utvikles et skjema for hver rolle og hvert trinn som inkluderer egenskapene som vurderes. Samtidig, nÄr du vurderer, er det sterkt anbefalt Ä vurdere ikke erfaring i en viss ferdighet, men evnen til Ä anvende den. Derfor, hvis en kandidat ikke var i stand til Ä bruke noen ferdigheter, for eksempel TDD, men likevel prÞver Ä bruke dem, lytter til rÄd om hvordan de skal brukes riktig, har han alle muligheter til Ä bestÄ intervjuet.

Utdanningsbevis ikke nĂždvendig TW krever ingen sertifisering eller utdanning i informatikk. Kun ferdigheter vurderes.

Dette er det fÞrste intervjuet jeg har hatt med utenlandske selskaper som jeg ikke trengte Ä forberede meg pÄ. Etter hvert trinn fÞlte jeg meg ikke utslitt, men tvert imot, jeg var glad for at jeg kunne bruke de beste praksisene, at folk pÄ den andre siden av skjermen satte pris pÄ det og brukte dem hver dag.

Etter flere mÄneder kan jeg si at forventningene mine ble fullt ut innfridd. Hvordan er ThoughtWorks forskjellig fra et vanlig selskap? I et vanlig selskap kan du finne gode utviklere og hyggelige mennesker, men i TW er konsentrasjonen deres utenfor listene.

Hvis du er interessert i Ä bli med i ThoughtWorks, kan du se vÄre ledige stillinger her
Jeg foreslÄr ogsÄ Ä ta hensyn til interessante ledige stillinger:
Ledende programvareingeniĂžr: Tyskland, London, Madrid, Singapore
Senior programvareingeniĂžr: Sydney, Tyskland, Manchester, Bangkok
Programvare ingeniĂžr: Sydney, Barcelona, Milan
Senior dataingeniĂžr: Milan
Kvalitetsanalytiker: Tyskland porselen
Infrastruktur: Tyskland, London, Chile
(Jeg vil Êrlig advare deg om at lenken er en henvisningslenke, hvis du gÄr til TW, vil jeg motta en hyggelig bonus). Velg et kontor du liker, du trenger ikke begrense deg til Europa, tross alt, hvert annet Är vil TW gjerne flytte deg til et annet land, fordi... dette er en del av ThoughtWorks-politikken, sÄ kulturen spres og homogeniseres.

Still gjerne spÞrsmÄl i kommentarfeltet eller be meg om anbefalinger.
Hvis temaet virker interessant, vil jeg skrive om hvordan det er Ă„ jobbe i ThoughtWorks og hvordan livet er i Singapore.

Kilde: www.habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster