Kā es nokļuvu ThoughtWorks jeb intervijas paraugā

Kā es nokļuvu ThoughtWorks jeb intervijas paraugā

Vai jums nešķiet dīvaini, ka tad, kad gatavojaties mainīt darbu un rodas vajadzība iziet interviju, pirmais, kas jums šķiet, ir "jums ir jāsagatavojas intervijai". Atrisiniet problēmas vietnē HackerRank, izlasiet Uzlauziet kodēšanas interviju, iegaumējiet, kā ArrayList darbojas un kā tas atšķiras no LinkedList. Ak, jā, viņi varētu arī jautāt par šķirošanu, un acīmredzot būtu neprofesionāli teikt, ka ātrā šķirošana, visticamāk, būtu labākā izvēle.
Bet pagaidiet, jūs programmējat 8 stundas dienā, risiniet interesantas un nenozīmīgas problēmas, un jaunajā darbā jūs darīsit to pašu, plus vai mīnus. Bet tomēr, lai izietu interviju, ir kaut kā papildus jāsagatavojas, pat nevis jāpilnveido ikdienas prasmes, bet jāapgūst kaut kas tāds, kas pašreizējā darbā nebija vajadzīgs un diez vai būs vajadzīgs arī nākamajā. Uz jūsu iebildumiem, ka datorzinātnes mums ir asinīs, un, ja jūs pamodināt mūs nakts vidū, mums ir pienākums ar aizvērtām acīm uz spilvendrānas uzrakstīt pastaigu koka platumā, pat neatgūstot samaņu, es. atbildēšu, ja dabūšu darbu cirkā, un mans galvenais triks būtu tieši šāds - tad varbūt jā, piekrītu. Šī prasme ir jāpārbauda.

Bet kāpēc pārbaudīt prasmes, kurām nav nozīmes jūsu pašreizējam darbam? Tikai tāpēc, ka tas kļuva modē? Tāpēc, ka Google to dara? Vai arī tāpēc, ka jūsu topošajam komandas vadītājam pirms intervijas bija jāapgūst visas šķirošanas metodes, un tagad viņš uzskata, ka "katram labam programmētājam no galvas ir jāzina palindroma atrašanas virknē īstenošana".

Nu, jūs neesat Google (c). To, ko Google var atļauties, parastie uzņēmumi nevar. Google, analizējot savu darbinieku datus, nonāca pie secinājuma, ka inženieri ar olimpiādes pieredzi labi tiek galā ar saviem specifiskajiem uzdevumiem. Turklāt, izstrādājot atlases procesu, viņi var atļauties uzņemties risku, ka viņi varētu nepieņemt darbā dažus labus inženierus, jo viņi nevar viegli atrisināt matemātikas problēmas. Bet tā viņiem nav problēma, ir daudz cilvēku, kas vēlas strādāt Google, amats tiks slēgts.
Tagad paskatīsimies ārā pa logu un, ja jūsu biroja priekšā inženieri, kuri vēlas strādāt pie jums, vēl nav uzcēluši telšu nometni un jūsu izstrādātāji biežāk meklē stackoverflow, lai uzzinātu, kāda nākamā pavasara anotācija ir jāinstalē, nevis ranžēšanas algoritmu sarežģītību, tad acīmredzot ir pienācis laiks padomāt par to, vai jums vajadzētu kopēt Google.

Nu, ja šoreiz Google neizdevās un nesniedza atbildi, kas jums jādara? Pārbaudiet, ko tieši izstrādātājs darīs darbā. Ko jūs vērtējat izstrādātājos?
Nosakiet kritērijus, kurus vēlaties pieņemt darbā, un izstrādājiet testus, kas pārbauda tieši šīs prasmes.

Domu darbi

Kāds ThoughtWorks sakars ar to? Šeit es atradu paraugintervijas piemēru sev. Kas ir ThoughtWorks? Īsāk sakot, šis ir High-End konsultāciju uzņēmums ar birojiem visā pasaulē, sākot no Ķīnas, Singapūras un beidzot ar Amerikas kontinentiem, kas konsultē attīstības jomā jau aptuveni 25 gadus, ir sava Zinātnes nodaļa, kuru vada Mārtins. Faulers. Ja meklējat sarakstu ar 10 obligātajām grāmatām programmatūras inženierim, iespējams, 2-3 no tām būs ThoughtWorks puiši, piemēram, Mārtina Faulera Refactoring un Building Microservices: Designing Fine-Grained Systems by Sam. Ņūmens jeb Building Evolutionary Architectures
Patriks Kua, Rebeka Pārsonsa, Nīls Fords.

Uzņēmuma bizness ir balstīts uz diezgan dārgu pakalpojumu sniegšanu, bet klients maksā par fenomenālu kvalitāti, kas sastāv no zināšanām, iekšējiem standartiem un, protams, cilvēkiem. Tāpēc šeit ir ļoti svarīgi pieņemt darbā pareizos cilvēkus.
Kādiem cilvēkiem ir taisnība? Protams, katram ir dažādi. ThoughtWorks ir noteicis, ka vissvarīgākie kritēriji viņu izstrādātāju biznesa modelim ir:

  • Spēja attīstīties pāros. Tā ir spēja, nevis pieredze vai prasme. Neviens negaida, ka ieradīsies cilvēki, kuri pāru programmēšanu praktizē 5 gadus, taču uztvert citu cilvēku viedokļus un klausīties ir nepieciešama prasme.
  • Spēja rakstīt testus un ideālā gadījumā praktizēt TDD
  • Izprotiet SOLID un OOP un protiet tos pielietot.
  • Sniedziet savu viedokli. Kā konsultantam ir jāstrādā ar klienta izstrādātājiem, ar citiem konsultantiem, un nav liela labuma, ja cilvēks prot kaut ko labi izdarīt, bet pilnībā nespēj to nodot pārējai komandai.

Tagad ir svarīgi novērtēt šīs konkrētās kandidāta prasmes. Un šeit es vēlos runāt par savu pieredzi, intervējot ThoughtWorks. Uzreiz teikšu, ka aizbraucu uz Singapūru un izturēju, taču darbā pieņemšanas process ir vienots un dažādās valstīs īpaši neatšķirsies.

0. posms. HR

Kā tas bieži notiek, 20 minūšu intervija ar HR. Es pie tā nekavēšos, teikšu tikai to, ka nekad neesmu sastapis HR cilvēku, kurš varētu 15 minūtes runāt par attīstības kultūru uzņēmumā, kāpēc viņi izmanto TDD, kāpēc pāru programmēšana. Parasti HR darbinieki novīst uz šo jautājumu un saka, ka viņu process ir normāls: izstrādātāji izstrādā, testētāji testē, vadītāji brauc.

1. posms. Cik labi tu esi OOP, TDD?

1.5 stundu pirms intervijas sākuma man tika nosūtīts uzdevums izgatavot Mars Rover simulatoru.

Marsa rovera misijaNASA uz Marsa plato nosēdinās robotu roveru komandu. Šis plato, kas ir dīvaini taisnstūrveida, ir jāpārvieto roveriem, lai viņu borta kameras varētu iegūt pilnīgu skatu uz apkārtējo reljefu un nosūtīt to atpakaļ uz Zemi. Rovera atrašanās vietu un atrašanās vietu attēlo x un y koordinātu kombinācija un burts, kas apzīmē vienu no četriem galvenajiem kompasa punktiem. Plato ir sadalīts režģī, lai vienkāršotu navigāciju. Pozīcijas piemērs varētu būt 0, 0, N, kas nozīmē, ka roveris atrodas apakšējā kreisajā stūrī un ir vērsts uz ziemeļiem. Lai vadītu roveru, NASA nosūta vienkāršu burtu virkni. Iespējamie burti ir “L”, “R” un “M”. “L” un “R” liek roveram griezties attiecīgi par 90 grādiem pa kreisi vai pa labi, nepārvietojoties no pašreizējās vietas. “M” nozīmē virzīties uz priekšu par vienu režģa punktu un saglabāt to pašu virzienu.
Pieņemsim, ka kvadrāts, kas atrodas tieši uz ziemeļiem no (x, y), ir (x, y+1).
INPUT:
Pirmā ievades rinda ir plato augšējās labās puses koordinātas, tiek pieņemts, ka apakšējās kreisās koordinātas ir 0,0.
Pārējā ievade ir informācija, kas attiecas uz izvietotajiem roveriem. Katram roveram ir divas ievades līnijas. Pirmajā rindā ir norādīta rovera atrašanās vieta, bet otrā rinda ir norādījumu sērija, kurā norādīts, kā izpētīt plato. Pozīciju veido divi veseli skaitļi un burts, kas atdalīts ar atstarpēm, kas atbilst x un y koordinātām un rovera orientācijai.
Katrs roveris tiks pabeigts secīgi, kas nozīmē, ka otrais roveris nesāks kustēties, kamēr pirmais nebūs beidzis kustību.
REZULTĀTS:
Katra rovera izvadei jābūt tā gala koordinātām un virsrakstam.
PIEZĪMES:
Vienkārši ieviesiet iepriekš minētās prasības un pierādiet, ka putekļsūcējs darbojas, uzrakstot tam vienības testus.
Jebkura veida lietotāja interfeisa izveide ir ārpus darbības jomas.
Priekšroka tiks dota problēmas risināšanai, izmantojot TDD (Test Driven Development) pieeju.
Īsajā pieejamajā laikā mēs vairāk rūpējamies par kvalitāti, nevis par pilnīgumu.
*Es nevaru ievietot man nosūtīto uzdevumu, tas ir vecs uzdevums, kas tika dots pirms vairākiem gadiem. Bet ticiet man, būtībā viss paliek pa vecam.

Īpaši vēlos vērst uzmanību uz vērtēšanas kritērijiem. Cik reižu esat saskāries ar situāciju, ka kādam kandidātam svarīgas lietas audita laikā ir pilnīgi nesvarīgas un otrādi. Ne visi domā tāpat kā jūs, taču daudzi var pieņemt un ievērot jūsu vērtības, ja tās ir skaidri izteiktas. Tātad no vērtēšanas kritērijiem uzreiz ir skaidrs, ka svarīgākās prasmes šajā posmā ir

  • TDD;
  • Spēja lietot OOP un rakstīt uzturējamu kodu;
  • pāru programmēšanas spējas

Tāpēc es tiku brīdināts, ka tērēt šīs 1.5 stundas domājot par to, kā es gatavojos veikt uzdevumu, nevis rakstīt kodu. Mēs uzrakstīsim kodu kopā.

Kad sazinājāmies ar telefonu, puiši īsi pastāstīja, kas viņi ir un ar ko nodarbojas, un piedāvāja sākt attīstību.

Visas intervijas laikā man ne reizi nebija sajūta, ka mani intervē. Ir sajūta, ka tu izstrādā kodu komandā. Ja kaut kur iestrēdzis, viņi palīdz, konsultē, apspriež, pat strīdas savā starpā, kā to vislabāk izdarīt. Intervijā es aizmirsu, kā pārbaudīt JUnit 5, ka metode met Izņēmumu - viņi piedāvāja turpināt rakstīt kontroldarbu, kamēr viens no viņiem googlē, kā to izdarīt.

Burtiski dažas stundas pēc intervijas saņēmu konstruktīvas atsauksmes – kas man patika un kas nē. Manā gadījumā es saņēmu atzinību par Sealed klases izmantošanu kā alternatīvu nulles objektam; par to, ka pirms koda rakstīšanas pseidokodā uzrakstīju, kā gribētos vadīt roveru, un līdz ar to saņēmu skici par klasēm, vismaz tām, kas ir iesaistītas robota API.

2. darbība. Pastāstiet mums

Nedēļu pirms intervijas man lūdza sagatavot prezentāciju par jebkuru tēmu, kas mani interesē. Formāts ir vienkāršs un pazīstams: 15 minūtes prezentācija, 15 minūtes atbildes uz jautājumiem.
Es izvēlējos Uncle Bob Clean Architecture. Un atkal mani intervēja pāris cilvēku. Šī bija mana pirmā pieredze, prezentējot angļu valodā, un, iespējams, ja es būtu bijusi stresa situācijā, es nebūtu tikusi galā. Bet atkal man nekad nav bijusi sajūta, ka esmu intervijā. Viss kā parasti – es viņiem saku, viņi uzmanīgi klausās. Pat tradicionālā jautājumu un atbilžu sesija nebija kā intervija, bija skaidrs, ka jautājumi netika uzdoti, lai “grimtu”, bet gan tie, kas viņus patiešām interesēja manā prezentācijā.

Pāris stundas pēc intervijas saņēmu atsauksmes – prezentācija bija ļoti noderīga un viņiem bija patiess prieks klausīties.

3. posms. Ražošanas kvalitātes kods

Brīdinot, ka šis ir pēdējais tehnisko interviju posms, mani lūdza mājās nogādāt kodu līdz ražošanai gatavam stāvoklim, pēc tam nosūtīt kodu pārskatīšanai un ieplānot intervijas, kurās mainīsies uzdevuma prasības un kods tiks mainīts. pieprasīt modifikāciju. Raugoties uz priekšu, varu teikt, ka koda pārskatīšana tiek veikta akli, recenzenti nezina amatu, uz kuru kandidāts pretendē, viņi neredz viņa CV, neredz pat viņa vārdu.

Iezvanījās telefons, un atkal monitora otrā pusē bija pāris puiši. Viss ir tāpat kā pirmajā intervijā: galvenais neaizmirst par TDD, pastāsti, ko dari un kāpēc. Ja iepriekš neesi nodarbojies ar TDD, tad iesaku ar to sākt nodarboties nekavējoties, nevis tāpēc, ka tas ir nepieciešams uzņēmumos, bet gan tāpēc, ka tas būtiski atvieglo dzīvi, samazina stresa līmeni, ja vēlaties. Atcerieties, kā jums bija izmisīgi jāmeklē ar atkļūdotāju, lai atrastu kļūdu, kuru var reproducēt tikai pārlūkprogrammā, bet jūs nevarat to reproducēt ar testiem? Tagad iedomājieties, ka intervijas laikā jums būs jāpieķer šāda kļūda - jums ir garantēti pāris sirmi mati. Ko mēs iegūstam ar TDD? Mēs mainījām kodu un negaidīti sapratām, ka tagad testi ir sarkani, bet kāda ir kļūda, kuru mēs nevaram noskaidrot pirmo reizi? Labi, mēs intervētājiem sakām “Hmm”, nospiediet Ctrl-Z un sākam iet uz priekšu. Un jā, ir jāattīsta spēja attīstīties, izmantojot TDD sevī, spēja iet uz mērķi, lai testi būtu pastāvīgi zaļi, nevis pusi dienas sarkani, jo “tev ir daudz pārfaktora”. Tā ir tieši tāda pati prasme, kā rakstīt uzturējamu kodu vai rakstīt produktīvu kodu.

Tātad, cik labi jūsu kodu var mainīt, ir atkarīgs no tā, ar kādu dizainu jūs vispirms domājat, cik tas ir vienkāršs un cik labi ir jūsu testi.

Pēc intervijas saņēmu atsauksmes dažu stundu laikā. Šajā posmā es sapratu, ka esmu gandrīz galā, un bija atlicis ļoti maz, līdz es "satikšu Fauleru".

4. posms. Fināls. Pietiekami tehniski jautājumi. Mēs vēlamies zināt, kas jūs esat!

Godīgi sakot, es biju zināmā mērā neizpratnē par šādu jautājuma formulējumu. Kā vienas stundas sarunas laikā var saprast, kāds es esmu? Un vēl jo vairāk, kā jūs varat to saprast, ja es runāju valodā, kas nav mana dzimtā valoda, un, atklāti sakot, ļoti draņķīgi un mēli saraustīti. Iepriekšējās intervijās man personīgi bija vieglāk runāt, nevis atbildēt uz jautājumiem, un pie vainas bija akcents. Vismaz viens no intervētājiem bija aziāts - un viņu akcents, teiksim tā, ir eiropiešu ausij raksturīgs. Tāpēc nolēmu rīkoties proaktīvi – sagatavot prezentāciju par sevi un intervijas sākumā piedāvāt ar šo prezentāciju runāt par sevi. Ja viņi piekritīs, tad vismaz man jautājumu būs mazāk, ja viņi noraidīs piedāvājumu, labi, 3 stundas no manas dzīves, kas pavadītas prezentācijā, nav tik augsta cena. Bet kas jums būtu jāraksta savā prezentācijā? Biogrāfija - Dzimis tur, tajā laikā, mācījies skolā, beidzis augstskolu - bet kam tas interesē?

Ja nedaudz papētīsiet Google par Thoughtworks kultūru, jūs atradīsiet Martina Faulera rakstu [https://martinfowler.com/bliki/ThreePillars.html], kurā ir aprakstīti 3 pīlāri: ilgtspējīgs bizness, programmatūras izcilība un sociālais taisnīgums.

Pieņemsim, ka programmatūras izcilība man jau ir pārbaudīta. Atliek parādīt ilgtspējīgu uzņēmējdarbību un sociālo taisnīgumu.

Turklāt es nolēmu pievērsties pēdējam.

Sākumā es viņam pastāstīju, kāpēc ThoughtWorks — es lasīju Martina Faulera emuāru vēl koledžā, tāpēc mana mīlestība pret Clean kodu.

Projektus var prezentēt arī no dažādiem leņķiem. Viņš arī izstrādāja programmatūru medicīnai, kas vienkāršoja pacientu dzīvi un, pēc baumām, pat izglāba vienu dzīvību. Es izstrādāju arī programmatūru bankām, kas atviegloja arī iedzīvotāju dzīvi. It īpaši, ja šo banku izmanto 70% valsts iedzīvotāju. Šeit nav runa par Sberbanku un pat ne par Krieviju.

Vai vēlaties uzzināt par mani? LABI. Mans hobijs ir fotografēšana, tā vai tā es turēju rokās kameru apmēram 10 gadus, ir fotogrāfijas, kuras man nav pārāk neērti rādīt. Tāpat savulaik palīdzēju kaķu patversmei: fotografēju kaķus, kuriem bija vajadzīgas pastāvīgas mājas. Un ar labām fotogrāfijām ir daudz vieglāk novietot kaķi. Es laikam nofotografēju simts kaķus :)

Galu galā 80% manas prezentācijas bija piepildītas ar kaķiem.

Uzreiz pēc prezentācijas HR man rakstīja, ka viņš vēl nezina intervijas rezultātus, bet viss birojs jau bija pārsteigts par kaķiem.

Galu galā es gaidīju atsauksmes - es apmierināju visus kā cilvēku.

Taču noslēguma sarunā HR taktiski teica, ka Sociālais taisnīgums ir ļoti labs un vajadzīgs, taču ne visi projekti ir šādi. Un viņš jautāja, vai tas mani nebiedē. Vispār nedaudz pārspīlēju ar sociālo taisnīgumu, gadās :)

Kopsavilkums

Rezultātā es vairākus mēnešus strādāju Singapūrā uzņēmumā Thoughtworks, un redzu, ka šeit pārāk daudzi uzņēmumi izmanto Google “labāko interviju praksi”, kodēšanai izmanto lapas un Whiteboard, neskatoties uz to, ka viņiem ir vairāk zināšanu nekā Spring. , Symfony, RubyOnRails ( pasvītrot nepieciešamo) darbā nav nepieciešams. Inženieri paņem nedēļu atvaļinājumu pirms intervijas, lai “sagatavotos”.

Uzņēmumā Thoughtworks papildus atbilstošām prasībām kandidātam priekšplānā ir šādi principi:
Intervēšanas prieks. Turklāt abām pusēm. Patiešām, ja vēlaties iegūt labākos kadrus (un kurš gan nē?), tad intervija nav tirgus, kurā izvēlas vergus, bet gan šovs, kurā viens otru novērtē gan darba devējs, gan kandidāts. Un, ja kandidāts patīkamas emocijas saista ar uzņēmumu, visticamāk, viņš izvēlēsies tieši šo uzņēmumu

Vairāki intervētāji, lai mazinātu neobjektivitāti. Uzņēmumā Thoughtworks pāru programmēšana ir de facto standarts. Un, ja šo praksi var piemērot citās jomās, TW mēģina to darīt. Katrā posmā interviju veic 2 cilvēki. Tādējādi katru cilvēku novērtē vismaz 8 cilvēki, un TW cenšas atlasīt intervētājus ar dažādu pieredzi, dažādiem virzieniem (ne tikai tehniķiem) un dzimumu.

Galu galā lēmums par pieņemšanu darbā tiks pieņemts, pamatojoties uz vismaz 8 cilvēku viedokļiem, un nevienam nav izšķirošas balss.

Uz atribūtiem balstīta darbā pieņemšana Tā vietā, lai pieņemtu lēmumu, pamatojoties uz kandidāta simpātijām vai antipātijām, katrai lomai un katram posmam tiek izstrādāta veidlapa, kurā iekļautas novērtējamās īpašības. Tajā pašā laikā, vērtējot, ļoti ieteicams vērtēt nevis pieredzi kādā noteiktā prasmē, bet gan spēju to pielietot. Tādējādi, ja kandidāts nav spējis pielietot kādas prasmes, piemēram, TDD, bet tomēr cenšas tās pielietot, uzklausa padomus, kā tās pareizi izmantot, viņam ir visas iespējas izturēt interviju.

Izglītības sertifikāti nav nepieciešami TW nav nepieciešama sertifikācija vai izglītība datorzinātnēs. Tiek vērtētas tikai prasmes.

Šī ir pirmā intervija ar ārvalstu kompānijām, kurai man nebija jāgatavojas. Pēc katra posma nejutos izsmelts, bet tieši otrādi – priecājos, ka varu pielietot labāko praksi, ka cilvēki monitora otrā pusē to novērtēja un pielieto katru dienu.

Pēc vairākiem mēnešiem varu teikt, ka manas cerības attaisnojās pilnībā. Ar ko ThoughtWorks atšķiras no parasta uzņēmuma? Parastā kompānijā var atrast labus izstrādātājus un patīkamus cilvēkus, bet TW viņu koncentrācija ir ārpus topos.

Ja jūs interesē pievienoties ThoughtWorks, varat apskatīt mūsu atvērtās pozīcijas šeit
Iesaku pievērst uzmanību arī interesantām vakancēm:
Vadošais programmatūras inženieris: Vācija, Londona, Madride, Singapūra
Vecākais programmatūras inženieris: Sydney, Vācija, Mančestra, Bangkoka
Programmētājs: Sydney, Barcelona, Milāna
Vecākais datu inženieris: Milāna
Kvalitātes analītiķis: Vācija Ķīna
Infrastruktūra: Vācija, Londona, Čīle
(Godīgi gribu brīdināt, ka saite ir novirzīšanas saite, ja dosies uz TW, saņemšu jauku bonusu). Izvēlieties sev tīkamu biroju, jums nav jāierobežo sevi ar Eiropu, galu galā, ik pēc 2 gadiem TW ar prieku pārcels jūs uz citu valsti, jo... tā ir daļa no ThoughtWorks politikas, tāpēc kultūra tiek izplatīta un homogenizēta.

Droši uzdodiet jautājumus komentāros vai jautājiet man ieteikumus.
Ja tēma liksies interesanta, uzrakstīšu par to, kā ir strādāt ThoughtWorks un kāda ir dzīve Singapūrā.

Avots: www.habr.com

Pievieno komentāru