
Sezona razgovora za ljetnu praksu 2018. napokon je gotova. Nakon više od mjesec dana razgovora i testova u više tvrtki, pridružit ću se Shopifyu kao pripravnik za razvojne programere.
U ovom članku želim vas provesti kroz postupak prijavljivanja, pripreme i intervjuiranja u Shopifyu. Također želim podijeliti s vama nekoliko savjeta koje koristim kad se prijavim i dobijem intervju za posao.
Brzi uvod
Trenutno sam student preddiplomskog studija na Sveučilištu Concordia u Montrealu u Kanadi. Završavam treću godinu svog studija na softverskom inženjerstvu.
Također sam dio programa COOP koji zahtijeva da odradim tri prakse tijekom svog prvostupničkog studija. Moja prva dva staža bila su u Ubisoftu i Vigilantu.
Moja posljednja praksa održat će se ovog ljeta, a ja ću raditi u Shopifyu u Montrealu.
Što je Shopify?
Jednostavno rečeno, Shopifyova platforma omogućuje tvrtkama i pojedincima da lako prodaju robu na mreži.
Shopify vas vodi kroz postupak postavljanja prodavaonice, upravljanja zalihama, prihvaćanja različitih načina plaćanja i otpreme. Postoji čak i prodajno mjesto (POS) koji se koristi u trgovini!
Što se tiče rada u Shopifyu, osvojili su Glassdoor's Best Place to Work u Kanadi 2017. Poznato je i da imaju briljantne ljude u svojoj industriji.
Postupak prijave
Shopify ima jedinstveni postupak zapošljavanja za pripravnike, a to je jasno počevši od postupka prijave.
Da bih predao prijavu, trebao sam izvršiti tri zadatka.
1. Stvaranje Shopify trgovine
Prvi zadatak bio je stvoriti izmišljenu trgovinu Shopify. To je bio način da se upoznam s platformom i shvatim kroz što trgovci prolaze stvarajući internetsku trgovinu.
Stvorila sam japansku trgovinu slatkišima i pecivima. Htio sam napraviti nešto što je malo originalnije od tipične trgovine mode, ljepote ili elektronike.
Mislim da je tajna ovog koraka stvoriti izmišljenu priču oko vaše trgovine. Tada bi dizajn trgovine i njezin inventar trebali doći prirodno.
2. Dovršenje tehničkog izazova
Staž pripravnika za razvojne programere povezan je s tehničkim izazovom.
Izazov je bio stvoriti validator za strukturu podataka grafa. Odlučio sam za to koristiti Python.
Jako mi se svidjelo kako je izazov povezan s platformom Shopify (ili se barem tako činilo), umjesto da je to besmislen algoritamski problem.
Vjerujem da je za ovaj dio izuzetno važno donijeti jednostavno rješenje. Budući da postoji toliko mnogo načina za rješavanje problema, presudno je i učiniti svoje rješenje intuitivnim i dobro dokumentiranim . Izvrsno sam se poslužio Python dokumentima da bih to postigao.
I na kraju, nemojte ići dalje od zahtjeva problema ako to vaše rješenje želi učiniti složenijim. Samo će te povrijediti.
3. Odgovaranje na pitanja za prijavu
Posljednji korak prijavnog postupka bio je odgovaranje na neka pitanja.
Pisao sam o vrsti posla koji bih volio raditi tijekom prakse, kao i o tome kako je bilo moje iskustvo tijekom postupka prijave. Također sam napisao ideju za Hack Days (Shopifyjev tromjesečni hackathon).
Uložio sam puno truda da odgovorim na ta pitanja. Kao i kod svake prijave, količina truda koji uložite u nju jasno će pokazati koliko ste zainteresirani za rad tamo.
Također je važno biti iskren prema onome što pišete i kroz svoje odgovore pokazati svoju strast .
Za ideju Hack Days pokušajte smisliti nešto što bi vam moglo poboljšati život na poslu tijekom vaših prethodnih praksi i iskustava. Razmislite o drugim aspektima, osim o samom radu. Neka bude zabavno!
Proces intervjua
Nakon čekanja nekoliko tjedana, primio sam e-mail s kojim sam započeo postupak razgovora!
Proces mog razgovora podijeljen je u dva dijela: video poziv iz životne priče i tehnički intervju na licu mjesta.
Životna priča
Video poziv u mojoj životnoj priči trajao je oko 45 minuta i bio je s regrutom iz tima za akviziciju talenata.
Prema mojem razumijevanju, svrha životne priče je da vas regrut upozna na osobnijoj razini. Žele znati što ne kaže vaš životopis. Razgovarao sam o temama poput mojih putovanja, interesa, hobija, prošlih iskustava (ništa tehničko) i kako sam razvio svoju strast prema programiranju.
Ovo mi je bio jedan od najdražih dijelova procesa. Bilo je vrlo ležerno i činilo mi se kao da upoznaš nekoga novog i podijeliš svoju, pa, životnu priču!
Iako se u ovom dijelu postupka razgovora nije bilo za što pripremiti, napravio sam popis svih različitih tema o kojima sam želio razgovarati. Držao sam ga na ekranu kako bih bio siguran da ne zaboravim spomenuti bilo što što sam smatrao važnim.
Mislim da su najvažniji elementi tijekom životne priče biti iskreni , ostati ležerni i zapravo znati svoju životnu priču . Gledajte to kao na razgovor!
Tehnički na licu mjesta
Nekoliko tjedana kasnije, primio sam e-poštu kako bih zakazao razgovor na licu mjesta. Trebao je biti podijeljen u dva dijela: osobna analiza projekta i tehnički problem. Namjeravala su me razgovarati dva programera.
Za prvi dio trebao sam uvesti projekt na kojem sam odradio značajan rad.
U to sam vrijeme planirao pokrenuti projekt kako bih riješio problem koji sam imao u svakodnevnom životu: trošenje previše novca na hranu iz restorana.
Htio sam stvoriti Alexa aplikaciju na svom Amazon Echou koja je svjesna sastojaka koje trenutno imam i predlaže recepte na temelju onoga što imam na zalihi. Bila je to savršena prilika da udarim dvije ptice jednim kamenom.
Međutim, želio sam pogoditi i treću pticu. Već sam jako dugo želio naučiti Ruby on Rails. Budući da je Shopifyova platforma izgrađena na Railsu, smatrao sam da bi bilo izvrsno koristiti Rails za izradu moje Alexa aplikacije.
Brzo sam odradio SoloLearn Ruby tečaj i naučio osnove Ruby on Rails-a iz službenog vodiča za početak rada.
Tada sam svoje novo naučeno znanje iskoristio za izradu Alexa hladnjaka!

Tijekom ovog dijela intervjua zamoljen sam da predstavim svoj projekt sa svih aspekata. Prošao sam kroz kod i pokazao kako sam implementirao razne elemente. Također su me ispitivali o mojim dizajnerskim odlukama.
Podrazumijeva se, ali zaista biste trebali znati svoj projekt iznutra i izvana da biste mogli odgovoriti na bilo koje pitanje o njemu. Može vam pomoći da prethodno pripremite neku dokumentaciju (posebno dijagrame) koja će prikazati različite aspekte poput vaše infrastrukture, sheme baze podataka ili kako funkcionira API koji ste koristili.
Na primjer, donio sam ovaj dijagram kako bih pokazao kako moj poslužitelj komunicira s mojim Amazon Echo:

Mislim da je korisno i ako uspijete donijeti projekt koji možete demonstrirati. Teško je shvatiti značaj vašeg rada ako ne možete pokazati rezultat.
Za drugi dio mog razgovora na licu mjesta trebao sam riješiti tehnički problem.
Unaprijed su mi rekli da to ne bi bio algoritam za pisanje na bijelu ploču (yay!). Umjesto toga, to je bio problem koji sam trebao donijeti odluke o dizajnu da bih ga riješio.
U ovom dijelu doista preporučujem da naučite više o dizajnu sustava . Trebali biste imati ideju o tome kako organizirati web i mobilne aplikacije, kako dizajnirati shemu baze podataka, kako provjeriti autentičnost itd.
Neke od ovih tema nauče se tijekom studija softverskog inženjerstva, ali neke druge nisu. Preporučujem da provjerite trening kamp Hired In Tech's System Design i visoku skalabilnost. Oboje su izvrsni izvori za učenje o dizajnu sustava i za uvid u to kako velike tvrtke oblikuju svoje aplikacije. Dobro obratite pažnju na kompromise koji dolaze sa svakom odlukom o dizajnu.
Kada radite na problemima dizajna sustava, pobrinite se da uvijek jasno navedete svoje pretpostavke i razumijete zahtjeve .
Također, nemojte se sramiti postavljati pitanja ako trebate! S vama su dva programera u sobi i s vremena na vrijeme smijete dobiti pomoć. Jednako je važno postaviti prava pitanja kao i odgovoriti na njih (za to ionako imate Google).
I na kraju, uvijek razmišljajte naglas .Anketarima je vrlo važno znati kako mislite.
Pokušavam razmišljati naglas što je više moguće tijekom ovakvih problema, čak i ako je moj tok misli pogrešan. Međutim, ako je pogrešno, važno je da to shvatim i ispravim se.
Ponuda
Otprilike tjedan dana kasnije, Shopify me kontaktirao s ponudom i prihvatio sam je!
Za poneti
Zaista sam uživao u jedinstvenosti prijave i postupka razgovora. To mi je omogućilo da pokažem više od svojih tehničkih vještina!
Evo sažetka savjeta koje sam podijelio tijekom članka:
- Stavite se na mjesto trgovca prilikom stvaranja internetske trgovine i uronite u njihovu izmišljenu priču
- Kada radite tehnički izazov, tražite jednostavnost i dobro je dokumentirajte
- Kada pišete odgovore na pitanja za prijavu, uložite puno truda, budite iskreni i pokažite svoju strast
- Tijekom životne priče budite svoji i znajte svoju životnu priču
- Na lice mjesta ponesite projekt koji dobro poznajete i znate zašto ste ga dizajnirali na način koji ste napravili
- Za tehnički problem navedite svoje pretpostavke i zahtjeve i razmislite naglas
Hvala vam što ste pročitali moj članak!
Za više ažuriranja, slijedite me na Twitteru.