
Tycker du inte att det Ă€r mĂ€rkligt att nĂ€r du planerar att byta jobb och behöver gĂ„ pĂ„ intervju, att det första du tĂ€nker Ă€r "jag mĂ„ste förbereda mig för intervjun"? Du ska lösa uppgifter pĂ„ HackerRank, lĂ€sa Crack the coding interview, lĂ€ra dig hur ArrayList fungerar och hur den skiljer sig frĂ„n LinkedList. Ă
h ja, de kan ocksÄ frÄga om sorteringar, och det vore uppenbarligen oprofessionellt att sÀga att quick sort förmodligen kommer att vara det bÀsta valet.
Men vĂ€nta, du programmerar ju i 8 timmar om dagen, löser intressanta och icke-triviala problem, och pĂ„ din nya arbetsplats kommer du i stort sett att göra samma sak. ĂndĂ„, för att klara intervjun, mĂ„ste du förbereda dig pĂ„ nĂ„got sĂ€tt, inte bara finslipa dina dagliga fĂ€rdigheter, utan lĂ€ra dig saker som du varken behövt pĂ„ ditt nuvarande jobb eller troligtvis kommer att behöva pĂ„ nĂ€sta. Mot dina invĂ€ndningar om att datavetenskap ligger i vĂ„rt blod, och att vi, om vi vĂ€cks mitt i natten, ska kunna skriva bred first search med stĂ€ngda ögon pĂ„ ett kuddfodral utan att ens vara medvetna om det, svarar jag att om jag skulle fĂ„ ett jobb pĂ„ cirkus, och min huvudkonst skulle vara just det, dĂ„ kanske ja, jag hĂ„ller med. Jag behöver testa den fĂ€rdigheten.
Men varför kontrollera irr relevanta fÀrdigheter för det nuvarande jobbet? Bara för att det har blivit trendigt? För att Google gör sÄ? Eller för att din framtida teamledare behövde lÀra sig alla sorteringsmetoder innan han gick pÄ intervjun och nu anser att "varje bra programmerare bör kunna rekonstruktionen av ett palindrom i en strÀng utantill".
SÄ hÀr Àr det, du Àr inte Google (c). Vad Google kan tillÄta sig, kan vanliga företag inte. Google har, efter att ha analyserat sina anstÀlldas data, kommit fram till att just deras uppgifter utförs vÀl av ingenjörer med en tÀvlingsbakgrund. Dessutom, nÀr de bygger sin urvalsprocess, kan de tillÄta sig att ta risken att inte anstÀlla nÄgra bra ingenjörer pÄ grund av att de inte kan lösa matematikuppgifter lika lÀtt. Men för dem Àr detta inget problem, det finns mÄnga som vill jobba pÄ Google, positionen kommer att fyllas.
LÄt oss nu kika ut genom fönstret, och om det fortfarande finns ingenjörer framför ditt kontor som vill arbeta hos dig, utan dina utvecklare oftare letar pÄ stackoverflow efter en ny Spring-annotering som behöver installeras, snarare Àn att fokusera pÄ detaljerna i rankningsalgoritmer, sÄ Àr det tydligt att det Àr dags att tÀnka pÄ huruvida man bör kopiera Google.
Vad ska man göra om Google den hÀr gÄngen svek och inte gav nÄgot svar? Kontrollera exakt vad utvecklaren kommer att göra pÄ jobbet. Vad vÀrdesÀtter ni hos utvecklarna?
SÀtt upp kriterier för vilka ni vill anstÀlla och utveckla tester som bedömer just dessa fÀrdigheter.
ThoughtWorks
Vad har ThoughtWorks hÀr att göra? HÀr har jag funnit ett exempel pÄ ett utmÀrkt intervju. Vem Àr ThoughtWorks? I korthet Àr det ett högspecialiserat konsultföretag med kontor över hela vÀrlden, frÄn Kina och Singapore till de amerikanska kontinenterna, som har hÄllit pÄ med konsultverksamhet inom utveckling i ungefÀr 25 Är, och har sin egen vetenskapsavdelning ledd av Martin Fowler. Om du letar efter en lista med 10 böcker som bör lÀsas av mjukvaruingenjörer, sÄ kommer kanske 2-3 av dem att vara skrivna av personer frÄn ThoughtWorks, som till exempel Refactoring av 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 affÀrsmodell bygger pÄ att erbjuda ganska dyra tjÀnster, men kunden betalar för fenomenal kvalitet, vilket kommer frÄn expertis, interna standarder och sjÀlvklart mÀnniskor. DÀrför Àr det avgörande att anstÀlla de rÀtta personerna.
Vilka Àr dÄ de rÀtta personerna? SjÀlvklart Àr det olika för var och en. ThoughtWorks har faststÀllt att för deras affÀrsmodell Àr de mest viktiga kriterierna för utvecklare:
- FörmĂ„ga till parprogrammering. Det Ă€r just förmĂ„gan, inte erfarenheten eller kunskapen. Ingen förvĂ€ntar sig att personer ska komma som har praktiserat parprogrammering i fem Ă„r. Men att vara mottaglig för andras Ă„sikter, förmĂ„gan att lyssna â det Ă€r en nödvĂ€ndig fĂ€rdighet.
- FörmÄgan att skriva tester, och i bÀsta fall praktisera TDD.
- Att förstÄ SOLID och OOP och kunna tillÀmpa dem.
- Att kunna presentera sina Äsikter. Som konsult mÄste man arbeta med kundens utvecklare, med andra konsulter, och det Àr inte sÄ mycket vinst om personen kan göra nÄgot bra, men Àr helt oförmögen att kommunicera detta till övriga medlemmar i teamet.
Nu Àr det viktigt att bedöma just dessa fÀrdigheter hos kandidaten. HÀr vill jag berÀtta om min erfarenhet av att gÄ pÄ intervju hos ThoughtWorks. Jag sÀger direkt att jag genomförde den i Singapore och klarade den, men rekryteringsprocessen Àr standardiserad och kommer inte att skilja sig mycket frÄn land till land.
Steg 0. HR
Som sÄ ofta Àr det ett 20-minuters samtal med HR. Jag kommer inte att stanna vid det, jag sÀger bara att jag aldrig tidigare har trÀffat en HR-medarbetare som kunde prata i 15 minuter om företagets utvecklingskultur, varför de anvÀnder TDD, varför parprogrammering Àr viktigt. Vanligtvis brukar HR skickar medarbetare hÄllas tillbaka och sÀga att deras process Àr vanlig: utvecklare utvecklar, testare testar, chefer driver pÄ.
Steg 1. Hur bra Àr du pÄ OOP, TDD?
En och en halv timme före intervjun fick jag en uppgift att göra en simulator för Mars Rover.
Uppgift Mars roverEtt gÀng robotfordon ska landas av NASA pÄ en platÄ pÄ Mars. Denna platÄ, som Àr mÀrkligt rektangulÀr, mÄste navigeras av roverarna sÄ att deras pÄbord kameror kan fÄ en fullstÀndig vy av den omgivande terrÀngen för att skicka tillbaka till jorden. En rovers position och lÀge representeras av en kombination av x- och y-koordinater och en bokstav som representerar en av de fyra vÀderstrecken. PlatÄn Àr indelad i ett rutnÀtsmönster för att förenkla navigeringen. Ett exempel pÄ en position kan vara 0, 0, N, vilket betyder att rovern Àr i det nedre vÀnstra hörnet och vÀnder mot norr. För att styra en rovers, skickar NASA en enkel strÀng av bokstÀver. De möjliga bokstÀverna Àr 'L', 'R' och 'M'. 'L' och 'R' fÄr rovern att snurra 90 grader vÀnster eller höger utan att flytta frÄn sin nuvarande position. 'M' betyder att den rör sig framÄt en ruta, och behÄller samma riktning.
Anta att kvadraten direkt norr om (x, y) Àr (x, y+1).
INGĂ
NG:
Den första raden av indata Àr de övre högra koordinaterna för platÄn, de nedre vÀnstra koordinaterna antas vara 0,0.
Resten av indata Àr information angÄende de rovers som har skickats ut. Varje rover har tvÄ rader med data. Den första raden ger rovers position, och den andra raden Àr en serie instruktioner som berÀttar för rovern hur den ska utforska platÄn. Positionen bestÄr av tvÄ heltal och en bokstav separerade av mellanslag, motsvarande x- och y-koordinaterna och rovers orientering.
Varje rover kommer att avslutas sekventiellt, vilket betyder att den andra rovern inte börjar röra sig förrÀn den första har avslutat sin rörelse.
UTDATA:
Utdata för varje rover bör vara dess slutliga koordinater och riktning.
ANTECKNINGAR:
Genomför bara kraven ovan och bevisa att en dammsugare fungerar genom att skriva enhetstester för den.
Att skapa nÄgon form av anvÀndargrÀnssnitt ligger utanför ramen.
Att lösa problemet genom att följa en TDD (Testdriven utveckling) metod kommer att föredras.
Under den korta tid som finns tillgÀnglig Àr vi mer bekymrade över kvalitet Àn fullstÀndighet.
*Jag kan inte lÀgga ut den uppgift som jag fick, det Àr en gammal uppgift som gavs för flera Är sedan. Men tro mig, principerna Àr fortfarande desamma.
Det Àr viktigt att notera bedömningskriterierna. Hur mÄnga gÄnger har du stött pÄ situationer dÀr viktiga saker för kandidaten inte betyder nÄgot vid granskningen och vice versa? Inte alla tÀnker likadant som du gör, men mÄnga kan anta dina vÀrderingar och följa dem om de tydligt formuleras. SÄ, av bedömningskriterierna framgÄr det genast att de viktigaste fÀrdigheterna pÄ detta stadium Àr
- TDD;
- FörmÄga att anvÀnda OOP och skriva underhÄllbar kod;
- förmÄga till parprogrammering
SÄ, jag blev varnad att jag skulle spendera dessa 1,5 timmar pÄ att övervÀga hur jag ska lösa uppgiften, snarare Àn att skriva kod. Vi ska skriva koden tillsammans.
NÀr vi ringde berÀttade killarna kort vem de Àr och vad de gör och föreslog att börja utveckla.
Under hela intervjun fick jag aldrig kĂ€nslan av att jag befann mig pĂ„ en intervju. Det kĂ€nns som om du utvecklar kod i ett team. Om du fastnar nĂ„gonstans hjĂ€lper de dig, ger rĂ„d, diskuterar, Ă€ven brĂ„kar ibland om hur man ska göra det pĂ„ bĂ€sta sĂ€tt. Under intervjun glömde jag hur man i JUnit 5 kontrollerar att en metod kastar ett undantag â de föreslog att vi skulle fortsĂ€tta skriva testet medan en av dem googlade hur man gör detta.
Bokstavligen nĂ„gra timmar efter intervjun fick jag konstruktiv feedback â vad som gillades och vad som inte gjorde det. I mitt fall berömde de anvĂ€ndningen av Sealed-klasser som ett alternativ till null-objektet; för att jag innan jag skrev koden hade skrivit pseudokod om hur jag ville styra roveren, och pĂ„ sĂ„ sĂ€tt fick jag en skiss av klasser, Ă„tminstone de som involverades i robotens API.
Steg 2. BerÀtta för oss
En vecka innan intervjun ombads jag förbereda en presentation om ett Àmne som intresserar mig. Formatet Àr enkelt och bekant: 15 minuters presentation, 15 minuters frÄgor.
Jag valde Clean Architecture av Uncle Bob. Och jag blev Ă„terigen intervjuad av ett par personer. Detta var min första erfarenhet av att presentera pĂ„ engelska, och jag tror att jag inte skulle ha klarat det om jag varit i en stressande situation. Men, Ă„ andra sidan, kĂ€nde jag aldrig att jag var pĂ„ en intervju. Allt var som vanligt â jag berĂ€ttar, de lyssnar noggrant. Till och med den traditionella frĂ„gestunden liknade inte en intervju; det var tydligt att frĂ„gorna stĂ€lldes av genuint intresse för min presentation, inte för att
TvĂ„ timmar efter intervjun fick jag feedback â presentationen var mycket anvĂ€ndbar och de hade uppriktigt nöje av att lyssna.
Steg 3. Produktionskvalitet pÄ kod
Efter att ha blivit informerad om att detta var det sista steget i de tekniska intervjuerna, bad de mig att ta hem koden och göra den produktionsklar, efter vilket jag skulle skicka koden för granskning och schemalÀgga en intervju dÀr krav pÄ uppgiften skulle förÀndras och koden skulle behöva modifieras. För att vara pÄ förhand kan jag sÀga att kodgranskningen sker anonymt; granskare vet varken vilken position kandidaten ansöker om, ser inte deras CV, och ser inte ens deras namn.
Telefonsamtal, och Ă„terigen ett par killar pĂ„ andra sidan skĂ€rmen. Allt som under den första intervjun: det viktigaste Ă€r att inte glömma TDD, berĂ€tta vad du gör och varför. Om du inte har praktiserat TDD tidigare, rekommenderar jag att du börjar omedelbart, inte för att det Ă€r nödvĂ€ndigt i företagen, utan för att det avsevĂ€rt förenklar ditt liv, minskar stressnivĂ„n om sĂ„ önskas. Kommer du ihĂ„g hur du panikartat letade efter en bugg som bara uppstod i webblĂ€saren, och som du inte kunde Ă„terskapa i tester? TĂ€nk dig nu att du mĂ„ste fĂ„nga en sĂ„dan bugg under intervjun â ett par grĂ„a hĂ„rstrĂ„n Ă€r garanterade. Vad erbjuder TDD oss? Ăndrar koden och plötsligt inser du att testerna misslyckas, men du kan inte förstĂ„ vad felet Ă€r vid första försöket? Okej, vi sĂ€ger till intervjuarna "Oops", trycker pĂ„ Ctrl-Z och börjar ta smĂ„ steg framĂ„t. Ja, förmĂ„gan att utveckla med TDD bör du odla i dig sjĂ€lv, förmĂ„gan att strĂ€va mot ditt mĂ„l sĂ„ att dina tester alltid Ă€r gröna, och inte röda hela dagen för att "du har en stor refaktorering". Detta Ă€r en fĂ€rdighet som att skriva underhĂ„llbar kod, eller prestandakod.
SÄ, hur lÀtt din kod gÄr att Àndra beror pÄ vilken design du frÄn början har lagt fram, hur enkel den Àr och hur bra dina tester Àr.
Efter intervjun fick jag feedback inom nÄgra timmar. Vid det hÀr laget förstod jag att jag nÀstan hade klarat det och att det bara var en kort tid kvar till "mötet med Fowler".
Steg 4. Finalen. TillsrÀckligt med tekniska frÄgor. Vi vill veta vem du Àr!
Ărligt talat, den hĂ€r frĂ„gestĂ€llningen förvirrar mig lite. Hur kan man förstĂ„ vilken typ av person jag Ă€r efter en timmes samtal? Och hur kan man förstĂ„ det nĂ€r jag pratar ett sprĂ„k som inte Ă€r mitt modersmĂ„l, och Ă€rligt talat, ganska dĂ„ligt och klumpigt. PĂ„ tidigare intervjuer har det varit lĂ€ttare för mig att berĂ€tta snarare Ă€n att svara pĂ„ frĂ„gor, och allt Ă€r pĂ„ grund av min accent. Ă tminstone var en av intervjuarna asiat â och deras accent, lĂ„t oss sĂ€ga, Ă€r ganska specifik för det europeiska örat. SĂ„ jag bestĂ€mde mig för att ta en proaktiv approach â förbereda en presentation om mig sjĂ€lv och i början av intervjun erbjuda att prata om mig sjĂ€lv med den presentationen. Om de gĂ„r med pĂ„ det â kommer i alla fall frĂ„gorna till mig att bli fĂ€rre; om de avböjer erbjudandet â ja, vad ska man sĂ€ga, tre timmar av mitt liv tillbringade pĂ„ presentationen Ă€r inte ett sĂ„ högt pris. Men vad ska man skriva i presentationen? En biografi â Född dĂ€r, dĂ„, gick i skolan, tog examen frĂ„n universitetet â vem bryr sig om det?
Om man lite googlar pÄ kulturen pÄ Thoughtworks, kan man hitta en artikel av Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html], dÀr de tre pelarna beskrivs: HÄllbart företagande, mjukvaruexcellens och social rÀttvisa.
LÄt oss anta att mjukvaruexcellens redan har verifierats för mig. Resterande Àr att visa hÄllbart företagande och social rÀttvisa.
DÀrför har jag beslutat att fokusera pÄ det sistnÀmnda.
Först berĂ€ttade jag varför ThoughtWorks â jag lĂ€ste Martin Fowlers blogg redan pĂ„ universitetet, dĂ€rifrĂ„n kommer min kĂ€rlek till Clean code.
Projekt kan ocksÄ presenteras ur olika vinklar. Jag har utvecklat mjukvara för medicin som förenklade livet för patienter, och enligt rykten rÀddade till och med ett liv. Jag har ocksÄ utvecklat mjukvara för banker, vilket ocksÄ Àr ett slags förenkling av livet för medborgarna. SÀrskilt om den banken anvÀnds av ungefÀr 70 % av landets befolkning. Det handlar inte om Sberbank och inte ens om Ryssland.
Vill du veta mer om mig? Okej. Min hobby Ă€r fotografering; jag har hĂ„llit en kamera i handen i ungefĂ€r tio Ă„r, och det finns bilder som jag inte skĂ€ms över att visa. Jag har ocksĂ„ under en tid hjĂ€lpt ett katthem: jag fotograferade katter som behövde ett permanent hem. Med bra bilder Ă€r det mycket lĂ€ttare att hitta ett hem för en katt. Jag har sĂ€kert fotat runt hundra katter đ
I slutÀndan var 80 % av presentationen fylld med katter.
Strax efter presentationen fick jag ett meddelande frÄn HR att de Ànnu inte visste resultatet av intervjun, men att hela kontoret redan var imponerade av katterna.
Till slut fick jag feedback â jag hade tillfredsstĂ€llt alla som person.
Men HR berĂ€ttade under det avslutande samtalet taktfullt att social rĂ€ttvisa Ă€r mycket bra och viktigt, men att inte alla projekt Ă€r sĂ„dana. Och de frĂ„gade om detta skrĂ€mde mig. I allmĂ€nhet hade jag kanske överdrivit lite med social rĂ€ttvisa, sĂ„nt hĂ€nder đ
Resultat
Som en följd har jag nu arbetat i flera mÄnader i Singapore pÄ Thoughtworks, och jag ser att mÄnga företag hÀr ocksÄ adopterar "bÀsta praxis för intervjuer" frÄn Google, genom att anvÀnda papper och whiteboard för kodning, trots att kunskaper bortom Spring, Symfony, RubyOnRails (fyll i vad som krÀvs) inte behövs i arbetet. Ingenjörer tar en veckas ledighet före intervjun för att "förbereda sig".
PÄ Thoughtworks, förutom rimliga krav pÄ kandidater, lÀggs följande principer i fokus:
Intervjufröjd. För bĂ„da parter. Faktum Ă€r att om du vill fĂ„ de bĂ€sta talangerna (och vem vill inte?), sĂ„ Ă€r intervjun inte en marknad dĂ€r slavar vĂ€ljs, utan en visning dĂ€r bĂ„de arbetsgivare och kandidat bedömer varandra. Och om kandidaten kopplar positiva kĂ€nslor till företaget â Ă€r det ganska troligt att de vĂ€ljer just detta företag.
Flera intervjuare för att minska bias. PÄ Thoughtworks Àr parprogrammering en de facto-standard. Och om denna praktik kan tillÀmpas pÄ andra omrÄden, strÀvar TW efter att göra det. Vid varje intervju genomförs samtalet av tvÄ personer. PÄ sÄ sÀtt bedömer minst 8 personer varje kandidat, och TW försöker att vÀlja intervjuare med olika bakgrunder, olika inriktningar (inte bara tekniker) och kön.
Som ett resultat kommer beslutet om anstÀllning baseras pÄ Äsikterna frÄn minst 8 personer, och ingen har rÀtt att ha ett avgörande rösts rÀtt.
Attributbaserad rekrytering IstÀllet för att fatta beslut baserat pÄ om kandidaten "gillar eller inte gillar", har en formulÀr utvecklats för varje roll och varje steg som inkluderar de egenskaper som bedöms. Vid bedömningen rekommenderas det starkt att man bedömer inte erfarenheten inom en viss fÀrdighet, utan förmÄgan att tillÀmpa den. SÄ om kandidaten inte har haft möjlighet att tillÀmpa vissa fÀrdigheter, som TDD, men ÀndÄ försöker anvÀnda den och lyssnar pÄ rÄd om korrekt anvÀndning - har de alla chanser att klara intervjun.
Utbildningscertifikat krÀvs inte TW krÀver inte av kandidaten att ha obligatoriska certifikat eller utbildning inom datavetenskap. Endast fÀrdigheter bedöms.
Detta Àr den första intervjun, av de jag genomgÄtt i utlÀndska företag, som jag inte behövde förbereda mig för. Efter varje steg kÀnde jag mig inte som en urpressad citron, snarare var jag glad över att jag kunde tillÀmpa bÀsta praxis, att folk pÄ andra sidan skÀrmen uppskattar det och ocksÄ tillÀmpar dem varje dag.
Efter nÄgra mÄnader kan jag sÀga att förvÀntningarna har levts upp helt. Vad skiljer ThoughtWorks frÄn ett vanligt företag? PÄ ett vanligt företag kan du hitta bra utvecklare och trevliga mÀnniskor, men i TW Àr koncentrationen av dem övervÀldigande.
Om du vill gÄ med i ThoughtWorks kan du se öppna tjÀnster
Jag rekommenderar ocksÄ att titta pÄ intressanta tjÀnster:
Lead Software Engineer: , , ,
Senior Software Engineer: , , ,
Software Engineer: , ,
Senior Data Engineer:
Quality Analyst:
Infrastruktur: , ,
(Jag vill Àrligt varna att lÀnken Àr en referralslÀnk, om du gÄr vidare till TW, sÄ fÄr jag en trevlig bonus). VÀlj kontor efter smak, det Àr inte nödvÀndigt att bara begrÀnsa sig till Europa, i slutÀndan kommer TW att vara glad att flytta dig till ett annat land varannan Är, eftersom det Àr en del av ThoughtWorks politik, sÄ att kulturen sprids och medelvÀrdes.
Tveka inte att stÀlla frÄgor i kommentarerna eller be mig rekommendera dig.
Om Àmnet verkar intressant kan jag skriva om hur det Àr att arbeta pÄ ThoughtWorks och hur livet Àr i Singapore.
KĂ€lla: habr.com
