Kako sam ušao u ThoughtWorks ili ogledni intervju

Kako sam ušao u ThoughtWorks ili ogledni intervju

Ne čini li vam se čudno da kada se spremate promijeniti posao i pojavi se potreba da prođete intervju, prvo što pomislite je “trebate se pripremiti za intervju”. Riješite probleme na HackerRank-u, pročitajte Crack the coding interview, zapamtite kako ArrayList radi i po čemu se razlikuje od LinkedLista. O da, mogli bi pitati i za sortiranje, a očito bi bilo neprofesionalno reći da bi brzo sortiranje najvjerojatnije bio najbolji izbor.
Ali čekajte, vi programirate 8 sati dnevno, rješavate zanimljive i netrivijalne probleme, a na novom poslu ćete raditi isto, plus ili minus. Ali svejedno, da biste prošli intervju, morate se nekako dodatno pripremiti, čak ni ne brusiti svoje svakodnevne vještine, već naučiti nešto što vam na sadašnjem poslu nije trebalo, a teško da će vam trebati na sljedećem. Na vaše prigovore da nam je informatika u krvi i ako nas probudite usred noći, dužni smo zatvorenih očiju napisati na jastučnici šetnju po širini stabla, a da uopće ne dođemo k sebi, odgovorit ću da ako se zaposlim u cirkusu, a moj glavni trik bi bio upravo ovo - onda možda da, slažem se. Ovu vještinu treba testirati.

Ali zašto testirati vještine koje su nebitne za vaš trenutni posao? Samo zato što je postalo moderno? Zato što Google to radi? Ili zato što je vaš budući voditelj tima morao naučiti sve metode sortiranja prije intervjua i sada vjeruje da "svaki dobar programer mora znati napamet implementaciju pronalaženja palindroma u nizu."

Pa ti nisi Google (c). Ono što si Google može priuštiti, obične tvrtke ne mogu. Google je, analizirajući podatke svojih zaposlenika, došao do zaključka da su inženjeri s olimpijadnim iskustvom dobri u rješavanju njegovih specifičnih zadataka. Štoviše, osmišljavanjem procesa odabira mogu si priuštiti rizik da možda neće zaposliti nekoliko dobrih inženjera jer ne mogu lako riješiti matematičke probleme. Ali njima to nije problem, ima mnogo ljudi koji žele raditi u Googleu, pozicija će biti zatvorena.
Sada pogledajmo kroz prozor, i ako ispred vašeg ureda inženjeri koji žele raditi za vas još nisu postavili šatorski kamp, ​​a vaši programeri češće traže stackoverflow za sljedeću proljetnu napomenu koju treba instalirati, nego zamršenosti algoritama za rangiranje, onda je, očito, vrijeme da razmislite trebate li kopirati Google.

Pa, ako ovaj put Google nije uspio i nije dao odgovor, što trebate učiniti? Provjerite točno što će programer raditi na poslu. Što cijenite kod programera?
Napravite kriterije za to koga želite zaposliti i razvijte testove koji testiraju upravo te vještine.

ThoughtWorks

Što ThoughtWorks ima s ovim? Ovdje sam pronašao primjer uzornog intervjua za sebe. Tko su ThoughtWorks? Ukratko, riječ je o High-End konzultantskoj tvrtki s uredima po cijelom svijetu, od Kine, Singapura do američkih kontinenata, koja se bavi savjetovanjem u području razvoja već oko 25 godina, ima vlastiti Science division, na čelu s Martinom Lovac. Ako tražite popis od 10 knjiga koje morate pročitati za softverskog inženjera, onda će možda 2-3 od njih napisati dečki iz ThoughtWorksa, kao što je Refactoring od Martina Fowlera i Building Microservices: Designing Fine-Grained Systems od Sama Newman ili izgradnja evolucijskih arhitektura
Patrick Kua, Rebecca Parsons, Neal Ford.

Poslovanje tvrtke temelji se na pružanju prilično skupih usluga, ali kupac plaća fenomenalnu kvalitetu koja se sastoji od stručnosti, internih standarda i, naravno, ljudi. Stoga je zapošljavanje pravih ljudi ovdje ključno.
Kakvi su ljudi u pravu? Naravno, za svakoga ima drugačije. ThoughtWorks je utvrdio da su najvažniji kriteriji za njihov poslovni model razvojnih programera:

  • Sposobnost razvoja u paru. To je sposobnost, a ne iskustvo ili vještina. Nitko ne očekuje da će doći ljudi koji već 5 godina prakticiraju programiranje u parovima, ali biti prijemčiv za tuđa mišljenja i znati slušati je neophodna vještina.
  • Sposobnost pisanja testova i idealno vježbanje TDD-a
  • Razumjeti SOLID i OOP i moći ih primijeniti.
  • Iznesite svoje mišljenje. Kao konzultant morate raditi s programerima klijenta, s drugim konzultantima i nema neke koristi ako osoba zna nešto dobro napraviti, ali je potpuno nesposobna to prenijeti ostatku tima.

Sada je važno procijeniti te posebne vještine kod kandidata. I ovdje želim govoriti o svom iskustvu intervjuiranja u ThoughtWorksu. Odmah ću reći da sam otišao u Singapur i prošao, ali proces zapošljavanja je unificiran i neće se puno razlikovati od zemlje do zemlje.

Stadij 0. HR

Kako to često biva, 20-minutni intervju s HR-om. Neću duljiti o tome, samo ću reći da nikada nisam sreo HR osobu koja bi mogla 15 minuta pričati o razvojnoj kulturi u tvrtki, zašto koriste TDD, zašto programiranje u paru. Obično se HR-ovi ne slažu s tim pitanjem i kažu da je njihov proces normalan: programeri razvijaju, testeri testiraju, menadžeri voze.

Faza 1. Koliko ste dobri u OOP-u, TDD-u?

1.5 sat prije početka intervjua dobio sam zadatak da napravim simulator Mars Rovera.

Misija rovera na MarsOdred robotskih rovera NASA će spustiti na plato na Marsu. Ovim platoom, koji je čudno pravokutnog oblika, moraju upravljati roveri kako bi njihove ugrađene kamere mogle dobiti potpuni pogled na okolni teren i poslati ga natrag na Zemlju. Položaj i lokacija rovera predstavljeni su kombinacijom x i y koordinata i slova koje predstavlja jednu od četiri glavne točke kompasa. Visoravan je podijeljena u mrežu radi lakšeg snalaženja. Primjer položaja može biti 0, 0, N, što znači da je rover u donjem lijevom kutu i okrenut prema sjeveru. Kako bi upravljala roverom, NASA šalje jednostavan niz slova. Moguća slova su 'L', 'R' i 'M'. 'L' i 'R' vrte rover za 90 stupnjeva ulijevo ili udesno, bez pomicanja sa svog trenutnog mjesta. 'M' znači pomicanje naprijed za jednu točku mreže i zadržavanje istog smjera.
Pretpostavimo da je kvadrat izravno sjeverno od (x, y) (x, y+1).
ULAZNI:
Prvi redak unosa su gornje desne koordinate platoa, za donje lijeve koordinate se pretpostavlja da su 0,0.
Ostatak unosa su informacije koje se odnose na rovere koji su raspoređeni. Svaki rover ima dvije linije unosa. Prvi red daje položaj rovera, a drugi red je niz uputa koje govore roveru kako istražiti visoravan. Položaj se sastoji od dva cijela broja i slova odvojenih razmacima, koji odgovaraju x i y koordinatama i orijentaciji rovera.
Svaki rover će biti završen uzastopno, što znači da se drugi rover neće početi kretati sve dok prvi ne završi s kretanjem.
IZLAZ:
Izlaz za svaki rover bi trebao biti njegove konačne koordinate i smjer.
NAPOMENE:
Jednostavno primijenite gore navedene zahtjeve i dokažite da usisavač radi tako što ćete napisati jedinične testove za njega.
Izrada bilo kakvog oblika korisničkog sučelja je izvan dosega.
Rješavanje problema prema TDD (Test Driven Development) pristupu bit će poželjno.
U kratkom raspoloživom vremenu, više smo zabrinuti za kvalitetu nego za cjelovitost.
*Ne mogu objaviti zadatak koji mi je poslan, ovo je stari zadatak koji je dat prije nekoliko godina. Ali vjerujte mi, u osnovi sve ostaje isto.

Posebno bih skrenuo pozornost na kriterije ocjenjivanja. Koliko puta ste se susreli sa situacijom da kandidatu bitne stvari budu potpuno nevažne tijekom revizije i obrnuto. Ne misle svi na isti način kao vi, ali mnogi mogu prihvatiti i slijediti vaše vrijednosti ako su jasno izražene. Dakle, iz kriterija ocjenjivanja odmah je jasno da su najvažnije vještine u ovoj fazi

  • TDD;
  • Sposobnost korištenja OOP-a i pisanja koda koji se može održavati;
  • sposobnosti programiranja u paru

Dakle, bio sam upozoren da provedem tih 1.5 sat razmišljajući o tome kako ću obaviti zadatak, umjesto da pišem kod. Zajedno ćemo napisati kod.

Kad smo se javili na telefon, dečki su nam ukratko rekli tko su i čime se bave te ponudili da krenu u razvoj.

Tijekom cijelog intervjua niti jednom nisam imala osjećaj da me intervjuiraju. Postoji osjećaj da kod razvijate u timu. Ako negdje zapnete, pomažu, savjetuju, raspravljaju, čak se međusobno svađaju kako to najbolje učiniti. Na razgovoru sam zaboravio kako provjeriti u JUnit 5 da metoda baca Exception - ponudili su mi da nastavimo pisati test, dok je jedan od njih guglao kako se to radi.

Doslovno nekoliko sati nakon intervjua dobio sam konstruktivne povratne informacije – što mi se sviđa, a što ne. U mom slučaju, pohvalili su me za korištenje Zapečaćenih klasa kao alternative nultom objektu; jer sam prije pisanja koda u pseudokodu napisao kako bih želio upravljati roverom i tako dobio skicu klasa, barem onih koje su uključene u API robota.

Korak 2: Recite nam

Tjedan dana prije intervjua zamoljen sam da pripremim prezentaciju o bilo kojoj temi koja me zanima. Format je jednostavan i poznat: 15 minuta prezentacije, 15 minuta odgovaranja na pitanja.
Odabrao sam Čistu arhitekturu strica Boba. I opet me je intervjuiralo par ljudi. Ovo je bilo moje prvo iskustvo prezentacije na engleskom jeziku i, možda, da sam bila u stresnoj situaciji, ne bih izdržala. Ali opet, niti jednom nisam imala osjećaj da sam na intervjuu. Sve je kao i obično - kažem im, oni pažljivo slušaju. Čak ni tradicionalna sesija pitanja i odgovora nije bila poput intervjua; bilo je jasno da se pitanja ne postavljaju da bi se „potopila“, nego ona koja su ih stvarno zanimala u mojoj prezentaciji.

Nekoliko sati nakon intervjua dobio sam povratnu informaciju - prezentacija je bila vrlo korisna i istinski su uživali u slušanju.

Faza 3. Kodeks kvalitete proizvodnje

Nakon što sam upozorio da je ovo posljednja faza tehničkih razgovora, zamoljen sam da dovedem kod kod kuće u stanje spremno za proizvodnju, zatim pošaljem kod na pregled i zakažem intervjue na kojima bi se promijenili zahtjevi za zadatak i kod zahtijevaju izmjene. Gledajući unaprijed, mogu reći da se provjera koda provodi na slijepo, recenzenti ne znaju za koju poziciju se kandidat prijavljuje, ne vide njegov životopis, ne vide čak ni njegovo ime.

Telefon je zazvonio, a s druge strane monitora opet je bilo nekoliko momaka. Sve je isto kao na prvom intervjuu: glavna stvar je ne zaboraviti na TDD, reći što radite i zašto. Ako do sada niste prakticirali TDD, preporučam da to odmah počnete raditi, ne zato što je neophodan u tvrtkama, već zato što vam značajno pojednostavljuje život, smanjuje razinu stresa ako želite. Sjećate li se kako ste morali bjesomučno tražiti s debuggerom grešku koja se može reproducirati samo putem preglednika, ali je ne možete reproducirati testovima? Sada zamislite da ćete morati uhvatiti takvu pogrešku tijekom intervjua - nekoliko sijedih vlasi vam je zajamčeno. Što dobivamo s TDD-om? Promijenili smo kod i neočekivano shvatili da su sada testovi crveni, ali koja je greška koju ne možemo otkriti prvi put? U redu, kažemo "Ups" anketarima, pritisnemo Ctrl-Z i počnemo ići malim koracima naprijed. I da, trebaš razviti sposobnost razvoja pomoću TDD-a u sebi, sposobnost da ideš prema cilju da ti testovi budu trajno zeleni, a ne crveni pola dana, jer “imaš puno refactoringa”. To je potpuno ista vještina kao pisanje koda koji se može održavati ili pisanje produktivnog koda.

Dakle, koliko dobro se vaš kod može promijeniti ovisi o tome kakav dizajn imate na umu za početak, koliko je jednostavan i koliko su dobri vaši testovi.

Nakon razgovora dobio sam povratnu informaciju u roku od nekoliko sati. U ovoj fazi shvatio sam da sam skoro završio i da je preostalo vrlo malo do "upoznala Fowlera".

Faza 4. Finale. Dosta tehničkih pitanja. Želimo znati tko ste!

Da budem iskren, bio sam pomalo zbunjen ovakvom formulacijom pitanja. Kako u jednom satu razgovora shvatiti kakva sam ja osoba? I još više, kako to razumjeti kad govorim jezikom koji mi nije materinji i, iskreno govoreći, vrlo je ušljiv i jezičav. U prijašnjim intervjuima meni je osobno bilo lakše pričati nego odgovarati na pitanja, a za to je kriv naglasak. Barem je jedan od anketara bio Azijat - a njihov je naglasak, pa, recimo samo, donekle specifičan za europsko uho. Stoga sam odlučila zauzeti proaktivan pristup – pripremiti prezentaciju o sebi i na početku razgovora ponuditi da govorim o sebi uz tu prezentaciju. Ako pristanu, onda će barem biti manje pitanja za mene, ako odbiju ponudu, pa 3 sata mog života utrošena na prezentaciju i nisu tako visoka cijena. Ali što biste trebali napisati u svojoj prezentaciji? Biografija - Rođen tamo, u to vrijeme, išao u školu, završio fakultet - ali koga briga?

Ako proguglate malo o Thoughtworks kulturi, pronaći ćete članak Martina Fowlera [https://martinfowler.com/bliki/ThreePillars.html] koji opisuje 3 stupa: održivo poslovanje, softverska izvrsnost i socijalna pravda.

Pretpostavimo da je softverska izvrsnost već provjerena za mene. Ostaje pokazati Održivo poslovanje i društvenu pravdu.

Štoviše, odlučio sam se usredotočiti na potonje.

Za početak, rekao sam mu zašto ThoughtWorks - čitao sam blog Martina Fowlera još na koledžu, otuda moja ljubav prema Clean codeu.

Projekti se također mogu prezentirati iz različitih kutova. Također je razvio softver za medicinu koji je pacijentima pojednostavio život, a čak je, prema glasinama, i spasio jedan život. Razvio sam i softver za banke, što je također olakšalo život građanima. Pogotovo ako ovu banku koristi 70% stanovništva zemlje. Ovdje se ne radi o Sberbanci, pa čak ni o Rusiji.

Želiš znati nešto o meni? U REDU. Hobi mi je fotografija, na ovaj ili onaj način držim fotoaparat u rukama 10-ak godina, ima fotografija koje me nije sram pokazati. Također, svojedobno sam pomogao skloništu za mačke: fotografirao sam mačke kojima je trebao stalni dom. A s dobrim fotografijama puno je lakše postaviti mačku. Slikao sam vjerojatno stotinu mačaka :)

Na kraju, 80% moje prezentacije bilo je ispunjeno mačkama.

Odmah nakon prezentacije HR mi je napisao da još ne zna rezultate razgovora, ali je cijeli ured već impresioniran mačkama.

U konačnici sam čekao povratnu informaciju – zadovoljio sam sve kao osobe.

No tijekom završnog razgovora HR je taktično rekao da je socijalna pravda jako dobra i potrebna, ali nisu svi projekti takvi. I pitao me plaši li me to. Općenito, malo sam pretjerao sa socijalnom pravdom, događa se :)

Ukupan

Kao rezultat toga, radim u Singapuru u Thoughtworksu već nekoliko mjeseci i vidim da ovdje previše tvrtki usvaja "najbolje prakse intervjua" od Googlea, koristeći listove i Whiteboard za kodiranje, unatoč tome što imaju više znanja od Springa, Symfony, RubyOnRails (podcrtajte što je potrebno) nije potreban u radu. Inženjeri uzmu tjedan dana odmora prije intervjua kako bi se "pripremili".

U Thoughtworks-u, osim adekvatnih zahtjeva za kandidata, u prvom su planu sljedeći principi:
Radost intervjuiranja. Štoviše, za obje strane. Dapače, ako želite dobiti najbolje kadrove (a tko ne želi?), onda intervju nije tržište na kojem se biraju robovi, već predstava u kojoj se ocjenjuju i poslodavac i kandidat. A ako kandidat uz tvrtku veže ugodne emocije, vjerojatno će odabrati upravo tu tvrtku

Više anketara za ublažavanje pristranosti. U Thoughtworksu je programiranje u paru de facto standard. A ako se ova praksa može primijeniti na druga područja, TW to pokušava učiniti. U svakoj fazi intervju vode 2 osobe. Dakle, svaku osobu procjenjuje najmanje 8 ljudi, a TW pokušava odabrati anketare s različitim pozadinama, različitim usmjerenjima (ne samo tehničarima) i spolom.

U konačnici, odluka o zapošljavanju bit će donesena na temelju mišljenja najmanje 8 ljudi, a nitko nema odlučujući glas.

Zapošljavanje na temelju svojstava Umjesto donošenja odluke na temelju toga što se kandidatu sviđa ili ne sviđa, za svaku ulogu i svaku fazu razvija se obrazac koji uključuje atribute koji se procjenjuju. Istodobno, pri ocjenjivanju je vrlo preporučljivo ocjenjivati ​​ne iskustvo u određenoj vještini, već sposobnost njezine primjene. Dakle, ako kandidat nije uspio primijeniti nijednu vještinu, poput TDD-a, ali ih unatoč tome pokušava primijeniti, sluša savjete kako ih pravilno koristiti, ima sve šanse proći intervju.

Obrazovne svjedodžbe nisu potrebne TW ne zahtijeva nikakvu certifikaciju ili obrazovanje iz računalnih znanosti. Ocjenjuju se samo vještine.

Ovo je prvi intervju koji sam imao sa stranim tvrtkama za koji se nisam morao pripremati. Nakon svake faze nisam se osjećao iscrpljeno, već naprotiv, bilo mi je drago što mogu primijeniti najbolje prakse, što ljudi s druge strane monitora to cijene i primjenjuju svaki dan.

Nakon nekoliko mjeseci mogu reći da su se moja očekivanja u potpunosti ispunila. Po čemu se ThoughtWorks razlikuje od obične tvrtke? U običnoj tvrtki možete pronaći dobre programere i drage ljude, ali u TW-u njihova koncentracija je van granica.

Ako ste zainteresirani za pridruživanje ThoughtWorksu, možete pogledati naše otvorene pozicije здесь
Također predlažem da obratite pozornost na zanimljiva slobodna radna mjesta:
Vodeći softverski inženjer: Njemačka, London, Madrid, Singapur
Viši softverski inženjer: Sydney, Njemačka, Manchester, Bankok
Softverski inženjer: Sydney, Barselona, Milano
Viši inženjer podataka: Milano
Analitičar kvalitete: Njemačka Kina
Infrastruktura: Njemačka, London, Čile
(Želio bih vas iskreno upozoriti da je link referalni link, ako odete na TW, dobit ću lijepi bonus). Odaberite ured koji vam se sviđa, ne morate se ograničiti na Europu, uostalom, svake 2 godine TW će vas rado preseliti u drugu zemlju, jer... ovo je dio politike ThoughtWorksa, tako da se kultura širi i homogenizira.

Slobodno postavljajte pitanja u komentarima ili me pitajte za preporuke.
Ako se tema učini zanimljivom, napisat ću o tome kako je raditi u ThoughtWorksu i kakav je život u Singapuru.

Izvor: www.habr.com

Dodajte komentar