Si arrita në ThoughtWorks ose intervista model.

Si arrita në ThoughtWorks ose intervista model.

A mendimi, se kur po përgatiteni të ndryshoni vendin e punës dhe është e nevojshme të kaloni një intervistë, fillimisht mendoni: "duhet të përgatitem për intervistën". Të zgjidhni detyra në HackerRank, të lexoni "Crack the coding interview", të mësoni për mënyrën se si funksionon ArrayList dhe çfarë e dallon atë nga LinkedList. Ah, po, gjithashtu mund të pyesin për renditjet dhe do të ishte padyshim jo profesioniste të thoshit se quick sort është ndoshta zgjedhja më e mirë.
Por mirë, ju programoni 8 orë në ditë, zgjidhni probleme interesante dhe jo triviale, dhe në vendin tuaj të ri të punës do të bëni më shumë-më pak të njëjtën gjë. Megjithatë, për të kaluar intervistën, është e nevojshme të përgatiteni ndryshe, jo vetëm për të përmirësuar aftësitë tuaja të përditshme, por të mësoni atë që nuk ju ka nevojitur as në vendin aktual të punës, dhe ndoshta nuk do t'ju nevojitet as në të ardhmen. Në kundërshtimin tuaj që shkenca kompjuterike është në gjakun tonë, dhe sikur të na zgjoni në mes të natës, ne jemi të detyruar të shkruajmë me sytë e mbyllur në një jastëk rrethin e pemës në gjerësi pa u zgjuar, unë do të përgjigjem se nëse do të aplikohesha në cirk, dhe truku im kryesor do të ishte pikërisht kjo — atëherë ndoshta po, do të pranoja. Duhet të verifikohet kjo aftësi.

Por përse të kontrolloni aftësitë që nuk janë të lidhura me punën aktuale? Vetëm sepse është bërë trend? Sepse Google e bën kështu? Ose sepse lideri juaj i ardhshëm i ekipit duhej të mësonte të gjitha metodat e renditjes përpara se të kalonte intervistën dhe tani mendon se 'çdo programues i mirë duhet të dijë përmendësh implementimin e gjetjes së palindromit në një varg'.

Ja, nuk jeni Google (c). Ajo që Google mund të lejojë, kompanitë e zakonshme nuk mund ta përballojnë. Google, duke analizuar të dhënat e punonjësve të tij, arriti në përfundimin se inxhinierët me prejardhje olimpike realizojnë më mirë detyrat specifike. Për më tepër, duke dizenjuar procesin e seleksionit, ata mund të pranojnë riskun që disa inxhinierë të mirë mund të mos pranohen për shkak se nuk janë të aftë të zgjidhin detyrat matematikore me lehtësi. Por për ta, kjo nuk është një këngë, sepse ka shumë të interesuar për të punuar në Google, pozita do të mbyllet.
Tani, le të hedhim një sy nga dritarja, dhe nëse para zyrës suaj nuk ka ende inxhinierë që dëshirojnë të punojnë për ju, por zhvilluesit tuaj shpesh kërkojnë në stackoverflow se çfarë anotaciones Sspint duhet të instalojnë, e jo nuancat e algoritmeve të renditjes, atëherë, duket se është koha të mendoni nëse ia vlen të kopjoni Google.

Mirë, nëse këtë herë Google ju la të zhgënjyer dhe nuk ofroi një përgjigje, çfarë duhet të bëni? Kontrolloni pikërisht atë që do të bëjë zhvilluesi në punë. Çfarë vlerësoni në zhvilluesit?
Përcaktoni kriteret për kë të dëshironi të punësoni dhe zhvilloni teste që vlerësojnë këto aftësi.

ThoughtWorks

Çfarë ka të bëjë ThoughtWorks? Këtu unë gjeti një shembull të shkëlqyer të një interviste. Kush është ThoughtWorks? Në mënyrë të shkurtër, kjo është një kompani këshilluese High-End me zyra në të gjithë botën, duke filluar nga Kina, Singapori dhe duke përfunduar me kontinentet amerikane, që merret me këshillim në fushën e zhvillimit për rreth 25 vjet, me një departament shkencor të drejtuar nga Martin Fowler. Nëse kërkoni një listë me 10 libra që duhen lexuar për Inxhinierët e Softuerit, sigurisht që 2-3 prej tyre do të shkruhen nga njerëz nga ThoughtWorks, si për shembull Refactoring nga 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ë ndërtohet mbi ofrimin e shërbimeve relativisht të kushtueshme, por klienti paguan për cilësi fenomenale, e cila formohet nga ekspertiza, standardet e brendshme dhe, sigurisht, njerëzit. Prandaj, këtu është jetike të punësoni njerëzit e duhur.
Cilat janë njerëzit e duhur? Sigurisht, secili ka të tijat. ThoughtWorks ka përcaktuar se kriteret më të rëndësishme për zhvilluesit sipas modelit të tyre të biznesit janë:

  • Aftësia për të punuar në çift. Aftësia, dhe jo përvoja ose aftësia. Askush nuk pret që të vijnë njerëz që ushtrojnë Pair Programming për pesë vjet. Por të jesh i hapur ndaj mendimeve të të tjerëve, të dëgjosh — kjo është një aftësi e nevojshme.
  • Aftësia për të shkruar teste, dhe në idealin më të mirë, praktika e TDD.
  • Të kuptosh SOLID dhe OOP dhe të jesh në gjendje t'i aplikosht.
  • Të prezantosh mendimin tënd. Si konsulent, duhet të punosh me zhvilluesit e klientëve, me konsulentë të tjerë, dhe nuk ka shumë dobi nëse diçka e bën mirë, por je gjithashtu i pamundur ta shprehësh këtë tek anëtarët e tjerë të ekipit.

Tani është e rëndësishme të vlerësosh këto aftësi tek kandidati. Dhe këtu dëshiroj të ndaj përvojën time të intervistimit në ThoughtWorks. Them menjëherë se kam kaluar intervistën në Singapor dhe e kalova, por procesi i rekrutimit është unifikues dhe nuk do të ndryshojë shumë nga vendi në vend.

Hapi 0. HR

Si zakonisht, ka një intervistë 20-minutëshe me HR. Nuk do të qëndroj në këtë temë, do të them vetëm se nuk kam takuar kurrë një HR që mund të flasë 15 minuta për kulturën e zhvillimit në kompaninë, pse aplikojnë TDD, pse programim në çift. Zakonisht, në këtë pikë, HR-të e humbin interesin dhe thonë se procesi i tyre është normal: zhvilluesit zhvillojnë, testuesit testojnë, menaxherët ndjekin.

Hapi 1. Sa i mirë je në OOP, TDD?

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

Detyra Mars RoverNjë skuadër robotësh rover do të përulen nga NASA në një platë në Mars. Kjo platy është, për ironi, katrore dhe duhet të navigohet nga roverët që kamerat e tyre të bordit të mund të marrin një pamje të plotë të terrenit përreth dhe ta dërgojnë atë në Tokë. Pozita dhe lokacioni i një roveri paraqitet nga një kombinim i koordinatave x dhe y dhe një shkronjë që përfaqëson një nga katër drejtimet kardinale. Platy është ndarë në një grid 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 të majtë dhe po shikon në Verë. Për të kontrolluar një rover, NASA dërgon një varg të thjeshtë shkronjash. Shkronjat e mundshme janë ‘L’, ‘R’ dhe ‘M’. ‘L’ dhe ‘R’ e bëjnë roverin të kthehet 90 gradë në të majtë ose në të djathtë, pa u lëvizur nga vendi i tij aktual. ‘M’ do të thotë të lëvizësh përpara një pikë në grid dhe të mbash të njëjtin drejtim.
Supozoni se katrori direkt në Veri nga (x, y) është (x, y+1).
HYRESI:
Linija e parë e hyrjes janë koordinatat e sipërme të djathta të platonës, koordinatat e poshtme të majta supozohen të jenë 0,0.
Pjesa tjetër e hyrjes është informacion mbi roverët që janë dërguar. Çdo rover ka dy linja hyrjeje. Linja e parë jep pozitat e roverit, dhe linja e dytë është një seri udhëzimesh që tregojnë roverit se si të eksplorojë platonën. Pozita përbëhet nga dy numra të plotë dhe një shkronjë të ndara me hapësira, që korrespondon me koordinatat x dhe y dhe orientimin e roverit.
Çdo rover do të përfundojë në mënyrë sekondare, që do të thotë se roveri i dytë nuk do të fillojë të lëvizë deri sa i pari të përfundojë lëvizjen.
DALJA:
Dalja për çdo rover duhet të jetë koordinatat e tij përfundimtare dhe drejtimi.
SHENIME:
Thjesht implementoni kërkesat më sipër dhe provoni që një pastrues ajri funksionon duke shkruar teste unike për të.
Krijimi i çdo forme të ndërfaqes së përdoruesit është jashtë skopit.
Zgjidhja e problemit duke ndjekur një qasje TDD (Zhvillim i Bazuar në Teste) do të preferohet.
Në kohën e shkurtër në dispozicion, ne jemi më të shqetësuar për cilësinë sesa për përmbushjen.
*Nuk mund të ndaj detyrën që më dërguan, është një detyrë e vjetër që u dha disa vite më parë. Por besoni, në thelb gjithçka mbetet po ashtu.

Veç duhet të theksoj kriteret e vlerësimit. Sa herë ju ka ndodhur të përballeni me situatën kur gjërat e rëndësishme për kandidatin, nuk janë fare të rëndësishme gjatë verifikimit dhe anasjelltas? Jo të gjithë mendojnë njësoj si ju, por shumë mund të pranojnë vlerat tuaja dhe t'i ndjekin ato, nëse i shprehni qartë. Pra, nga kriteret e vlerësimit, është e qartë se aftësitë më të rëndësishme në këtë etapë janë

  • TDD;
  • Aftësia për të përdorur OOP dhe për të shkruar kod të mbështetur;
  • aftësi për programimin në çift

Pra, më paralajmëruan që të kaloj këto 1.5 orë në mendimin se si do ta kryej projektin, e jo në shkrimin e kodit. Kodin do ta shkruajmë së bashku.

Kur u takuam me telefon, ata përshkruan shkurtimisht kush janë dhe me çfarë merren dhe propozuan fillimin e zhvillimit.

Gjatë gjithë intervistës, nuk kam ndjerë asnjëherë se po isha në një intervistë. Ka një ndjesi se po zhvillon kod me një ekip. Nëse ngec ndokund — ata ndihmojnë, japin këshilla, diskutojnë, madje debatojnë me njëri-tjetrin se si është më mirë të bëhet. Gjatë intervistës, harrova se si të kontrolloja në JUnit 5 nëse një metodë hedhi një Exception — ata sugjeruan të vazhdoj të shkruaj testin, ndërkohë që njëri prej tyre po kërkonte në Google se si ta bëja këtë.

Vetëm disa orë pas intervistës, mora një feedback konstruktiv — çfarë u pëlqeu dhe çfarë jo. Në rastin tim, u lavdërua përdorimi i klasave të Siguruara si një alternativë ndaj objektit null; për shkak se para se të filloja të shkruaja kodin, shkrova pseudokod se si do doja të kontrolloja roverin, dhe kështu mora një skicë të klasave, të paktën atyre që janë të përfshira në API të robotit.

Hapi 2. Na tregoni

Një javë para intervistës, më kërkuan të përgatis një prezantim për një temë të çdo interesi. Formati është i thjeshtë dhe i njohur: 15 minuta prezantim, 15 minuta përgjigje në pyetje.
Я выбрал Clean Architecture by Uncle Bob. И опять меня интервьюировала пара человек. Это был мой первый опыт презентации на английском, и, пожалуй, если бы я был в стрессовой ситуации — я бы не справился. Но опять-таки, у меня ни разу не возникло ощущения что я на собеседовании. Все как обычно — я рассказываю, они внимательно слушают. Даже традиционная сессия вопросов и ответов была не похожа на интервью, было видно что вопросы задают не для того, чтобы “потопить”, а те, которые их действительно заинтересовали в моей презентации.

Через пару часов после собеседования получил фидбек — презентация очень полезная и они получили искреннее удовольствие от прослушивания.

Этап 3. Production Quality Code

Duke që kjo është faza e fundit e intervistave teknike, më kërkuan të çoj kodin në një gjendje të gatshme për prodhim, pas së cilës do të dërgoj kodin për rishikim dhe do të caktosh intervista, ku kërkesat për detyrën do të ndryshojnë dhe kodi do të kërkojë modifikime. Të shpejtoj përpara, mund të them se rishikimi i kodit bëhet në errësirë, rishikuesit nuk dinë as pozitat për të cilat aplikon kandidati, as nuk e shohin CV-në e tij, madje as emrin e tij.

Bisedë, dhe përsëri disa djem përtej monitorit. Të gjitha si në intervistën e parë: e rëndësishme është të mos harroni për TDD, të tregoni se çfarë po bëni dhe pse. Nëse nuk keni praktikuar më parë TDD, rekomandoj të filloni menjëherë ta bëni këtë, jo sepse është e nevojshme në kompani, por sepse ndihmon në thjeshtimin e jetës suaj, ul stresin nëse doni. E mbani mend si ishte të kërkonit për një gabim me debuggerin, që shfaqej vetëm nëpërmjet shfletuesit, dhe testet nuk e kapnin? Tani imagjinoni se duhet ta kapni një të tillë gabim gjatë intervistës — disa flokë gri janë të garantuara. Çfarë na siguron TDD? Ndryshuat kodin dhe papritur kuptoni që tani testet janë të kuqe, dhe nuk arrini ta kuptoni gabimin nga hera e parë? Ok, i themi intervistuesve “Oops”, shtypim Ctrl-Z dhe fillojmë të ecim hap pas hapi. Dhe po, aftësia për të zhvilluar duke përdorur TDD është një aftësi që duhet të kultivoni, aftësia për të shkuar drejt qëllimit në mënyrë që testet tuaja të jenë gjithmonë të gjelbërta, dhe jo të kuqe për një gjysmë dite, sepse “keni një refaktorizim të madh”. Ky është një aftësi e tillë si të shkruani kod të mirëmbajtshëm, ose kod produktiv.

Pra efektivitetin e kodit tuaj në përputhje me ndryshimet vendos dizajni që keni ndërtuar fillimisht, sa i thjeshtë është ai dhe cilësia e testeve tuaja.

Pas intervistës, mora feedback brenda disa orësh. Në këtë pikë, kuptova se i kisha bërë pothuajse të gjitha dhe mbetej vetëm pak deri te 'takimi me Fowler-in'.

Hapi 4. Finale. Pyetje të mjaftueshme teknike. Duam të dimë kush je!

Sinqerisht, ky pyetje më ka shqetësuar disi. Si mund të kuptojmë se çfarë personi jam pas një ore bisedë? E sidomos si mund ta kuptojmë këtë kur flas një gjuhë që nuk është gjuhë ime amtare, madje, sinqerisht, mjaft keq dhe paqëndrueshëm. Në intervistat e mëparshme, për mua ka qenë më e lehtë të tregoj se sa të përgjigjem në pyetje, dhe gjithçka është për shkak të aksentit. Të paktën një nga intervistuesit ishte aziatik – dhe aksenti i tyre është, le të themi kështu, disi specifik për veshin evropian. Prandaj vendosa të aplikoj një qasje proaktive – të përgatit një prezantim për veten dhe në fillim të intervistës të ofroj të flas për veten me këtë prezantim. Nëse ata pajtohen – atëherë të paktën do të ketë më pak pyetje për mua, nëse e refuzojnë ofertën – mirë, 3 orë të jetës sime, të shpenzuara për prezantimin – nuk është çmimi aq i lartë. Por çfarë duhet të shkruaj në prezantim? Biografinë – Lindur aty, atëherë, shkoi në shkollë, përfundoi universitetin – kujt i intereson kjo?

Nëse bëni pak kërkime në kulturën e Thoughtworks, do të gjeni një artikull të Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html], ku përshkruhen 3 Pillars: Biznesi i Qëndrueshëm, Ekselenca në Softuer dhe Drejtësia Sociale.

Supozoni se Ekselenca në Softuer më është verifikuar tashmë. Më mbetet të tregoj për Biznesin e Qëndrueshëm dhe Drejtësinë Sociale.

Për këtë arsye, vendosa të theksoj të fundit.

Në fillim shpjegova pse ThoughtWorks — në institut kam lexuar blogun e Martin Fowler, nga këtu edhe dashuria për Clean Code.

Projektet gjithashtu mund të paraqiten nga këndvështrime të ndryshme. Kam zhvilluar softuer për mjekësinë që e përmirësonte jetën e pacientëve dhe madje sipas thashethemeve shpëtoi një jetë. Kam zhvilluar gjithashtu softuer për banka, gjithashtu një lloj lehtësimi për qytetarët. Sidomos nëse kjo bankë përdoret nga rreth 70% e popullsisë së vendit. Nuk po flas për Sberbank dhe as për Rusinë.

Doni të dini më shumë për mua? Mirë. Hobi im është fotografi, kështu që e kam mbajtur një aparat fotografik në duar për rreth 10 vjet, kam disa fotografi që nuk është shumë turp t'i tregoj. Po ashtu, për një periudhë kohore, kam ndihmuar një strehë për mace: kam fotografuar macet që kishin nevojë për një shtëpi të përhershme. Me fotografi të mira, gjetja e një shtëpie për një mace është shumë më e lehtë. Ndoshta kam filmuar rreth njëqind mace 🙂

Në fund, 80% e prezantimit tim ishte e mbushur me mace.

Menjëherë pas prezantimit, HR-i më shkroi se ai ende nuk e di rezultatin e intervistës, por zyrën e gjithë ekipi ishte impresionuar nga macet.

Në fund, arrita të prisja reagimin – të gjithë ishin të kënaqur me mua si person.

Por HR-i gjatë bisedës përfundimtare më tregon se Drejtësia Sociale është shumë e mirë dhe e nevojshme, por jo të gjitha projektet janë të tilla. Dhe më pyeti nëse kjo më frikëson. Në përgjithësi, e teprova pak me Drejtësinë Sociale, ndodhin.

Përfundimi

Si rezultat, unë kam punuar tani disa muaj në Singapor në Thoughtworks, shoh se këtu shumë kompani po miratojnë 'praktikat më të mira të intervistës' nga Google, duke përdorur fletë dhe Whiteboard për kodimin, edhe pse njohuritë përtej Spring-it, Symfony, RubyOnRails (duhet theksuar) nuk kërkohen në punë. Inxhinierët marrin një javë pushim para intervistës për të 'u përgatitur'.

Në Thoughtworks, përveç kërkesave të arsyeshme për kandidatin, vendosen këto parime:
Gëzimi i Intervistës. Në të vërtetë, nëse dëshiron të marrësh kandidatë të mirë (dhe kush nuk do?), intervista nuk është një treg ku zgjidhen skllevër, por një takim ku si punëdhënësi ashtu edhe kandidati vlerësojnë njëri-tjetrin. Dhe nëse kandidati ka emocione pozitive lidhur me kompaninë — ka të ngjarë që ai të zgjidhë pikërisht atë kompani.

Intervistues të shumëfishtë për të reduktuar paragjykimin. Në Thoughtworks, programimi në çift është standardi i përdorur. Dhe nëse kjo praktikë mund të aplikohet në fusha të tjera, TW përpiqet ta bëjë atë. Në çdo fazë, intervista zhvillohet nga 2 persona. Pra, çdo person vlerësohet nga të paktën 8 persona, dhe TW përpiqet të zgjedhë intervistues me origjinë të ndryshme, nga drejtime të ndryshme (jo vetëm teknikë) dhe nga seks të ndryshëm.

Në fund, vendimi për punësimin do të merret mbi bazën e opinionit të të paktën 8 personave dhe askush nuk ka të drejtë të ketë një votë vendimtare.

Rekrutimi i bazuar në atributet Në vend që të bëni një vendim të bazuar në "më pëlqen/nuk më pëlqen" për kandidatin, për çdo rol dhe për çdo fazë është zhvilluar një formular që përfshin atributet e vlerësuara. Në këtë mënyrë, gjatë vlerësimit këshillohet shumë të vlerësohet jo përvoja në një aftësi të caktuar, por aftësia për ta përdorur atë. Kështu, nëse një kandidat nuk ka pasur mundësi të aplikohet ndonjë aftësi, si TDD, megjithatë ai përpiqet ta aplikojë, dëgjon këshillat mbi përdorimin e duhur — ai ka të gjitha shanset për të kaluar intervistën.

Certifikatat e Arsimit nuk kërkohen TW nuk kërkon nga kandidati certifikata të detyrueshme ose arsimim në Shkencat Kompjuterike. Vlerësohen vetëm aftësitë.

Ky ishte intervista e parë, nga ato që kam kaluar në kompani të huaja, për të cilën nuk mu desh të përgatitem. Pas çdo faze, unë nuk e ndjeja veten si limon të shtrydhur, përkundrazi, isha i lumtur që mund të aplikoj praktikat më të mira, që njerëzit përballë monitorit e vlerësojnë këtë, dhe gjithashtu aplikojnë ato çdo ditë.

Pas disa muajsh, mund të them se pritjet u përmbushën plotësisht. Çfarë e bën ThoughtWorks ndryshe nga një kompani normale? Në një kompani normale, mund të gjeni zhvillues të mirë dhe njerëz të këndshëm, por përqendrimi i tyre në TW është jashtëzakonisht i lartë.

Nëse dëshironi të bashkoheni me ThoughtWorks, mund të shihni pozitat e hapura këtu
Po ashtu, sugjeroj të keni parasysh këto pozita interesante:
Inxhinier i Sofistikuar i Softuerit: Германия, Londër, Madrid, Singapor
Inxhinier i Sofistikuar i Softuerit: Sidnei, Германия, Manchester, Bangkokun
Inxhinier i Softuerit: Sidnei, Barcelona, Milano
Inxhinier i Sofistikuar i të Dhënave: Milano
Analist i Cilësisë: Германия Kina
Infrastrukturë: Германия, Londër, Чили
(Dua të paralajmëroj se linku është referues, nëse ju kaloni në TW, do të marr një bonus të këndshëm). Zgjidhni zyrën sipas dëshirës, nuk është e domosdoshme të kufizoheni vetëm në Evropë, në fund të fundit, çdo 2 vjet TW do të jetë i lumtur t'ju transferojë në një vend tjetër, pasi kjo është pjesë e politikës së ThoughtWorks, meqë kultura shpërndahet dhe standardizohet.

Mos hezitoni të bëni pyetje në komente ose të më kërkoni të ju rekomandoj.
Nëse tema duket interesante, do të shkruaj për si është të punosh në ThoughtWorks dhe si është jeta në Singapor.

Burimi: habr.com

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster