Interviewing for a new job should be an exciting time, especially when it comes to a company like Wayfair. As you begin looking into a career here, I want to take a moment to emphasize that Wayfair is a great place to work. This starts with our commitment to innovation and constant experimentation, where taking smart risks is encouraged as we all strive to remain on the cutting-edge. Underlying this drive is a universal passion for learning and always providing customers with the most exceptional online experiences possible. Put it all together and what you have is an environment offering you endless opportunities to thrive.
When you begin the interview process, the onus is on our team to show you this side of the business, get to know you better, and make sure we are a great fit. If you’re curious what type of people we are seeking out, here’s your answer—we want individuals who love technology, are committed to solving problems, and are openly communicating how and why they are making decisions. I will get more into this as we walk through the process of interviewing for a Wayfair software engineering role, and the steps you can take to succeed in the process.
Real problems, no tricks
Before diving into the nitty-gritty, there are a few points worth touching on first. For anyone looking to join our engineering team, you need to understand the basics of software engineering. Naturally, the expectations for more depth and breadth in experience grow as the roles we are looking to fill become more senior. You can use Google to look up syntax or function names (what good engineer isn’t good at using Google?!), and for coding challenges, you can pick the language you want to use. Regardless, it comes down to two areas.
- First, you need to know a few computer science and programming fundamentals to succeed at Wayfair. These include data structures, and time and space complexity. These are essential to all roles.
- Next comes your critical thinking skills. You can talk out loud as much or as little as you want. We understand people have different communication styles. In fact, we welcome this range of styles. But at the end of the day, you should be able to clearly explain your solutions one way or another and step back to think about what your solution will look like at Wayfair’s scale with millions of users.
I also want to address bias in the interview process and the steps Wayfair takes to ensure all interactions with candidates are objective and evidence-based. We know everyone has unconscious biases, and we work hard to make this process as objective as possible to ensure that Wayfair is Diverse, Equitable, and Inclusive.
How do we do this? Every one of our interviewers goes through an internal interview training process to align on a consistent approach. For each step, we have a rubric that guides our interviewers on how to assess the candidate in that section. Following these discussions, interviewers submit their feedback on candidates before beginning any discussions with the rest of the interview panel. This process is baked into the feedback forms, which include reminders that each person must use objective statements and evidence from the interview in their feedback.
With that, let’s move on to the process.
There are generally five parts to our software engineering interviews. These include:
- Recruiter Call
- Technical Screen
- Phone Screen
- Onsite Panel
- Fit & Sell Call(s)
Here, the recruiter will give you an overview of Wayfair’s business and the Wayfair Technology team. Next, they will explain some of the roles we have open, and most importantly, get a sense of what you’re looking for so we can make sure it matches one (or more!) of our open positions. I encourage everyone to ask questions because this will help us find the right fit for you.
For the technical component of the process, we have a technical assessment conducted by a Wayfair Engineer that will assess your technical skills in coding and test your knowledge on system design by asking questions around scaling, capacity, networking, and component design. We also use other assessment models depending on the role. One example is a case study, which helps us to understand how well your technical skills match with what we need. Either way, your recruiter will let you know exactly what to expect and how to best prepare. In most cases, these screens help us get an initial look at your capabilities in areas such as coding and system design (you can read more about this in the "Onsite Panel" section below).
In general, we use phone screening to look at your softer skills and your overall ability to drive impactful solutions. You should also be prepared to answer technical questions about your work and the thought process behind the decisions you have made. We suggest using the
S.T.A.R. (Situation, Task, Action, Result) method as a guide for structuring your responses to questions in this round.
Onsite (or Virtual) Panel
In non-COVID times, we’ll bring you into one of our technology offices to meet with everyone in person. Since early 2020, we’ve been conducting virtual "onsite" interviews using various tools, including Google Meet.
Our onsite and virtual panels are split into four sessions that are aligned with one of our
- Coding and We Drive Results
- App Architecture/Data Modeling and We Are Always Improving
- System Design and We Drive Results
- Team Building/Leadership and We Win Together
At the end of each session, we leave 5-10 minutes for you to ask questions. Some people like to ask the same question in each session to gain different perspectives from across the organization. Others prefer to ask different questions each time. Either way, it is an excellent opportunity for you to learn more about Wayfair and get additional information about what it’s like to work here.
After a brief introduction, we’ll dive right into a coding challenge. Here we provide a Codility playground for you to work in, and you can use whatever language you are most comfortable with. The playground will execute your code and highlight syntax errors and warnings. There are no tricks here. This is a chance for you to showcase your ability to write simple code, and when complete, our team will be looking at a number of areas.
- Style: Here, we examine areas such as readability, planning ahead, refactoring, and syntax.
- Comprehension: We look at how you handled defined requirements and ambiguity and discuss technical trade-offs.
- Speed: What we look for here is how quickly you came up with an algorithm and wrote working code.
- Testing: At this stage, we examine writing unit tests and running code as you iterate.
- Communication: Last but not least, we look to make sure you fully understand the requirements, explain your choices, and respond to coaching.
A Few Tips
In the coding stage, it’s crucial that you assess the time complexity of your solution. We understand you want to showcase your skills and impress the teams, but sometimes it’s better to get working code for a suboptimal solution than to spend too much time looking for the perfect solution. We also recommend breaking code into functions—in my experience, it’s always easier to reason with smaller chunks of code.
Once you get going, feel free to ask questions and talk out loud as much as you feel comfortable - the interviewer will be there with you looking at the same screen you see. As I said at the beginning, this isn’t solely about writing code. We’re also looking at your ability to think and be coached, as well as your comfort level when it comes to seeking help. It’s always better to ask for help than get stuck and end up with an unfinished solution.
After a similar introduction, we’ll talk about the system you are going to design. Using Sketchboard for video interviews or a whiteboard in the office, we will ask you to design the high-level physical architecture of a full-stack system.
In this session, here’s what we are looking for:
- Requirements gathering: Do you understand the problem, ask clarifying questions, and propose more guardrails beyond what we’ve provided?
- Component design: Can what you created function as a complete system according to the requirements?
- Protocols and networking: Does what you created demonstrate your understanding of how networks operate and how distributed systems coordinate?
- Capacity and scaling: Did you build for scale in the right places and show an understanding of where bottlenecks will appear?
- Operational support: Can your team monitor and diagnose problems, and do you provide analytics to your business partners?
App Architecture and Data Modeling
Again we’ll start with a brief introduction and then explain the application you’ll be asked to design. Using Sketchboard or a whiteboard, we will be looking at your ability to design the next level of detail as a logical implementation architecture. From our experience, we’ve found that in the allotted 45 minutes, you will only have time to do a “deep dive” into two out of three main areas (API design, class design, data schema). That being said, you should still have sufficient time to touch on each area.
In this session, we’re looking for:
- API design: The top-level interface of your application with a focus more on the input and output than the underlying details.
- Class design: Each class serves a distinct purpose and demonstrates encapsulation and proper use of inheritance and composition.
- Data schema: Tables, columns, sensible relationships between tables, and primary and foreign keys.
Team Building and Leadership
At this point, the process is almost complete. In this session, there will be a two-way conversation between you and the interviewer. We’ll ask about a project on which you played a significant role. We expect you to explain the business context of the project, what the outcomes were, who was involved, what your role was, what you learned from the project, and what you would do differently next time. We are also very interested in knowing the impact the project has on the business and how you measured success. Similar to the initial phone screen, we suggest you follow the S.T.A.R. method to structure your answers.
Next, we’ll ask about a challenging relationship you had, how you made it workable, and a time you had to compromise on a technical decision or implementation plan. If you’re interviewing for a management position, we’ll also ask for additional insights and examples. This includes details around how you have approached career development for junior and senior engineers, how you have kept teams motivated through tough times, methods you’ve used to deal with underperformers, and how you have handled situations with employees that you needed to let go, if applicable.
At this point, your work is done. Now your interviewers will write feedback about their session based on the rubrics explained previously. The recruiter will gather everyone’s feedback, then the whole interview panel will meet to decide whether to move forward and make you an offer. Either way, your recruiter will be in touch within a few days of your onsite interview. If you receive an offer, the recruiter will have all of the details about compensation, specifics about the role, and more. Please ask them any and all questions you have - taking a new job is a big decision, and we are here to help! In addition to the recruiting team, all hiring managers and engineers are more than happy to jump on a call to answer questions!
Fit & Sell Call(s)
After receiving the offer details from your recruiter, the next step is to find a mutual fit with the team and role you’ll be joining. This is important, and to get it right, we’ll set up one or more sessions between you and your hiring manager. This will give them a chance to go through the details of your role. As with every other step, you’ll have the opportunity to ask any questions to make sure this is the right opportunity for you before making your final decision to join us at Wayfair.
Ready to put these tips into practice? Check out our open roles
here and apply to be part of our Wayfair Technology team!