I want to share some things I've learned while training to conduct the Communication and Design software engineering interview at WePay.
For the past month I have been training to become an interviewer for WePay's Communication and Design software engineering interview module. I wanted to share some of the things I've learned because I feel that WePay has a very well thought out interviewing system.Before I get into the details, feel free to take a read through these two articles on the WePay Engineering blog about how our interviewing is structured.
Because some parts of WePay's interviewing are confidential, I will stick to talking only about things that have been disclosed publicly in blog posts, videos, etc, but I will add my own opinions.
Why I Want to Interview
As detailed in this previous blog post, one of the main reasons I chose WePay over my other offers was that I was impressed with the recruiting approach and saw opportunities to learn how to interview. I remember feeling impressed that when I was doing my four virtual on-site modules, there were interview shadowers in two of the modules. It seemed so cool to me that not only were these senior, staff, and principal software engineers and managers interviewing, but they were also taking additional time out of their days to train new interviewers.
Shortly after I started working at WePay in June 2020, I learned that actively participating in interviews is not only encouraged, but also a requirement to all of the software engineering promotions. I am actively working with my manager towards my senior software engineering promotion, so this also motivated me to want to interview.
But my primary reason for wanting to learn to interview software engineering candidates is that one day when I am in a position that requires growing a team, I want to be prepared to find the right people for my team. Having the opportunity to learn from a great interviewing team at WePay is a priceless opportunity, especially while I am early in my career and "learning on someone else's dime." What I mean by this is that I don't want to start learning how to interview while I am building my team in the future because mistakes at that point will be costly.
Why I Chose the Communication and Design Module
As documented publicly in the WePay Engineering Blog posts at the top of this article, WePay's on-site interview consists of 4 hour-long interviews: 3 coding interviews and 1 non-coding interview. That non-coding interview happens to be the Communication and Design module that I am drawn to. The first half of the interview is spent on discussing one of the candidate's past projects in technical depth, and the second half is a system design problem.
I was drawn to this interview module because I believe that communication and system design level thinking are very important to software engineering.
I find communication to be important because:
- Highly technical projects are composed of various parts which team members need to be able to understand.
- We work in a remote-only environment these days which means that being able to describe technical things concisely and with mainly words is crucial to working as a team.
- Communication is key to being able to coach teammates and mentor peers.
- A good communicator in an interview setting exudes confidence because they appear to be more knowledgeable about the details of what they built, which makes them more likely to be hired.
I find system design to be important because:
- Having a good system design from the beginning vs a mediocre system design can save (literally) thousands of hours of technical debt.
- System design is a blend between software engineering and creative thinking. There are often multiple ways of solving a problem, and the choosing of a solution depends on the tradeoffs between strengths and weaknesses of the options. For instance, to design a microservice that generates PDF's and uploads them to another service via an external API call, there are pros and cons to creating a separate service just to wrap around the external API calls.
- I feel like engineering is often times about being able to put modular pieces / libraries together to build something new or more robust, and I think system design is what gets us there.
- The ability to think at the system design level is one of the main differentiators between a junior and senior software engineer. Given that I'm working towards the senior software engineer promotion, it makes sense for me to strengthen in system design thinking.
Shortly after I joined WePay and expressed interest in becoming a Communication and Design module interviewer, I needed to complete some preliminary tasks in order to be added to the interview training queue. I was asked to complete an exercise where I was given a mock resume and was asked to write out my interview plan. I was directed to internal company articles which detailed how to conduct the Past Work portion of the Communication and Design interview. After I submitted this, I was given some feedback and then was added to the queue.
This February I was taken off the interview training queue, and I was "paired" with an experienced WePay interviewer who had conducted hundreds of interviews. For the first interview, he led the interview and I shadowed. But before we conducted the interview, I had to do a lot of pre-interview preparation, as if I were conducting the interview. I could see the candidate's resume in Lever and prepared an interview plan to ask about their Past Work. My preparation included looking up technical phrases that were mentioned in their resume; reviewing the phone interviewer's feedback; not looking at the other Lever on-site interview feedback so as to avoid bias; and preparing a series of questions that would go into assessing the candidate's ability to communicate a past project of their choosing.
After my first interview shadow, I had post-interview sync with my mentor. We reflected on how the interview went and I had opportunities to ask questions on why he did certain things. I remembered feeling amazed because my mentor not only had to prepare for the interview, conduct the interview, and write his feedback (~2 to 3 hours of time), but he also had a pre-interview sync with me (30 min), a post-interview sync with me (30 min), and a number of back-and-forth Slack conversations with me answering my questions and reviewing my interview plan. I could tell he was really passionate about interviewing and that was really cool to see.
We continued this interview shadow process for 3 more interviews before I was comfortable with leading the Past Work (first half) section of the Communication and Design module. Then I led the Past Work section with my mentor and another interview mentor I was occasionally paired up with, and led 3 Past Work sections of interviews while transitioning the Design problem over to the mentor.
At this point, it had been 3 or 4 weeks and I began training for the System Design interview section. I studied the problems that WePay asks and went through the problems on my own independently. My mentor held a mock interview with me where he mocked a non-passing candidate and purposely made the mistakes that I had to guide the interviewer on, such as focusing on the object oriented design in an interview that is about system design, or just talking continuously where I had to interrupt and guide the conversation.
Next Blog Post
I will conclude this blog post here, and continue into more details in the next blog post.