Shopify is a well-known commerce powerhouse and in my mind, it sits next to companies like Facebook, Amazon, and Google. In this article, I’ll talk about how I went through Shopify’s hiring process and got a job as a Software Developer in a matter of weeks.

I was happily employed as a Drupal Developer in 2018 and I was mostly working with PHP and JavaScript. However, I started experimenting with Ruby while contributing to an open-source project named SiteDiff. Later, I also got a chance to build a plugin (Toggl 2 Redmine) for an open source project management tool named Redmine built on Ruby on Rails. As a matter of fact, I was also experimenting with Python and exploring front-end JS frameworks like React and Vue.

I was inclined towards working with Ruby because I already had some experience working with it. Next, I passively started looking for Ruby/Python jobs. Job-hunt mode: activated!

Two minute version

  • Having worked with PHP for ~10 years I was looking for a change.
  • I started experimenting with technologies like Ruby and Python.
  • I found Shopify’s careers page and learnt that they work with Ruby.
  • I visited Shopify’s office in Montréal for an open house.
    • I liked the employee reviews that I read about them on the Internet.
    • I liked their office and the reviews that I got from Shopifolk.
  • I sent them my résumé and started going through their interview process.
    1. A 20 minute screening phone call.
    2. A 1 hour life story interview.
    3. A 1 hour basic coding challenge.
    4. 4 more hours of more technical interviews and coding challenges.
  • The interview and selection process took around 3-4 weeks.
  • Finally, I received a job offer!
  • Shopify did the necessary paperwork to help me start working with them.
Exterior of Shopify’s office in Montréal
Shopify’s office in Montréal

Job hunt

In no specific order, I started doing some research about the following:

  • Top 10 companies that hire Ruby developers.
  • Ruby developer jobs in the province of Québec, esp. Montréal.
  • Average Ruby developer salaries in major Canadian cities.

Needless to mention, I also polished my LinkedIn profile and updated  my résumé to reflect my current skills, experiences and projects. Since I was planning to work with Ruby, I spent a substantial amount of time to read Ruby’s official docs, solved several HackerRank challenges with Ruby and even created some small Ruby projects to have work samples.

As an immigrant, my job choices were limited because changing employers in the Province of Québec can be quite difficult unless you are a PR or a citizen of Canada.

One evening, I heard about a React JS meetup that was taking place at Shopify. During this event I got a chance to meet several members of Shopify’s team in Montréal and in turn I was interested in working with them. Coincidentally, the very next day, they had an open house where I got a tour of their office and got to speak with more Shopifolk. Next, I sent them my résumé along with a cover letter explaining why I wanted to work with them.

Common room and hall at Shopify Montréal
Shopify’s office in Montréal: The common room

Interview and selection

The interview and selection process mentioned below is for the Senior Software Developer role. The process will vary depending on the role you apply for.

Screening interview

After sending my CV to Shopify, I heard back from them in a week or two. A 20 minute call was scheduled. During the call, the recruiter and I talked about the following (usual) topics:

  • Types and scale of projects that I had worked on.
  • Role(s) that I usually play in projects.
  • Sizes of teams that I had worked with.
  • Why I was looking for a new job.
  • When I could start working with them.

I was also asked about my immigration status and possible paperwork that might be involved in case I were to get selected for the position.

Life-story interview

This 1 hour interview is quite simple, however, it is the trickiest to understand. All I had to do in this round was to talk about my life. I mostly talked about things like:

  • How I got into software development.
  • Important projects I’ve worked on.
  • Special events in my personal/professional life.
  • Why I wanted to work at Shopify.

I believe that this interview helps the recruiter understand you better as a person and to determine what motivates you and how passionate you are about what you do. After this round, I moved on to the basic coding challenge.

Basic coding challenge

The basic coding challenge was indeed fun and it was about 1 hour long. I had to write a simple function to solve an easy problem using a programming language of my choice. I was thinking about solving the problem with Ruby because Shopify mostly works with Ruby. But I decided to play safe and wrote my code in PHP with which I was more confident.

Learning a programming language is much easier than learning to code in general.

I think the objective of this round was to filter out candidates who cannot solve basic problems with code.

I got the desired output to the interviewer’s satisfaction in ~40 minutes. I wanted to write the program again in Ruby, however, the interviewer made me realize that I didn’t have enough time. Besides, it was not necessary because the programming language didn’t matter 😀

Being true to oneself is very important. Hence, I rewrote the solution in Ruby after I went home, just to prove to myself that I could’ve done it in Ruby.

Advanced coding challenge

After the basic coding challenge, it was time for something more complex. I was invited to the Shopify office in Montréal for 4.5 hours of interaction with the team, lunch and interviews. The schedule was roughly as follows:

  • Pair programming with a senior developer (75 min): A senior developer assigned me a medium-difficulty problem. We brainstormed and agreed upon a solution. Next, I had to write code to get the desired output. During the process, I had to think aloud so that the interviewer would know what I was trying to do. They would occasionally jump in and give me hints if something was not going on the right track.
  • Lunch with a team lead (60 min): Shopify usually provides catered breakfast and lunch at their offices. Awesome! In this round, I got to have lunch with a team lead and we talked about various topics, not necessarily related to work. During this round, I learnt more about Shopify’s work culture and I was very excited for the next round.
  • Technical deep dive (60 min): In this round, I had to present a project of my choice to a semi-technical personnel from Shopify. Unfortunately, I didn’t have a fairly complex project to present so I presented a simple one named Toggl 2 Redmine – a plugin I wrote for the Redmine project management system. During the presentation, we went into the details of why I built the application, how it evolved into what it is today and the challenges I faced during its development.
  • Pair programming with a senior developer (75 min): Another pair programming session similar to the one mentioned above. In this one, I reached very close to the solution, but I couldn’t get it to pass all the test cases. However, I strongly dislike leaving problems unsolved. Since I was curious, I solved the problem after I went back home and mailed it to them, mostly for my own mental satisfaction.
  • Check-in with the recruiter (15 min): To conclude the day, I spoke with the recruiter about my experience with their selection process and possible terms of employment.

I think the main objective of this round was to evaluate my technical knowledge, programming skills and problem solving skills. Secondly, all this interaction gave them a chance to evaluate my social skills and most importantly, my behavior. Usually, nobody likes to work with people who are rude, uncooperative, not receptive to feedback. Through these interactions, my potential team members got a preview of what it’s like working with Jigarius 😉

Shopify's head office in Ottawa
Shopify's head office in Ottawa

Sample questions

These questions were created by me to give you a rough idea of how real questions might look. I firmly believe that sharing the actual test questions is unethical. Any past/future appearance of these questions in a real test is/will be purely coincidental.

Basic coding challenge

Say, an organization issues ID cards to its employees with unique ID codes. The ID code for an employee named Jigarius Caesar looks as follows: CAJI20202195.

Here’s how the ID code is derived:

  • CA: First 2 characters of the employee’s last name.
  • JI: First 2 characters of the employee’s first name.
  • 2020: Full year of joining.
  • 02: 2 digit representation of the month of joining.
  • 219: Indicates that this is the 219th employee who joined in Feb 2020.
    • This will have at least 2 digits, starting with 01, 02, and so on.
  • 5: The last digit is a verification digit which is computed as follows:
    • Take the numeric part of the ID code (without the verification digit).
    • Sum all odd digits. Say this is O.
    • Sum all even digits. Say this is E.
    • Difference between O & E. Say this is V.
    • If V is negative, ignore the sign, e.g., -2 is treated as 2. Say this is V.
    • If V is greater than 9, divide it by 10 and take the reminder. Say this is V.
    • V is the verification code.

An ID code is considered valid if:

  • The first 4 characters of the card are correct, i.e. CAJI.
  • The verification digit is correct, i.e. 5.

Problem

  • Write a command-line program in your preferred coding language that:
    • Allows the user to enter their First name, Last name and ID code.
    • Prints PASS if the ID code seems valid.
    • Prints INVESTIGATE otherwise.
  • Write relevant tests.
    • It is not necessary to use a testing library.
    • You can use your custom implementation of tests.

Advanced coding

Coming soon.

You’re hired

One evening in December 2019 when I was getting ready for my vacation, I finally received a call from my recruitment coordinator. I was told that I had successfully passed the selection process and I soon received an email with an offer of employment.

Due to my immigration status in Canada, I had one final round of struggle left: paperwork. Shopify helped me get a new work permit allowing me to work at their office in Montréal for which I’m very thankful.

Front cover of the book “Ruby Under a Microscope”
A welcome gift from my team lead: Ruby Under a Microscope

Conclusion

  • Shopify is a commerce powerhouse that’s revolutionizing the industry.
  • Getting a software development job at Shopify involves a lengthy selection process, but the process is not very difficult if you have the right skills.
    • You must’ve heard the saying, “no pain, no gain”.
  • Shopify provides competitive compensation packages with several perks.
    • At Shopify you get delicious breakfast and lunch for free!
    • The work schedule is flexible. One can work from home when need be.
  • In general, I found that fellow Shopifolk are talented, friendly, respectful and passionate about what they do!
  • Looking for jobs? You’re welcome to check out the current openings at Shopify.

Next steps

On this page

Recent articles

May 23, 2020

Drupal + Sidr: Accessible Responsive Menus

Learn about the Sidr module for Drupal that lets you add beautiful, accessible mobile menus to your website.
May 21, 2020

Extension or Change of Conditions on Work Permit at a Canadian Port of Entry: My Experience and Thoughts

How temporary foreign workers can obtain an extension or change in conditions of work permit at a Candian port of entry.
Apr 12, 2020

Dockerize Drupal with Lando

Learn to use Lando for running Drupal websites in Docker containers and get dockerized Drupal websites running in under 5 minutes.
Mar 22, 2020

Teckin Wi-fi LED Colored Smart Bulbs: Review and Experience

Make your home smarter with budget LED smart bulbs from Teckin that provide warm light, cool light and a tonne of colors.
Mar 21, 2020

Dockerize Drupal with Ddev

Learn to use Ddev for running Drupal websites in Docker containers and get dockerized Drupal websites running in under 5 minutes.
Jan 20, 2020

Full-stack Drupal Developer at Evolving Web: Interview, Experience and Review

How I moved from Colombia to Canada and worked on awesome Drupal projects at Evolving Web as a full-stack developer for ~3.5 years.

Thoughts and comments