Hur jag kom in pÄ ThoughtWorks eller en exempelintervju

Hur jag kom in pÄ ThoughtWorks eller en exempelintervju

Verkar det inte konstigt för dig att nĂ€r du ska byta jobb och behovet uppstĂ„r att klara en intervju, Ă€r det första du tĂ€nker "du mĂ„ste förbereda dig för intervjun." Lös problem pĂ„ HackerRank, lĂ€s Crack the coding interview, memorera hur ArrayList fungerar och hur den skiljer sig frĂ„n LinkedList. Åh ja, de kanske ocksĂ„ frĂ„gar om sortering, och det skulle uppenbarligen vara oprofessionellt att sĂ€ga att snabb sortering med största sannolikhet skulle vara det bĂ€sta valet.
Men vÀnta, du programmerar 8 timmar om dagen, löser intressanta och icke-triviala problem, och pÄ ditt nya jobb kommer du att göra samma sak, plus eller minus. Men ÀndÄ, för att klara en intervju, mÄste du pÄ nÄgot sÀtt ytterligare förbereda dig, inte ens finslipa dina dagliga fÀrdigheter, utan lÀra dig nÄgot som du inte behövde pÄ ditt nuvarande jobb och sannolikt inte kommer att behöva vid ditt nÀsta. Till dina invÀndningar om att datavetenskap Àr i vÄrt blod, och om du vÀcker oss mitt i natten, vi Àr skyldiga att med slutna ögon pÄ ett örngott skriva en promenad runt ett trÀds bredd utan att ens ÄterfÄ medvetandet, sÄ ska jag svara att om jag fÄr jobb pÄ en cirkus, och mitt frÀmsta knep blir just detta, sÄ kanske ja, jag hÄller med. Denna fÀrdighet mÄste testas.

Men varför testa fÀrdigheter som Àr irrelevanta för ditt nuvarande jobb? Bara för att det blev pÄ modet? För att Google gör detta? Eller för att din framtida teamledare var tvungen att lÀra sig alla sorteringsmetoder innan intervjun och nu tror han att "varje bra programmerare mÄste kunna utantill implementeringen av att hitta en palindrom i en strÀng."

Tja, du Àr inte Google (c). Vad Google har rÄd med kan inte vanliga företag. Google, efter att ha analyserat sina anstÀlldas data, kom till slutsatsen att ingenjörer med Olympiad-bakgrund Àr bra pÄ att hantera sina specifika uppgifter. Genom att utforma sin urvalsprocess har de dessutom rÄd att ta risken att de kanske inte anstÀller nÄgra bra ingenjörer eftersom de inte kan lösa matematiska problem lÀtt. Men detta Àr inget problem för dem, det Àr mÄnga som vill jobba pÄ Google, tjÀnsten kommer att lÀggas ner.
LÄt oss nu titta ut genom fönstret, och om ingenjörerna som vill arbeta för dig Ànnu inte har satt upp ett tÀltlÀger framför ditt kontor och dina utvecklare oftare tittar pÄ stackoverflow för vad nÀsta vÄrkommentar behöver installeras, och inte för krÄngligheterna med rankningsalgoritmer, sÄ Àr det tydligen dags för dig att fundera pÄ om det Àr Googles.

Tja, om Google misslyckades den hÀr gÄngen och inte gav nÄgot svar, vad ska du göra? Kontrollera exakt vad utvecklaren kommer att göra pÄ jobbet. Vad vÀrdesÀtter du hos utvecklare?
Gör kriterier för vem du vill anstÀlla och utveckla tester som testar just dessa fÀrdigheter.

Thoughtworks

Vad har ThoughtWorks med detta att göra? Det var hÀr jag hittade ett exempel pÄ en modellintervju för mig sjÀlv. Vilka Àr ThoughtWorks? Kort sagt Àr detta ett High-End-konsultföretag med kontor över hela vÀrlden, frÄn Kina, Singapore till de amerikanska kontinenterna, som har konsulterat inom utvecklingsomrÄdet i cirka 25 Är, har en egen Science-division som leds av Martin Fowler. Om du letar efter en lista med 10 mÄste-lÀsa böcker för en mjukvaruingenjör, sÄ kanske 2-3 av dem kommer att skrivas av killarna frÄn ThoughtWorks, som Refactoring By Martin Fowler och Building Microservices: Designing Fine-Grained Systems av Sam Newman eller Building Evolutionary Architectures
av Patrick Kua, Rebecca Parsons, Neal Ford.

Företagets verksamhet bygger pÄ att tillhandahÄlla ganska dyra tjÀnster, men kunden betalar för fenomenal kvalitet som bestÄr av expertis, interna standarder och förstÄs mÀnniskor. DÀrför Àr det viktigt att anstÀlla rÀtt personer hÀr.
Vilken typ av mÀnniskor har rÀtt? Naturligtvis finns det olika för alla. ThoughtWorks har bestÀmt att de viktigaste kriterierna för deras affÀrsmodell för utvecklare Àr:

  • FörmĂ„ga att utvecklas i par. Det Ă€r förmĂ„ga, inte erfarenhet eller skicklighet. Ingen förvĂ€ntar sig att folk som har trĂ€nat parprogrammering i 5 Ă„r kommer att komma. Men att vara mottaglig för andras Ă„sikter och att kunna lyssna Ă€r en nödvĂ€ndig fĂ€rdighet.
  • FörmĂ„ga att skriva tester och helst trĂ€na TDD
  • FörstĂ„ SOLID och OOP och kunna tillĂ€mpa dem.
  • Presentera din Ă„sikt. Som konsult mĂ„ste man arbeta med kundens utvecklare, med andra konsulter, och det Ă€r inte sĂ„ stor nytta om en person vet hur man gör nĂ„got bra, men helt oförmögen att förmedla det till resten av teamet.

Nu Àr det viktigt att utvÀrdera just dessa fÀrdigheter hos kandidaten. Och hÀr vill jag berÀtta om min erfarenhet av att intervjua pÄ ThoughtWorks. Jag kommer genast att sÀga att jag Äkte till Singapore och godkÀnde, men rekryteringsprocessen Àr enhetlig och kommer inte att skilja sig mycket frÄn land till land.

Steg 0. HR

Som ofta hÀnder, en 20 minuters intervju med HR. Jag ska inte uppehÄlla mig vid det, jag ska bara sÀga att jag aldrig har trÀffat en HR-person som kunde prata i 15 minuter om utvecklingskulturen i företaget, varför de anvÀnder TDD, varför parprogrammering. Vanligtvis vill personalen i den hÀr frÄgan och sÀger att deras process Àr normal: utvecklare utvecklar, testare testar, chefer kör.

Steg 1. Hur bra Àr du pÄ OOP, TDD?

1.5 timme innan intervjuns början fick jag en uppgift att göra en Mars Rover-simulator.

Mars rover uppdragEn grupp robotar ska landsÀttas av NASA pÄ en platÄ pÄ Mars. Denna platÄ, som Àr konstigt rektangulÀr, mÄste navigeras av rovers sÄ att deras kameror ombord kan fÄ en fullstÀndig bild av den omgivande terrÀngen för att skicka tillbaka till jorden. En rovers position och plats representeras av en kombination av x- och y-koordinater och en bokstav som representerar en av de fyra kardinalkompasspunkterna. PlatÄn Àr uppdelad i ett rutnÀt för att förenkla navigeringen. Ett exempel pÄ position kan vara 0, 0, N, vilket betyder att rover Àr i det nedre vÀnstra hörnet och vÀnd mot norr. För att kontrollera en rover skickar NASA en enkel rad bokstÀver. De möjliga bokstÀverna Àr 'L', 'R' och 'M'. 'L' och 'R' fÄr roveraren att snurra 90 grader Ät vÀnster eller höger, utan att flytta frÄn sin nuvarande plats. 'M' betyder att gÄ framÄt en rutnÀtspunkt och behÄlla samma kurs.
Antag att kvadraten direkt norr frÄn (x, y) Àr (x, y+1).
INMATNING:
Den första inmatningsraden Àr de övre högra koordinaterna för platÄn, de nedre vÀnstra koordinaterna antas vara 0,0.
Resten av inmatningen Àr information som hÀnför sig till de rovers som har utplacerats. Varje rover har tvÄ inmatningslinjer. Den första raden anger roverns position, och den andra raden Àr en serie instruktioner som berÀttar för rovern hur han ska utforska platÄn. Positionen bestÄr av tvÄ heltal och en bokstav separerade med mellanslag, motsvarande x- och y-koordinaterna och roverns orientering.
Varje rover kommer att avslutas sekventiellt, vilket innebÀr att den andra rover inte kommer att börja röra sig förrÀn den första har slutat röra sig.
PRODUKTION:
Utdata för varje rover bör vara dess slutliga koordinater och kurs.
ANMÄRKNINGAR:
Implementera helt enkelt kraven ovan och bevisa att en dammsugare fungerar genom att skriva enhetstester för den.
Det gÄr inte att skapa nÄgon form av anvÀndargrÀnssnitt.
Att lösa problemet genom att följa en TDD-metod (Test Driven Development) kommer att föredras.
PÄ den korta tiden som finns Àr vi mer mÄna om kvalitet Àn om fullstÀndighet.
*Jag kan inte lÀgga upp uppgiften som skickades till mig, detta Àr en gammal uppgift som gavs för flera Är sedan. Men tro mig, i grunden förblir allt detsamma.

Jag vill sÀrskilt uppmÀrksamma utvÀrderingskriterierna. Hur mÄnga gÄnger har du stött pÄ en situation dÀr saker som Àr viktiga för en kandidat Àr helt oviktiga under revisionen och vice versa. Alla tÀnker inte pÄ samma sÀtt som du, men mÄnga kan acceptera och följa dina vÀrderingar om de Àr tydliga. SÄ frÄn bedömningskriterierna Àr det omedelbart klart att de viktigaste fÀrdigheterna i detta skede Àr

  • TDD;
  • FörmĂ„ga att anvĂ€nda OOP och skriva underhĂ„llbar kod;
  • para programmeringsförmĂ„gor

SÄ jag blev varnad för att spendera de 1.5 timmarna pÄ att tÀnka pÄ hur jag skulle göra uppgiften, istÀllet för att skriva kod. Vi kommer att skriva koden tillsammans.

NÀr vi ringde berÀttade killarna kort vilka de Àr och vad de gör och erbjöd sig att börja utveckla.

Under hela intervjun hade jag aldrig en enda kÀnsla av att jag blev intervjuad. Det finns en kÀnsla av att man utvecklar kod i ett team. Om du fastnar nÄgonstans hjÀlper de, ger rÄd, diskuterar, till och med argumenterar med varandra om hur man bÀst gör det. Vid intervjun glömde jag hur man kontrollerar i JUnit 5 att en metod ger ett undantag - de föreslog att man skulle fortsÀtta skriva testet, medan en av dem googlade hur man gör det.

Bokstavligen nÄgra timmar efter intervjun fick jag konstruktiv feedback - vad jag gillade och vad jag inte gjorde. I mitt fall fick jag beröm för att jag anvÀnde Sealed-klasser som ett alternativ till null-objektet; för det faktum att jag innan jag skrev koden skrev i pseudokod hur jag skulle vilja styra rover, och fick dÀrmed en skiss pÄ klasserna, Ätminstone de som Àr involverade i robotens API.

Steg 2: BerÀtta för oss

En vecka före intervjun blev jag ombedd att förbereda en presentation om nÄgot Àmne som intresserade mig. Formatet Àr enkelt och vÀlbekant: 15 minuters presentation, 15 minuter att svara pÄ frÄgor.
Jag valde Clean Architecture av Uncle Bob. Och Ă„terigen blev jag intervjuad av ett par personer. Det hĂ€r var min första erfarenhet av att presentera pĂ„ engelska, och om jag hade varit i en stressig situation hade jag kanske inte orkat. Men Ă„terigen, jag hade aldrig en enda kĂ€nsla av att jag var pĂ„ en intervju. Allt Ă€r som vanligt – jag sĂ€ger till dem, de lyssnar noga. Inte ens den traditionella frĂ„gestunden var som en intervju; det var tydligt att frĂ„gorna inte stĂ€lldes för att ”sjunka”, utan de som verkligen intresserade dem i min presentation.

Ett par timmar efter intervjun fick jag feedback - presentationen var vÀldigt anvÀndbar och de tyckte verkligen om att lyssna.

Steg 3. Produktionskvalitetskod

Efter att ha varnat för att detta var det sista steget av tekniska intervjuer, ombads jag att föra koden hemma till ett produktionsfÀrdigt tillstÄnd, sedan skicka koden för granskning och schemalÀgga intervjuer dÀr kraven för uppgiften skulle Àndras och koden skulle behöva modifieras. NÀr jag blickar framÄt kan jag sÀga att kodgranskningen genomförs blint, granskarna kÀnner inte till tjÀnsten som kandidaten söker, de ser inte hans CV, de ser inte ens hans namn.

Telefonen ringde och Äterigen stod det ett par killar pÄ andra sidan monitorn. Allt Àr detsamma som vid den första intervjun: huvudsaken Àr att inte glömma TDD, berÀtta vad du gör och varför. Om du inte har utövat TDD tidigare sÄ rekommenderar jag att börja göra det direkt, inte för att det Àr nödvÀndigt pÄ företag utan för att det avsevÀrt förenklar ditt liv, minskar din stressnivÄ om du vill. Kommer du ihÄg hur du frenetiskt var tvungen att söka med en debugger efter ett fel som bara kan Äterskapas via webblÀsaren, men du kan inte Äterskapa det med tester? FörestÀll dig nu att du mÄste fÄnga ett sÄdant misstag under en intervju - du Àr garanterad ett par grÄa hÄrstrÄn. Vad fÄr vi med TDD? Vi Àndrade koden och insÄg ovÀntat att nu Àr testerna röda, men vad Àr felet vi inte kan ta reda pÄ första gÄngen? Okej, vi sÀger "Hoppsan" till intervjuarna, trycker pÄ Ctrl-Z och börjar ta smÄ steg framÄt. Och ja, du mÄste utveckla förmÄgan att utvecklas med hjÀlp av TDD i dig sjÀlv, förmÄgan att gÄ mot mÄlet sÄ att dina tester Àr permanent gröna och inte röda pÄ en halv dag, eftersom "du har mycket refaktorering." Detta Àr exakt samma fÀrdighet som att skriva underhÄllbar kod, eller skriva produktiv kod.

SÄ hur vÀl din kod kan modifieras beror pÄ vilken design du har i Ätanke till att börja med, hur enkelt det Àr och hur bra dina tester Àr.

Efter intervjun fick jag feedback inom nÄgra timmar. I det hÀr skedet insÄg jag att jag nÀstan var klar och det var vÀldigt lite kvar tills jag "trÀffade Fowler."

Etapp 4. Final. Nog med tekniska frÄgor. Vi vill veta vem du Àr!

För att vara Ă€rlig, blev jag nĂ„got förbryllad över denna formulering av frĂ„gan. Hur kan du förstĂ„ vilken typ av person jag Ă€r i en timmes samtal? Och Ă€nnu mer, hur kan du förstĂ„ detta nĂ€r jag talar ett sprĂ„k som inte Ă€r mitt modersmĂ„l, och, Ă€rligt talat, vĂ€ldigt uselt och tungrodd. I tidigare intervjuer var det lĂ€ttare för mig personligen att prata snarare Ă€n att svara pĂ„ frĂ„gor, och accenten var att skylla pĂ„. Åtminstone en av intervjuarna var asiatisk – och deras accent, ja, lĂ„t oss bara sĂ€ga, Ă€r nĂ„got specifik för det europeiska örat. DĂ€rför bestĂ€mde jag mig för att ta ett proaktivt förhĂ„llningssĂ€tt - förbereda en presentation om mig sjĂ€lv och i början av intervjun erbjuda att prata om mig sjĂ€lv med denna presentation. Om de hĂ„ller med sĂ„ blir det Ă„tminstone fĂ€rre frĂ„gor för mig; om de avslĂ„r erbjudandet, ja, 3 timmar av mitt liv som spenderas pĂ„ en presentation Ă€r inte ett sĂ„ högt pris. Men vad ska du skriva i din presentation? Biografi - Född dĂ€r, pĂ„ den tiden, gick i skolan, tog examen frĂ„n universitetet - men vem bryr sig?

Om du Googlar lite om Thoughtworks-kulturen hittar du en artikel av Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html] som beskriver de 3 pelarna: Sustainable Business, Software Excellence, and Social Justice.

LÄt oss anta att Software Excellence redan har kontrollerats för mig. Det ÄterstÄr att visa hÄllbart företagande och social rÀttvisa.

Dessutom bestÀmde jag mig för att fokusera pÄ det senare.

Till att börja med berĂ€ttade jag för honom varför ThoughtWorks – jag lĂ€ste Martin Fowlers blogg pĂ„ college, dĂ€rav min kĂ€rlek till Clean code.

Projekt kan ocksÄ presenteras frÄn olika vinklar. Han utvecklade ocksÄ mjukvara för medicin, som förenklade patienters liv, och till och med, enligt rykten, rÀddade ett liv. Jag utvecklade Àven mjukvara för banker, vilket ocksÄ gjorde livet lÀttare för medborgarna. SÀrskilt om denna bank anvÀnds av 70 % av landets befolkning. Det hÀr handlar inte om Sberbank och inte ens om Ryssland.

Vill du veta mer om mig? OK. Min hobby Àr fotografering, pÄ ett eller annat sÀtt har jag hÄllit en kamera i mina hÀnder i ungefÀr 10 Är, det finns fotografier som jag inte skÀms för att visa. En gÄng hjÀlpte jag ocksÄ ett katthem: jag fotograferade katter som behövde ett permanent hem. Och med bra fotografier Àr det mycket lÀttare att placera en katt. Jag fotade sÀkert hundra katter :)

Till slut var 80 % av min presentation fylld av katter.

Direkt efter presentationen skrev HR till mig att han Ànnu inte visste resultatet av intervjun, men hela kontoret var redan imponerat av katterna.

Till sist vÀntade jag pÄ feedback - jag tillfredsstÀllde alla som person.

Men under det avslutande samtalet sa HR taktfullt att Social RÀttvisa Àr vÀldigt bra och nödvÀndigt, men alla projekt Àr inte sÄ hÀr. Och han frÄgade om det skrÀmde mig. I allmÀnhet gick jag lite överdrivet med social rÀttvisa, det hÀnder :)

Totalt

Som ett resultat av detta har jag arbetat i Singapore i flera mÄnader pÄ Thoughtworks, jag ser att Àven hÀr anammar mÄnga företag "bÀsta intervjupraxis" frÄn Google, anvÀnder blad och Whiteboard för kodning, trots att kunskap utöver Spring, Symfony, RubyOnRails (understryka vid behov) inte krÀvs i arbetet. Ingenjörer tar en vecka ledigt före en intervju för att "förbereda sig".

PÄ Thoughtworks sÀtts, förutom tillrÀckliga krav pÄ kandidaten, följande principer i frÀmsta rummet:
GlÀdje att intervjua. Dessutom för bÄda sidor. Faktum Àr att om du vill fÄ den bÀsta personalen (och vem gör inte det?), dÄ Àr en intervju inte en marknad dÀr slavar vÀljs, utan en show dÀr bÄde arbetsgivaren och kandidaten utvÀrderar varandra. Och om en kandidat associerar trevliga kÀnslor med ett företag, Àr det troligt att han kommer att vÀlja just detta företag

Flera intervjuare för att mildra partiskhet. PÄ Thoughtworks Àr parprogrammering de facto standarden. Och om denna praxis kan tillÀmpas pÄ andra omrÄden, försöker TW göra det. Vid varje steg genomförs intervjun av 2 personer. SÄledes bedöms varje person av minst 8 personer, och TW försöker vÀlja ut intervjuare med olika bakgrund, olika riktningar (inte bara tekniker) och kön.

I slutÀndan kommer anstÀllningsbeslutet att fattas baserat pÄ Äsikter frÄn minst 8 personer, och ingen har en utslagsröst.

Attributbaserad anstÀllning IstÀllet för att fatta ett beslut baserat pÄ en kandidats gillar eller ogillar, utvecklas ett formulÀr för varje roll och varje steg som inkluderar de egenskaper som bedöms. Samtidigt, nÀr man bedömer, rekommenderas det starkt att inte utvÀrdera erfarenhet av en viss fÀrdighet, utan förmÄgan att tillÀmpa den. SÄledes, om en kandidat inte kunde tillÀmpa nÄgra fÀrdigheter, sÄsom TDD, men ÀndÄ försöker tillÀmpa dem, lyssnar pÄ rÄd om hur man anvÀnder dem korrekt, har han alla chanser att klara intervjun.

Utbildningsbevis krÀvs inte TW krÀver ingen certifiering eller utbildning i datavetenskap. Endast fÀrdigheter bedöms.

Det hÀr Àr den första intervjun jag har haft med utlÀndska företag som jag inte behövt förbereda mig pÄ. Efter varje steg kÀnde jag mig inte utmattad, men tvÀrtom var jag glad att jag kunde tillÀmpa de bÀsta metoderna, att folk pÄ andra sidan monitorn uppskattade det och tillÀmpade dem varje dag.

Efter flera mÄnader kan jag sÀga att mina förvÀntningar uppfylldes till fullo. Hur skiljer sig ThoughtWorks frÄn ett vanligt företag? I ett vanligt företag kan du hitta bra utvecklare och trevliga mÀnniskor, men i TW Àr deras koncentration borta frÄn listorna.

Om du Àr intresserad av att gÄ med i ThoughtWorks kan du se vÄra lediga tjÀnster hÀr
Jag föreslÄr ocksÄ att uppmÀrksamma intressanta lediga platser:
Ledande mjukvaruingenjör: Tyskland, London, Madrid, Singapore
Senior mjukvaruutvecklare: Sydney, Tyskland, manchester, Bangkok
Mjukvaruingenjör: Sydney, Barcelona, Milano
Senior dataingenjör: Milano
Kvalitetsanalytiker: Tyskland Kina
Infrastruktur: Tyskland, London, Chile
(Jag vill Àrligt varna dig för att lÀnken Àr en remisslÀnk, om du gÄr till TW fÄr jag en fin bonus). VÀlj ett kontor du gillar, du behöver inte begrÀnsa dig till Europa, trots allt, vartannat Är kommer TW gÀrna att flytta dig till ett annat land, eftersom... detta Àr en del av ThoughtWorks policy, sÄ kulturen sprids och homogeniseras.

StÀll gÀrna frÄgor i kommentarerna eller be mig om rekommendationer.
Om Àmnet verkar intressant kommer jag att skriva om hur det Àr att jobba pÄ ThoughtWorks och hur livet Àr i Singapore.

KĂ€lla: will.com

LĂ€gg en kommentar