Si u futa në ThoughtWorks ose një intervistë mostër

Si u futa në ThoughtWorks ose një intervistë mostër

A nuk ju duket e çuditshme që kur jeni gati të ndryshoni punë dhe lind nevoja për të kaluar një intervistë, gjëja e parë që mendoni është "duhet të përgatiteni për intervistën". Zgjidhini problemet në HackerRank, lexoni Crack intervistën e kodimit, mësoni përmendësh se si funksionon ArrayList dhe si ndryshon nga LinkedList. Oh po, ata gjithashtu mund të pyesin për renditjen, dhe padyshim që do të ishte joprofesionale të thuhej se renditja e shpejtë ka shumë të ngjarë të ishte zgjidhja më e mirë.
Por prisni, ju programoni 8 orë në ditë, zgjidhni probleme interesante dhe jo të parëndësishme dhe në punën tuaj të re do të bëni të njëjtën gjë, plus ose minus. Por sidoqoftë, për të kaluar një intervistë, duhet të përgatiteni disi shtesë, madje as të grisni aftësitë tuaja të përditshme, por të mësoni diçka që nuk ju nevojitet në punën tuaj aktuale dhe nuk ka gjasa të keni nevojë në punën tuaj të ardhshme. Për kundërshtimet tuaja se shkenca kompjuterike është në gjakun tonë, dhe nëse na zgjoni në mes të natës, ne jemi të detyruar të shkruajmë me sy mbyllur në një jastëk një shëtitje rreth gjerësisë së një peme pa u rikthyer as vetëdija. do të përgjigjem se nëse gjej një punë në cirk, dhe truku im kryesor do të ishte pikërisht ky - atëherë ndoshta po, jam dakord. Kjo aftësi duhet të testohet.

Por pse të testoni aftësitë që janë të parëndësishme për punën tuaj aktuale? Vetëm sepse u bë modë? Sepse Google e bën këtë? Ose sepse drejtuesi i ekipit tuaj të ardhshëm duhej të mësonte të gjitha metodat e renditjes përpara intervistës dhe tani ai beson se "çdo programues i mirë duhet ta dijë përmendësh zbatimin e gjetjes së një palindromi në një varg".

Epo, ju nuk jeni Google (c). Atë që Google mund ta përballojë, kompanitë e zakonshme nuk munden. Google, pasi ka analizuar të dhënat e punonjësve të saj, arriti në përfundimin se inxhinierët me përvojë olimpiade janë të mirë për t'u marrë me detyrat e tij specifike. Për më tepër, duke hartuar procesin e tyre të përzgjedhjes, ata mund të përballojnë rrezikun që mund të mos punësojnë disa inxhinierë të mirë, sepse nuk mund të zgjidhin lehtësisht problemet e matematikës. Por ky nuk është problem për ta, ka shumë njerëz që duan të punojnë në Google, pozicioni do të mbyllet.
Tani le të shohim nga dritarja dhe nëse para zyrës suaj inxhinierët që duan të punojnë për ju nuk kanë ngritur ende një kamp tende dhe zhvilluesit tuaj më shpesh kërkojnë në stackoverflow se çfarë duhet të instalohet shënimi i pranverës së ardhshme, në vend të ndërlikimeve të algoritmeve të renditjes, atëherë, me sa duket, është koha që ju të mendoni nëse duhet të kopjoni Google.

Epo, nëse këtë herë Google dështoi dhe nuk dha një përgjigje, çfarë duhet të bëni? Kontrolloni saktësisht se çfarë do të bëjë zhvilluesi në punë. Çfarë vlerësoni tek zhvilluesit?
Krijoni kritere se kë doni të punësoni dhe zhvilloni teste që testojnë pikërisht këto aftësi.

Punimet e mendimit

Çfarë lidhje ka ThoughtWorks me këtë? Këtu gjeta një shembull të një interviste model për veten time. Kush janë ThoughtWorks? Me pak fjalë, kjo është një kompani konsulente e nivelit të lartë me zyra në të gjithë botën, nga Kina, Singapori e deri në kontinentet amerikane, e cila ka rreth 25 vjet që konsulton në fushën e zhvillimit, ka divizionin e saj të Shkencës, me në krye Martin. Fowler. Nëse kërkoni një listë me 10 libra që duhen lexuar për një Inxhinier Softuerësh, atëherë ndoshta 2-3 prej tyre do të shkruhen nga djemtë e ThoughtWorks, të tilla si Refactoring By Martin Fowler dhe Building Microservices: Designing Fine-Grained Systems nga Sam Newman ose Building Evolutionary Architectures
nga Patrick Kua, Rebecca Parsons, Neal Ford.

Biznesi i kompanisë është ndërtuar mbi ofrimin e shërbimeve mjaft të shtrenjta, por klienti paguan për cilësinë fenomenale, e cila përbëhet nga ekspertiza, standardet e brendshme dhe, natyrisht, njerëzit. Prandaj, punësimi i njerëzve të duhur është jetik këtu.
Çfarë lloj njerëzish kanë të drejtë? Sigurisht, ka të ndryshme për të gjithë. ThoughtWorks ka përcaktuar se kriteret më të rëndësishme për modelin e tyre të biznesit të zhvilluesit janë:

  • Aftësia për t'u zhvilluar në çifte. Është aftësi, jo përvojë apo aftësi. Askush nuk pret që njerëzit që kanë praktikuar programimin në çift për 5 vjet do të vijnë. Por të jesh i hapur ndaj mendimeve të njerëzve të tjerë dhe të jesh në gjendje të dëgjosh është një aftësi e nevojshme.
  • Aftësia për të shkruar teste dhe në mënyrë ideale të praktikoni TDD
  • Kuptoni SOLID dhe OOP dhe jini në gjendje t'i zbatoni ato.
  • Paraqitni mendimin tuaj. Si konsulent, duhet të punosh me zhvilluesit e klientit, me konsulentë të tjerë dhe nuk ka shumë përfitim nëse një person di të bëjë diçka mirë, por nuk është plotësisht në gjendje t'ia përcjellë atë pjesës tjetër të ekipit.

Tani është e rëndësishme të vlerësohen këto aftësi të veçanta tek kandidati. Dhe këtu dua të flas për përvojën time të intervistimit në ThoughtWorks. Do të them menjëherë që shkova në Singapor dhe kalova, por procesi i rekrutimit është i unifikuar dhe nuk do të ndryshojë shumë nga vendi në vend.

Faza 0. HR

Siç ndodh shpesh, një intervistë 20-minutëshe me HR. Nuk do të ndalem në të, thjesht do të them se nuk kam takuar kurrë një person të HR që mund të flasë për 15 minuta për kulturën e zhvillimit në kompani, pse përdorin TDD, pse programimin në çift. Zakonisht, burimet njerëzore dobësohen në këtë pyetje dhe thonë se procesi i tyre është normal: zhvilluesit zhvillohen, testuesit testojnë, menaxherët drejtojnë.

Faza 1. Sa i mirë jeni në OOP, TDD?

1.5 orë para fillimit të intervistës, më dërguan një detyrë për të bërë një simulator Mars Rover.

Misioni i roverit në MarsNjë skuadër roverësh robotikë do të zbarkohen nga NASA në një pllajë në Mars. Kjo pllajë, e cila është çuditërisht drejtkëndore, duhet të lundrohet nga roverët në mënyrë që kamerat e tyre në bord të kenë një pamje të plotë të terrenit përreth për ta dërguar përsëri në Tokë. Pozicioni dhe vendndodhja e një rover përfaqësohet nga një kombinim i koordinatave x dhe y dhe një shkronjë që përfaqëson një nga katër pikat kryesore të busullës. Pllaja është e ndarë në një rrjet për të thjeshtuar navigimin. Një pozicion shembull mund të jetë 0, 0, N, që do të thotë se roveri është në këndin e poshtëm majtas dhe përballet me veriun. Për të kontrolluar një rover, NASA dërgon një varg të thjeshtë letrash. Shkronjat e mundshme janë 'L', 'R' dhe 'M'. 'L' dhe 'R' e bëjnë roverin të rrotullohet përkatësisht 90 gradë majtas ose djathtas, pa lëvizur nga vendi i tij aktual. 'M' do të thotë të lëvizësh përpara një pikë rrjeti dhe të ruash të njëjtin titull.
Supozojmë se katrori direkt në veri nga (x, y) është (x, y+1).
HYRJA:
Linja e parë e hyrjes është koordinatat e sipërme djathtas të pllajës, koordinatat e poshtme-majtas supozohen të jenë 0,0.
Pjesa tjetër e hyrjes është informacion që ka të bëjë me roverët që janë vendosur. Çdo rover ka dy linja hyrjeje. Rreshti i parë jep pozicionin e roverit dhe rreshti i dytë është një seri udhëzimesh që i tregojnë roverit se si të eksplorojë pllajën. Pozicioni përbëhet nga dy numra të plotë dhe një shkronjë të ndarë me hapësira, që korrespondojnë me koordinatat x dhe y dhe orientimin e roverit.
Çdo rover do të përfundojë në mënyrë sekuenciale, që do të thotë se roveri i dytë nuk do të fillojë të lëvizë derisa i pari të ketë përfunduar lëvizjen.
Dalja:
Prodhimi për çdo rover duhet të jetë koordinatat dhe drejtimi i tij përfundimtar.
SHËNIME:
Thjesht zbatoni kërkesat e mësipërme dhe provoni se një fshesë me korrent funksionon duke shkruar teste të njësisë për të.
Krijimi i çdo forme të ndërfaqes së përdoruesit është jashtë fushëveprimit.
Zgjidhja e problemit duke ndjekur një qasje TDD (Test Driven Development) do të preferohet.
Në kohën e shkurtër në dispozicion, ne jemi më të shqetësuar për cilësinë sesa për plotësinë.
*Unë nuk mund ta postoj detyrën që më është dërguar, kjo është një detyrë e vjetër që është dhënë disa vite më parë. Por më besoni, në thelb gjithçka mbetet e njëjtë.

Veçanërisht do të doja të tërhiqja vëmendjen te kriteret e vlerësimit. Sa herë keni hasur në një situatë ku gjërat që janë të rëndësishme për një kandidat janë krejtësisht të parëndësishme gjatë auditimit dhe anasjelltas. Jo të gjithë mendojnë njësoj si ju, por shumë mund t'i pranojnë dhe ndjekin vlerat tuaja nëse ato shprehen qartë. Pra, nga kriteret e vlerësimit është menjëherë e qartë se aftësitë më të rëndësishme në këtë fazë janë

  • TDD;
  • Aftësia për të përdorur OOP dhe për të shkruar kodin e mirëmbajtur;
  • aftësitë e programimit në çift

Kështu që, më paralajmëruan t'i kaloja ato 1.5 orë duke menduar se si do ta bëja detyrën, në vend që të shkruaja kodin. Ne do të shkruajmë kodin së bashku.

Kur morëm në telefon, djemtë na thanë shkurt se kush janë dhe çfarë bëjnë dhe u ofruan të fillonim zhvillimin.

Gjatë gjithë intervistës, asnjëherë nuk kam pasur ndjesinë se jam duke u intervistuar. Ekziston një ndjenjë se po zhvillon kodin në një ekip. Nëse ngecni diku, ata ndihmojnë, këshillojnë, diskutojnë, madje debatojnë me njëri-tjetrin se si ta bëjnë më mirë. Në intervistë, harrova se si të kontrolloja në JUnit 5 që një metodë hedh një Përjashtim - ata ofruan të vazhdonin të shkruanin testin, ndërsa njëri prej tyre po kërkonte në google se si ta bënte atë.

Fjalë për fjalë disa orë pas intervistës, mora reagime konstruktive - çfarë më pëlqeu dhe çfarë jo. Në rastin tim, unë u vlerësova për përdorimin e klasave të mbyllura si një alternativë ndaj objektit null; për faktin se përpara se të shkruaja kodin, shkrova në pseudokod se si do të doja të kontrolloja roverin, dhe kështu mora një skicë të klasave, të paktën ato që janë të përfshira në API-në e robotit.

Hapi 2: Na tregoni

Një javë para intervistës, më kërkuan të përgatisja një prezantim për çdo temë që më interesonte. Formati është i thjeshtë dhe i njohur: 15 minuta prezantim, 15 minuta përgjigje për pyetje.
Zgjodha Clean Architecture nga Uncle Bob. Dhe përsëri u intervistova nga disa njerëz. Kjo ishte përvoja ime e parë e prezantimit në anglisht dhe, mbase, nëse do të kisha qenë në një situatë stresuese, nuk do ta kisha përballuar dot. Por përsëri, asnjëherë nuk kam pasur ndjenjën se isha në një intervistë. Gjithçka është si zakonisht - u them, ata dëgjojnë me vëmendje. Edhe seanca tradicionale e pyetjeve dhe përgjigjeve nuk ishte si një intervistë; ishte e qartë se pyetjet nuk ishin bërë për t'u “mbytur”, por ato që i interesonin vërtet në prezantimin tim.

Disa orë pas intervistës, mora reagime - prezantimi ishte shumë i dobishëm dhe ata vërtet u kënaqën duke dëgjuar.

Faza 3. Kodi i Cilësisë së Prodhimit

Pasi paralajmërova se kjo ishte faza e fundit e intervistave teknike, m'u kërkua të sillja kodin në shtëpi në një gjendje gati për prodhim, më pas të dërgoja kodin për rishikim dhe të planifikoja intervistat në të cilat kërkesat për detyrën do të ndryshonin dhe kodi do të kërkojnë modifikim. Duke parë përpara, mund të them se rishikimi i kodit bëhet verbërisht, recensentët nuk e dinë pozicionin për të cilin kandidati po aplikon, nuk shohin CV-në e tij, nuk shohin as emrin e tij.

Bie zilja e telefonit dhe përsëri kishte disa djem në anën tjetër të monitorit. Gjithçka është e njëjtë si në intervistën e parë: gjëja kryesore është të mos harroni për TDD, të tregoni se çfarë bëni dhe pse. Nëse nuk e keni praktikuar TDD më parë, atëherë ju rekomandoj të filloni ta bëni atë menjëherë, jo sepse është e nevojshme në kompani, por sepse ju thjeshton ndjeshëm jetën, ul nivelin e stresit nëse dëshironi. Mos harroni se si ju është dashur të kërkoni furishëm me një korrigjues për një gabim që mund të riprodhohet vetëm përmes shfletuesit, por nuk mund ta riprodhoni atë me teste? Tani imagjinoni që do t'ju duhet të kapni një gabim të tillë gjatë një interviste - ju garantohen disa qime gri. Çfarë marrim me TDD? Ndryshuam kodin dhe papritur kuptuam se tani testet janë të kuqe, por cili është gabimi që nuk mund ta kuptojmë herën e parë? Mirë, ne u themi "Oops" intervistuesve, shtypni Ctrl-Z dhe filloni të bëni hapa të vegjël përpara. Dhe po, ju duhet të zhvilloni aftësinë për të zhvilluar duke përdorur TDD në veten tuaj, aftësinë për të shkuar drejt qëllimit në mënyrë që testet tuaja të jenë përgjithmonë jeshile, dhe jo të kuqe për gjysmë dite, sepse "keni shumë rifaktorim". Kjo është saktësisht e njëjta aftësi si shkrimi i kodit të mirëmbajtur, ose shkrimi i kodit produktiv.

Pra, sa mirë mund të ndryshohet kodi juaj varet nga dizajni që keni në mendje për të filluar, sa i thjeshtë është dhe sa të mira janë testet tuaja.

Pas intervistës, mora reagime brenda pak orësh. Në këtë fazë, kuptova se kisha përfunduar pothuajse dhe se kishte mbetur shumë pak derisa të "takova Fowler".

Faza 4. Përfundimtare. Mjaft pyetje teknike. Ne duam të dimë se kush jeni!

Për të qenë i sinqertë, unë u habita disi nga ky formulim i pyetjes. Si mund ta kuptoni se çfarë lloj personi jam unë në një orë bisedë? Dhe aq më tepër, si mund ta kuptoni këtë, kur unë flas një gjuhë që nuk është gjuha ime amtare, dhe, sinqerisht, shumë e keqe dhe e lidhur me gjuhën. Në intervistat e mëparshme, mua personalisht ishte më e lehtë të flisja sesa t'u përgjigjesha pyetjeve dhe fajin e kishte theksi. Të paktën njëri nga intervistuesit ishte aziatik - dhe theksi i tyre, le të themi, është disi specifik për veshin evropian. Prandaj, vendosa të marr një qasje proaktive - të përgatis një prezantim për veten time dhe në fillim të intervistës të ofroj të flas për veten time me këtë prezantim. Nëse ata bien dakord, atëherë të paktën do të ketë më pak pyetje për mua; nëse ata refuzojnë ofertën, mirë, 3 orë të jetës sime të shpenzuara për një prezantim nuk janë një çmim aq i lartë. Por çfarë duhet të shkruani në prezantimin tuaj? Biografia - Lindur atje, në atë kohë, shkoi në shkollë, mbaroi universitetin - por kujt i intereson?

Nëse kërkoni pak në Google për kulturën Thoughtworks, do të gjeni një artikull nga Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html] i cili përshkruan 3 Shtyllat: Biznesi i Qëndrueshëm, Përsosmëria e Softuerit dhe Drejtësia Sociale.

Le të supozojmë se Përsosmëria e Softuerit tashmë është kontrolluar për mua. Mbetet të tregojmë Biznes të Qëndrueshëm dhe Drejtësi Sociale.

Për më tepër, vendosa të fokusohem tek kjo e fundit.

Si fillim, i thashë pse ThoughtWorks - lexova blogun e Martin Fowler që në kolegj, prandaj dashuria ime për Clean code.

Projektet mund të paraqiten edhe nga këndvështrime të ndryshme. Ai gjithashtu zhvilloi softuer për mjekësi që thjeshtoi jetën e pacientëve dhe madje, sipas thashethemeve, shpëtoi një jetë. Kam zhvilluar edhe softuer për bankat, i cili gjithashtu ua lehtësoi jetën qytetarëve. Sidomos nëse kjo bankë përdoret nga 70% e popullsisë së vendit. Kjo nuk ka të bëjë me Sberbank dhe as me Rusinë.

Dëshironi të dini për mua? NE RREGULL. Hobi im është fotografia, në një mënyrë apo tjetër kam rreth 10 vjet që mbaj një aparat fotografik në duar, ka fotografi që nuk kam shumë siklet t'i tregoj. Gjithashtu, në një kohë, kam ndihmuar një strehë macesh: Kam fotografuar mace që kishin nevojë për një shtëpi të përhershme. Dhe me fotografi të mira është shumë më e lehtë të vendosësh një mace. Ndoshta kam fotografuar njëqind mace :)

Në fund, 80% e prezantimit tim u mbush me mace.

Menjëherë pas prezantimit, HR më shkroi se nuk i dinte ende rezultatet e intervistës, por e gjithë zyra tashmë ishte e impresionuar me macet.

Në fund të fundit, prita reagime - i kënaqa të gjithë si person.

Por gjatë bisedës së fundit, HR me takt tha se Drejtësia Sociale është shumë e mirë dhe e nevojshme, por jo të gjitha projektet janë të tilla. Dhe ai më pyeti nëse më frikësonte. Në përgjithësi, e teprova pak me Drejtësinë Sociale, ndodh :)

Total

Si rezultat, unë kam disa muaj që punoj në Singapor në Thoughtworks dhe shoh që këtu shumë kompani po adoptojnë "praktikat më të mira të intervistave" nga Google, duke përdorur fletët dhe tabelën e bardhë për kodim, pavarësisht se kanë më shumë njohuri se Spring, Symfony, RubyOnRails ( Nënvizoni atë që është e nevojshme) nuk kërkohet në punë. Inxhinierët marrin një javë pushim para një interviste për t'u "përgatitur".

Në Thoughtworks, përveç kërkesave adekuate për kandidatin, parimet e mëposhtme janë në plan të parë:
Gëzimi i intervistimit. Për më tepër, për të dyja palët. Në të vërtetë, nëse doni të merrni personelin më të mirë (dhe kush jo?), atëherë një intervistë nuk është një treg ku zgjidhen skllevër, por një shfaqje ku punëdhënësi dhe kandidati vlerësojnë njëri-tjetrin. Dhe nëse një kandidat lidh emocione të këndshme me një kompani, ka të ngjarë që ai të zgjedhë këtë kompani të veçantë

Intervistues të shumtë për të zbutur paragjykimet. Në Thoughtworks, programimi në çift është standardi de fakto. Dhe nëse kjo praktikë mund të zbatohet në fusha të tjera, TW përpiqet ta bëjë këtë. Në çdo fazë intervista realizohet nga 2 persona. Kështu, çdo person vlerësohet nga të paktën 8 persona, dhe TW përpiqet të zgjedhë intervistues me prejardhje të ndryshme, drejtime të ndryshme (jo vetëm teknikë) dhe gjini.

Në fund të fundit, vendimi i punësimit do të merret në bazë të mendimeve të të paktën 8 personave dhe askush nuk ka një votë vendimtare.

Punësimi i bazuar në atribute Në vend që të merret një vendim bazuar në pëlqimet ose mospëlqimet e një kandidati, zhvillohet një formular për çdo rol dhe çdo fazë që përfshin atributet që vlerësohen. Në të njëjtën kohë, gjatë vlerësimit, rekomandohet shumë të vlerësohet jo përvoja në një aftësi të caktuar, por aftësia për ta zbatuar atë. Kështu, nëse një kandidat nuk ka mundur të zbatojë ndonjë aftësi, si p.sh. TDD, por megjithatë ai përpiqet t'i zbatojë ato, dëgjon këshilla se si t'i përdorë ato në mënyrë korrekte, ai ka të gjitha mundësitë për të kaluar intervistën.

Certifikatat e arsimit nuk kërkohen TW nuk kërkon ndonjë certifikim ose arsim në Shkenca Kompjuterike. Vlerësohen vetëm aftësitë.

Kjo është intervista e parë që kam bërë me kompani të huaja për të cilat nuk më është dashur të përgatitem. Pas çdo faze, nuk ndihesha i rraskapitur, por përkundrazi, u gëzova që mund të zbatoja praktikat më të mira, që njerëzit në anën tjetër të monitorit e vlerësonin dhe i zbatonin çdo ditë.

Pas disa muajsh, mund të them se pritshmëritë e mia u përmbushën plotësisht. Si ndryshon ThoughtWorks nga një kompani e zakonshme? Në një kompani të rregullt mund të gjesh zhvillues të mirë dhe njerëz të mirë, por në TW përqendrimi i tyre është jashtë grafikëve.

Nëse jeni të interesuar t'i bashkoheni ThoughtWorks, mund të shikoni pozicionet tona të hapura këtu
Unë gjithashtu sugjeroj t'i kushtoni vëmendje vendeve të lira të punës interesante:
Inxhinieri kryesor i softuerit: Gjermani, Londër, Madrid, Singapore
Inxhinier i lartë softuerësh: Sydney, Gjermani, Манчестер, Bangkok
Inxhinier Softuerësh: Sydney, Barcelona, Милан
Inxhinier i lartë i të dhënave: Милан
Analist i cilësisë: Gjermani Kinë
Infrastruktura: Gjermani, Londër, Kili
(Dua t'ju paralajmëroj sinqerisht se lidhja është një lidhje referimi, nëse shkoni në TW, do të marr një bonus të këndshëm). Zgjidhni një zyrë që ju pëlqen, nuk keni pse të kufizoheni në Evropë, në fund të fundit, çdo 2 vjet TW do të jetë i lumtur t'ju zhvendosë në një vend tjetër, sepse ... Kjo është pjesë e politikës ThoughtWorks, kështu që kultura përhapet dhe homogjenizohet.

Mos ngurroni të bëni pyetje në komente ose të më pyesni për rekomandime.
Nëse tema duket interesante, do të shkruaj se si është të punosh në ThoughtWorks dhe si është jeta në Singapor.

Burimi: www.habr.com

Shto një koment