
A ju duket e çuditshme që kur po mendoni të ndryshoni vendin e punës dhe duhet të kaloni një intervistë, në radhë të parë mendoni "duhet të përgatitem për intervistën". Të zgjidhni probleme në HackerRank, të lexoni Crack the Coding Interview, të mësoni se si funksionon ArrayList dhe çfarë e ndan atë nga LinkedList. Oh po, mund të pyesin edhe për renditjet, dhe do të ishte qartë joprofesional të thuash se quick sort do të ishte ndoshta zgjedhja më e mirë.
Por prit, ti po programon 8 orë në ditë, zgjidh interesante dhe jo-triviale, dhe në vendin e ri do të bësh përafërsisht të njëjtën gjë. Megjithatë, që të kalosh intervistën duhet të përgatitesh ndryshe, madje jo për të përmirësuar aftësitë e përditshme, por për të mësuar atë që nuk të ka nevojitet as në vendin e tanishëm të punës dhe as që do të jetë e nevojshme në të ardhmen. Për kundërshtimet e tua për shkencën kompjuterike që është në gjakun tonë, dhe se nëse na zgjon në mes të natës duhet të jemi në gjendje të shkruajmë me sytë e mbyllur një traversal në gjerësi të pemës madje pa u zgjuar plotësisht, do t'i përgjigjem se nëse po shkoj për të punuar në cirk dhe truku im kryesor është pikërisht kjo - atëherë ndoshta, po, do ta pranoja. Duhet ta verifikoj këtë aftësi.
Por pse të verifikoni aftësi që nuk janë relevante për punën aktuale? Vetëm sepse është bërë modë? Sepse Google i bën kështu? Apo sepse lideri juaj i ardhshëm duhet të ketë mësuar të gjitha metodat e renditjes para 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".
Pra, ju nuk jeni Google (c). Çfarë mund të lejojë Google, kompanitë e zakonshme nuk mund ta bëjnë. Google, pas analizimit të të dhënave të punonjësve të tij, arriti në përfundimin se inxhinierët me një të kaluar olimpike e kanë më të lehtë të punojnë me detyrat konkrete. Më shumë se kaq, duke ndërtuar procesin e përzgjedhjes, ata mund të lejojnë riskun që të mos punësojnë disa inxhinierë të mirë për shkak të faktit se nuk dinë të zgjidhin aq lehtë detyrat matematikore. Por për ta kjo nuk është problem, 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 përpara zyrës tuaj ende ka inxhinierë që duan të punojnë me ju, dhe zhvilluesit tuaj shpesh kërkojnë në stackoverflow se çfarë annotimesh për Spring duhet të vendosin, dhe jo nuancat e algoritmeve të renditjes, atëherë, duket se është koha të mendoni nëse vlen të kopjoni Google.
Mirë, nëse këtë herë Google e ka dështuar dhe nuk dha përgjigje, çfarë të bëni? Të kontrolloni atë që zhvilluesi do të bëjë në punë. Çfarë vlersoni te zhvilluesit?
Përgatitni kritere se kë dëshironi të punësoni dhe zhvilloni teste që verifikojnë pikërisht këto aftësi.
ThoughtWorks
Po ku hyn ThoughtWorks në këtë kontekst? Pikerisht, këtu gjeta një shembull të një intervistimi të shkëlqyer. Kush janë ThoughtWorks? Në përmbledhje, ato janë një kompani konsulence High-End me zyra në të gjithë botën, nga Kina dhe Singapori deri në kontinentet amerikane, që ofron konsulencë në zhvillim për rreth 25 vjet, me një departament Shkencor të udhëhequr nga Martin Fowler. Nëse kërkoni një listë prej 10 librash që duhet të lexohen për Inxhinierët e Softuerit, ndoshta 2-3 prej tyre do të jenë shkruar nga djemtë e ThoughtWorks, siç janë 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 mjaft të shtrenjta, por klienti paguan për cilësi fenomenale, e cila formohet nga eksitenca, standardet e brendshme dhe, sigurisht, njerëzit. Prandaj, këtu është jetike të punësoni njerëz të duhur.
Cilin lloj njerëzish konsiderojmë të duhur? Sigurisht, për secilin janë të ndryshme. ThoughtWorks përcaktoi se për modelin e tyre të biznesit, kriteret më të rëndësishme për zhvilluesit janë:
- Aftësia për zhvillim në çift. Aftësi, dhe jo përvojë apo talent. Askush nuk pret që të vijnë njerëz që praktikojnë Programimin në çift për 5 vjet. Por të jesh i hapur për mendimet e të tjerëve, të dish të dëgjosh - kjo është një aftësi e nevojshme.
- Aftësia për të shkruar teste, dhe idealisht për të praktikuar TDD.
- Të kuptosh SOLID dhe OOP dhe të jesh në gjendje t'i aplikosh ato.
- Të prezantosh mendimin tënd. Një konsulent duhet të punojë me zhvilluesit e klientit, me konsulentë të tjerë, dhe nuk ka shumë dobi nëse dikush di të bëjë diçka mirë, por nuk është i aftë ta transmetojë këtë te anëtarët e tjerë të ekipit.
Tani me është e rëndësishme të vlerësohet pikërisht këto aftësi te kandidati. Këtu dua të flas për përvojën time në intervistat në ThoughtWorks. Të them të drejtën, unë kam kaluar në Singapor dhe e kalova, por procesi i rekrutimit është i unifikuar dhe nuk do të ndryshojë shumë nga vendi në vend.
Etapa 0. HR
Siç ndodh shpesh, intervista 20-minutëshe me HR-in. Nuk do të ndalem shumë këtu, do të them vetëm se kurrë më parë nuk kam takuar HR që mund të flasë për 15 minuta rreth kulturës së zhvillimit në kompani, pse ata zbatojnë TDD, pse programimi në çift. Zakonisht, në këtë pikë, HR-it fillojnë të humbin interesin dhe tregojnë se procesi i tyre është i zakonshëm: zhvilluesit zhvillojnë, testuesit testojnë, menaxherët udhëhoqim.
Etapa 1. Sa i mirë je në OOP, TDD?
1.5 orë para fillimit të intervistës, më dërguan një detyrë për të bërë një simulator të Mars Rover.
Detyra e Mars RoverNjë ekuipazh robotik i roverëve do të zbresë nga NASA në një pagasherë në Mars. Kjo pagasherë, e cila është kurioze katrore, duhet të navigohet nga roverët në mënyrë që kamerat e tyre të bordit të kenë një pamje të plotë të terrenit përreth për ta dërguar përsëri në Tokë. Pozita dhe lokacioni i një roveri përfaqësohen nga një kombinim i koordinatave x dhe y dhe një shkronjë që përfaqëson një nga katër piketat kardinale të kompasit. Pagasherja është e ndarë në një rrjet për të thjeshtuar navigimin. Një pozition shembull mund të jetë 0, 0, N, që do të thotë se roveri ndodhet në qoshen juglindore dhe është duke iu afruar Verit.
Supozoni se katrori direkt në veri nga (x, y) është (x, y+1).
HYRJA:
Rreshti i parë i hyrjes është koordinatat e sipërme të djathta të pagasherë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 rreshta hyrjeje. Rreshti i parë jep pozicionin e roverit, dhe rreshti i dytë është një seri udhëzimesh që i thonë roverit si të eksplorojë pagasherën. Pozicioni përbëhet nga dy numra të plotë dhe një shkronjë të ndara me hapësira, përkatësisht për koordinatat x dhe y dhe orientimin e roverit.
Çdo rover do të përfundojë radhazi, që do të thotë se roveri i dytë nuk do të fillojë të lëvizë deri sa i pari të ketë përfunduar lëvizjen.
DALJA:
Dalja për çdo rover duhet të jetë koordinatat e tij përfundimtare dhe orientimi.
VËREJTJE:
Thjesht realizoni kërkesat e mësipërme dhe provoni funksionimin e një pastrues me shkrimin e testeve unike për të.
Krijimi i çdo forme të ndërfaqes së përdoruesit është jashtë përfitimit.
Zgjidhja e problemit duke ndjekur një qasje TDD (Zhvillim i Udhezuar nga Testet) do të preferohet.
Në kohën e shkurtër në dispozicion, ne jemi më të interesuar për cilësinë sesa për plotësinë.
*Nuk mund të ndaj detyrën që më dërguan, kjo është një detyrë e vjetër që është dhënë disa vite më parë. Por besoni, në thelb gjithçka ka mbetur ashtu siç ishte.
Duhet të theksojmë kriteret e vlerësimit. Sa herë ju është dashur të përballeni me situata ku gjërat e rëndësishme për kandidatin nuk kanë rëndësi gjatë kontrollit dhe anasjelltas. Nuk të gjithë mendojnë njëlloj si ju, por shumë mund të pranojnë vlerat tuaja dhe t'i ndjekin ato, nëse ato janë të shkruara qartë. Pra, nga kriteret e vlerësimit është 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 kod të mbështetur;
- aftësitë për programim në çift
Pra, më këshilluan që të kaloj këto 1.5 orë duke menduar se si do ta realizoja detyrën, jo duke shkruar kodin. Këtë do ta shkruajmë së bashku.
Kur folëm, djemtë përshkruan për shkurt atë që janë dhe me çfarë merren dhe sugjeruan të fillojmë zhvillimin.
Gjatë gjithë intervistës nuk kam ndjerë asnjëherë se ndodhem në një intervistë punë. Ka një ndjenjë se je duke zhvilluar kod në ekip. Nëse ke ndonjë bllokim — ata ndihmojnë, japin këshilla, diskutojnë, madje diskutojnë mes tyre se si është më mirë të bëhet. Gjatë intervistës harrova si të kontrolloja në JUnit 5 që një metodë të hedhë një Exception — ata propozuan të vazhdojmë të shkruajmë testin, ndërkohë që një nga ta po kërkonte në Google si ta bëjmë këtë.
Pak 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 Sealed si një alternativë ndaj objektit null; për faktin se përpara se të shkruaja kodin, shkrova pseudokod se si do të doja të menaxhoja roverin, dhe kështu mora një skicë të klasave, të paktën ato që janë të përfshira në API-në e robotit.
Faza 2. Trego na
Një javë para intervistës më kërkuan të përgatis një prezantim mbi ndonjë temë që më intereson. Formati është i thjeshtë dhe i zakonshëm: 15 minuta prezantim, 15 minuta përgjigje në pyetje.
Zgjodha Clean Architecture nga Uncle Bob. Përsëri, dy persona më intervistuan. Ky ishte përvoja ime e parë e prezantimit në anglisht, dhe ndoshta, nëse do isha në një situatë stresi — nuk do të kisha arritur. Por përsëri, nuk kisha ndjesinë se isha në një intervistë. Të gjitha si zakonisht — unë flas, ata dëgjojnë me vëmendje. Edhe sesioni tradicional i pyetjeve dhe përgjigjeve nuk i ngjante një interviste, ishte e qartë se pyetjet bëheshin jo për të “topitur”, por ato që me të vërtetë i interesonin në prezantimin tim.
Pak orë pas intervistës, mora feedback — prezantimi ishte shumë i dobishëm dhe ata patën kënaqësi të sinqertë ndërsa e dëgjonin.
Faza 3. Kod cilësor për prodhim
Duke e paralajmëruar se kjo ishte faza e fundit e intervistave teknike, më kërkuan të çojë kodin në një gjendje gatishmërie për prodhim, pas së cilës duhet ta dërgoj kodin për rishikim dhe të caktoj një intervistë, ku kërkesat për detyrën do të ndryshojnë dhe kodin do të kërkohet modifikim. Po e them përpara, mund të them se rishikimi i kodit kryhet në mënyrë të verbër, rishikuesit nuk dinë as pozitat për të cilat kandidati po aplikon, nuk shohin CV-në e tij, asnjëherë nuk e dinë emrin e tij.
Një telefonatë, dhe përsëri dy djem nga ana tjetër e monitorit. Të gjitha si në intervistën e parë: e rëndësishme është të mos harrosh TDD, të tregosh se çfarë bësh dhe pse. Nëse nuk e ke praktikuar më parë TDD, të rekomandoj të fillosh menjëherë ta bësh këtë, jo sepse është e nevojshme në kompani, por sepse e thjeshton jetën tuaj ndjeshëm, ul nivelin e stresit nëse dëshiron. A e ke kujtuar si ishe në kërkim të një gabimi me debuggerin, i cili shpërthente vetëm nëpërmjet shfletuesit, dhe me testet nuk mund ta riprodhoje? Tani imagjino se duhet ta gjesh një gabim të tillë gjatë një interviste — disa flokë të bardhë janë të garantuar. Çfarë na garanton TDD? Ke ndryshuar kodin dhe të papritur ke kuptuar se tani testet janë të kuqe, dhe nuk mund ta kuptosh gabimin nga hera e parë? Ok, i themi intervistuesve "Ups", shtypim Ctrl-Z dhe fillojmë të ecim me hapa të vegjël përpara. Po, aftësia për të zhvilluar duke përdorur TDD, duhet ta kultivosh tek vetja, aftësia për të shkuar drejt qëllimit në mënyrë që testet твоjа të jenë përherë të gjelbra, e jo të kuqe për një ditë të tërë, sepse "ke një refaktoring të madh". Kjo është një aftësi e barabartë, siç është aftësia për të shkruar kod të mbështetur, ose kod performues.
Pra, sa mirë kodin tuaj e ndryshon varet nga dizajni që keni vendosur fillimisht, sa i thjeshtë është ai dhe sa të mira janë testet tuaja.
Pas intervistës mora një feedback brenda disa orësh. Në këtë fazë kuptova se praktikisht e kisha kaluar dhe kishte mbetur pak deri në "takimin me Fowler-in".
Faza 4. Finale. Mjaft pyetje teknike. Duam të dimë kush je!
Sinqer se, kjo formulim i pyetjeve më ka lënë pak të hutuar. Si mund të kuptosh se çfarë njeriu jam brenda një ore bisedë? Akoma më shumë, si mund të kuptohet kjo kur flas në një gjuhë që nuk është amtare për mua, dhe sinqerisht duke folur, mjaft keq dhe me vështirësi. Në intervistat e mëparshme, për mua ishte më e lehtë të flisja për veten sesa të përgjigjesha në pyetje, dhe kjo për shkak të aksentit. Së paku, një nga intervistuesit ishte aziatik — dhe aksenti i tyre është, le të themi, paksa specifik për veshin evropian. Prandaj, vendosa të aplikoj një qasje proaktive — për të përgatitur një prezantim për veten time dhe në fillim të intervistës të ofroj që të flas për veten 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 e refuzojnë ofertën — mirë, 3 orë të jetës time të shpenzuara për prezantimin — nuk është një çmim kaq i lartë. Por çfarë të shkruaj në prezantim? Biografinë — Kam lindur aty-këtu, atëherë, fillova shkollën, përfundova universitetin — kujt i bëhet qejfi për këtë?
Nëse kërkoni pak për kulturën e Thoughtworks, mund të gjeni një artikull të Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html], në të cilin përshkruhen 3 Pillars: Sustainable Business, Software Excellence, dhe Social Justice.
Supozoni që Software Excellence tashmë është kontrolluar. Mbete për të treguar Sustainable Business dhe Social Justice.
Veçanërisht vendosa të fokusohesha në të fundit.
Fillimisht tregova pse ThoughtWorks — gjatë universitetit kam lexuar blogun e Martin Fowler, nga aty dhe dashuria për Clean Code.
Projektet gjithashtu mund të prezantohen nga kënde të ndryshme. Kam zhvilluar dhe për mjekësinë softuerë që e thjeshtuan jetën e pacientëve, dhe madje sipas thashethemeve, shpëtuan një jetë. Kam zhvilluar gjithashtu softuer për bankat, gjithashtu një lloj thjeshtimi të jetës për qytetarët. Sidomos nëse ajo bankë përdoret nga rreth 70% e popullsisë së vendit. Nuk po flas për Sberbank, as për Rusinë.
Doni të dini për mua? OK. Hobiji im — fotografi, ndryshe-dy është mbajtur aparati në duar për gati 10 vjet, kam fotografi që nuk janë shumë turp të tregoj. Po ashtu, një kohë, ndihmoja një strehë për mace: fotografova macet që kishin nevojë për një shtëpi të përhershme. Me fotografi të mira, është shumë më e lehtë të gjej një shtëpi për një mace. Ndoshta kam fotografuar rreth njëqind mace 🙂
Në fund, 80% e prezantimit tim ishte e mbushur me mace.
Pasi prezantimit, HR më shkroi se ende nuk e di rezultatet e intervistës, por gjithë zyrën e ka impresionuar macet.
Në fund, prisja feedback-un — e kënaqa të gjithë si individ.
Por HR gjatë bisedës përfundimtare e përmendi në mënyrë taktike se Drejtësia Sociale është shumë e mirë dhe e domosdoshme, por jo të gjithë projektet janë të tilla. Dhe pyeti nëse kjo më tremb. Po, ndoshta e tepruam pak me Drejtësinë Sociale, ndodh 🙂
Përfundimi
Si pasojë, tashmë kam disa muaj që punoj në Singapor në Thoughtworks, vërej se edhe këtu shumë kompani po adoptojnë 'praktikat më të mira të intervistimit' nga Google, duke përdorur letra dhe Whiteboard për kodimin, edhe pse njohuri 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 ndaj kandidatëve, përfshihen këto principe:
Gëzimi i Intervistimit. Kjo për të dyja palët. Vërtet, nëse dëshironi të merrni individët më të mirë (e kë nuk do?), atëherë intervista nuk është një treg ku zgjidhen skllevërit, por një takimi ku edhe punëdhënësi, edhe kandidati vlerësojnë njëri-tjetrin. Dhe nëse kandidati lidhet me emocionet pozitive me kompaninë, është shumë e mundur që ai të zgjedhë pikërisht këtë kompani.
Intervistues të shumtë për të zvogëluar paragjykimet. Në Thoughtworks, programimi në çift është standardi de facto. Dhe nëse kjo praktikë mund të aplikohet në fusha të tjera, TW përpiqet ta bëjë. Në çdo fazë, intervista kryhet nga 2 persona. Kështu, çdo individ vlerësohet nga të paktën 8 persona, dhe TW përpiqet të zgjedhë intervistues me background të ndryshëm, nga fusha të ndryshme (jo vetëm teknikë) dhe gjinive.
Në fund, vendimi për pranimin në punë do të merret bazuar në opinionin e të paktën 8 personave, dhe askush nuk ka të drejtën e një vote vendimtare.
Rekrutimi i bazuar në atributet Në vend që të merrni një vendim bazuar në "pëlqen/pëlqen", 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, rekomandohet të vlerësohet jo përvoja në një aftësi të caktuar, por aftësia për ta aplikuar atë. Kështu, nëse kandidati nuk ka pasur mundësi të aplikojë disa aftësi si TDD, por megjithatë përpiqet ta zbatojë atë, dëgjon këshilla për përdorimin e duhur - ai ka shanset e tij për të kaluar intervistën.
Dëshmitë e arsimimit nuk kërkohen TW nuk kërkon nga kandidati dëshmi ose arsimim të detyrueshëm në Informatikë. Vlerësohen vetëm aftësitë.
Ky është intervista e parë, nga ato që kam kaluar në kompani të huaja, për të cilën nuk më duhej të përgatitem. Pas çdo faze, nuk ndihesha si një limon i shtrydhur, përkundrazi, isha i lumtur që mund të zbatoja praktikat më të mira, që njerëzit përtej monitorit e vlerësojnë këtë dhe gjithashtu i zbatojnë ato çdo ditë.
Pas disa muajsh, mund të them se pritjet u justifikuan plotësisht. Çfarë e ndryshon ThoughtWorks nga një kompani të zakonshme? Në një kompani të zakonshme mund të gjeni zhvillues të mirë dhe njerëz të këndshëm, por përqendrimi i tyre në TW është shumë më i lartë.
Nëse dëshironi të bashkoheni me ThoughtWorks, mund të shihni vendet e lira të punës
Gjithashtu, sugjeroj të shikoni vendet interesante të punës:
Inxhinier Kryesor i Softuerëve: , , ,
Inxhinier i Lartë i Softuerëve: , , ,
Inxhinier Softueri: , ,
Inxhinier i Lartë i të Dhënave:
Analist Cilësie:
Infrastruktura: , ,
(Dua të paralajmëroj sinqerisht se lidhja është referuese, nëse kaloni në TW, do të marrë një bonus të këndshëm). Zgjidhni zyrën që ju pëlqen, nuk është e nevojshme të kufizoheni vetëm në Evropë, sepse çdo 2 vjet TW do të jetë i lumtur t'ju transferojë në një vend tjetër, si pjesë e politikës së ThoughtWorks, kështu që kultura shpërndahen dhe standardizohet.
Mos hezitoni të bëni pyetje në komente ose të më kërkoni që t'ju rekomandoj.
Nëse tema duket interesante, do të shkruaj për atë si është të punosh në ThoughtWorks dhe si është jeta në Singapor.
Burimi: habr.com
