fbpx

Interviewing for iOS Design System Engineer at Spotify

Spotify platform showing on tablet, mobile and laptop

ARTICLE SUMMARY

Funmi shares her advice when interviewing for an iOS Design System Engineer role at Spotify. She educates us on her top tips throughout her journey.

It’s been 3 years since I started teaching myself coding and then graduated from a full-stack coding bootcamp. In that time, I’ve worked mostly as an iOS engineer with some experience in Android development.

Spotify is a product that I’ve used and loved for years. I love music so it’s an app that I use almost every day and so I was really honoured when this opportunity became a prospect. Besides the stress of interviewing, I did enjoy the interview process. I’m so happy to be joining them as an iOS engineer within the Design Systems team in Sweden.

Overall, it felt like a humane and thoughtful interview process. They communicated their expectations, made the process as convenient as possible; they provided clear feedback during and after my interviews.

In this post, I will talk about my interview process with Spotify. How I prepared for the interviews and resources that might be useful for anyone preparing for an iOS interview.

My application process

So how did I apply for the job?

A bit of networking can go a long way, especially in tech. I know LinkedIn can seem spammy to some people, but it was through the platform that those initial conversations with an engineering manager at Spotify happened. I think it’s a good platform to make connections with people at different companies. It’s a good way to put yourself on their radar when roles become available. 

So my application process was a mix of initial casual conversations with a few people at Spotify and me applying directly through their website. After the initial conversations I had, I was able to get a better understanding of the opportunity and how the team worked. Then I sent in my tailored application through their website and was contacted by a recruiter after a few days to begin the interview process.

I always recommend that people take this approach if possible. Networking and creating some kind of connection instead of just sending an application. Even though it may feel uncomfortable or awkward, it gives a higher chance of an application being reviewed. When applying to a large company with potentially 100s of applicants, knowing that someone is looking out for your application reduces some stress. And lets you focus on getting ready for the interviews, instead of wondering if anyone even saw your application. Try to reach out to someone and get a referral, it’s all about putting yourself out there.

Interview process overview

The whole process, from my first interview to getting my offer for the role, took about 1.5 months. The interview process was split into the following stages:

  • Recruiter interview 
  • Technical interviews
    • iOS and computer science questions
    • Coding exercise
  • Final interviews
    • Show & Tell
    • System design interview
    • Fika ☕️
    • Design systems interview
    • Behavioural and values interview

General interview prep

Before I go into each stage of the process in detail, I wanted to share some general practices that I found valuable during this interview process. I like to think of these as the admin work around getting ready for job applications and interviews.

1). Create or update your brag document

A brag document is a document listing all your accomplishments. It is a great document to maintain even if you’re not interviewing.

Instead of trying to remember everything you did with your brain, maintain a “brag document” that lists everything so you can refer to it when you get to performance review season! – Julia Evans, https://jvns.ca/blog/brag-documents/

Julia explains in the article that a brag document isn’t just useful when looking to get a raise or promotion. It helps you to reflect on the themes of your work, what’s important to you and what you’d like to do differently. Since I heard about this practice, I’ve always tried to maintain a brag doc and update it every few months. 

This document becomes useful when interviewing as it feeds into your job search; your job application process, talking about your work in interviews, and, building confidence in your experiences and the value you bring with you.

2). Create a question bank

At each stage of an interview process, you’ll usually get some time to ask the interviewer some questions. This is a good opportunity to learn more about the role. Find out about the company. This is your time to also try to figure out if they are a good fit for you. 

A question bank is simply a prepared list of questions. Questions that you may have for anyone that you interact with during the interview process. e.g. about the team or role or company. Whenever I thought of a question, I would add it to my list. Then for each interview stage I would pick the most relevant questions for my interviewers. 

For me, the key benefit here is that doing this in advance throughout the process meant having one less thing to prepare for each stage. It also allowed me to refine my questions as I progressed through the process.

3). Document the process

Lastly, documentation and reflection. This is simply taking notes and reflecting as you progress through an interview process.

Documenting my interview processes is something I wish I had started doing earlier in my career.
How did I prepare for my last 2 roles?
What did I learn during the process?
What did I learn about myself?

I certainly couldn’t recall these things in detail. So for this interview I knew I had to document the process for my future self. 

This was especially useful when practising technical and behavioural interview questions. It usually takes time to prepare the answers for these stages. So it can be helpful to recall how I’ve approached them in the past.

Then to reflect, after each stage I try to note down what went well and what I could have done better. 

Interview process in-depth

All the interviews happened remotely via Google Hangouts due to the COVID pandemic, this was the safest way to interview and it turned out to be v
ery efficient and convenient. I will now go over what each stage entailed, along with tips and resources that I used to prepare for them.

Stage 1: Recruiter interview (45 minutes)

The first interview was a call with a recruiter. In this call I learned more about the role, what they were looking for, the different teams that were hiring and I was given an overview of the whole interview process. This was like an introductory interview for me to share my interests, what I was looking for and why I applied for the job. Then I was asked some general questions about iOS development, my skills and my experience from previous roles.

In this interview, I think it’s important to talk about why you applied, what interests you, what kind of work you care about and share your skills that are relevant to the role. At the end of the call, the recruiter confirmed that I would be getting through to the next stage.

Stage 2: Technical interviews (1 hour 30 minutes)

I was interviewed by two iOS engineers, this stage involved about 10 iOS trivia questions and a coding challenge to build an iOS app from scratch in Xcode. 

The coding challenge was done via Hangouts. I shared my screen with the interviewers and talked them through my process as I built out the requirements. After I finished the exercise, the interviewers asked some more questions about my implementation. I then discussed any other improvements that I could make to the code. In this part of the interview, it’s important to clarify the requirements. Make sure you understand them before jumping straight into coding. You’re also encouraged to ask questions if anything isn’t clear. Keep communicating whatever solutions you have in mind to help them understand your thought process. Then try to mention any other improvements to your solution even if you don’t finish the exercise within the given time.

Coding Challenge

For the coding challenge, I prepared by building simple apps involving e.g. table views, collection views, networking, working with storyboards and building views programmatically. I tried to cover the fundamentals to ensure that I would be confident when I needed to do some live coding during the interview. I also practised any other exercises that I could find online and brushed up on my problem-solving skills.

To prepare for the trivia questions, I spent time studying and refreshing my knowledge on different iOS concepts – from fundamentals to more advanced concepts. I practised with sets of interview prep questions that I could find online. When studying, I would prepare an answer for each question in my own words so that I could confidently explain during the interview. 

After a few days, I heard back from the recruiter that I did well and that I would be moving on to the final interviews. We discussed my feedback from the coding interviews, and I was given a clearer idea of what to expect in the next interview stages.

🔗 Resources:

Stage 3: Final interviews

The final interviews usually happen at Spotify’s office. It would have been cool to get a trip to the Stockholm office but due to the COVID pandemic, they happened remotely like the first two stages. I think the team made it work. They were flexible with scheduling and they made it a convenient process for me.

There were four interviews in this stage.

Show & Tell (1 hour)

The show & tell was with an iOS engineer and a product designer. This is similar to a take-home assignment which is given during some interviews. Except here you’re presenting some of your own work that wasn’t defined by the company.

I presented one of my personal iOS projects in this interview and talked about my process when building the app. The decisions I made, the design patterns, architecture, and technologies used. I tailored my presentation and I tried to make it accessible for both a designer and an engineer.

To prepare for this interview I focused on certain areas that I felt were most high-value to showcase the experience and skills that I had to bring to the role. I believe this approach really paid-off as I received great feedback on my presentation and the areas of the app that I chose to focus on. I particularly enjoyed preparing for this interview as I got to show the kind of work that I find rewarding. Which also overlapped with some requirements of the role I was interviewing for.

System design interview (1 hour)

For the system design stage, I was interviewed by 2 iOS engineers. Typically this kind of interview would happen in-person with a whiteboard to discuss the design of the system but because it was a remote interview, we used a virtual white-boarding tool called Miro. This tool was shared with me in advance so I could get familiar with it before the interview.

This interview was focused on mobile system design and architecture patterns. I was given a simple mock-up of an app, then focusing on specific screens, and given some requirements. Then I was asked to design an architecture and implementation for the screens.

I found this stage tricky because I wasn’t used to describing my ideas in real-time using a tool like Miro. Striking the right balance between clearly explaining what I was thinking and also drawing clear diagrams to show my solution was challenging. My interviewers were really helpful here. They engaged with me during the exercise, and they gave clear signals to show when they understood my solution, or when I needed to explain something further.

Prep Work

When I was preparing for this stage, I noticed that most of the resources available on systems design are tailored towards web, full-stack or back-end developers. Not many cover what mobile systems design involves. I ended up studying quite broadly because I had never done an iOS systems design interview and so I had no point of reference.

Upon doing more research I did find a few resources related to iOS or mobile. I realised that I had already been exposed to the systems design process in my daily work. I tried to think of how I usually approached building features, all the steps involved. from the initial feature requirements to getting an API spec, to deciding on which architecture & design patterns to use, to defining how data will be structured. They are all part of system design. Working in an organisation where you’re involved in the design process of features is beneficial in gaining experience. If you have side-projects then you can use those to practice some systems design.

To prepare for this interview, it’s important to get comfortable with talking about architecture and explaining the decisions you make when building out a feature. Get comfortable with drawing out clear diagrams to convey your ideas. Doing this exercise a couple of times should help in getting you prepared especially if you’ll be
using a whiteboard.

Set a Challenge as a test

When preparing, you can pick a screen from any well-known app and try to come up with a systems design for it. Start with a high-level design then go into more detailed design of each component. Some example prompts that I would use when preparing:

  • How would you define the different components needed to provide all the required functionality?
  • What architecture pattern would you use & why?
  • What would you name your different objects/models?
  • How would you pass data around different screens?
  • How would you store the data?
  • How would you ensure testability of your code and how would you test it?

If I were to prepare for this stage again, I would spend less time learning about system design from the perspective of web developer and focus on refining my ideas on the architecture of an iOS app. I did learn a ton from preparing for this stage. It felt like I gave myself a refresher on a lot of web-dev concepts but yeah focus on what you’re more likely to need on the job.

🔗 Resources:

Fika ☕️ (30 minutes)

Fika is Swedish for a coffee break that’s more about socialising than drinking coffee. Fika is much more than having a coffee. It is a social phenomenon, a legitimate reason to set aside a moment for quality time. – https://sweden.se/culture-traditions/fika/

I found the concept of Fika quite cool when I first heard of it- A good social/coffee break and I think it’s nice that Spotify has incorporated this into their interview process.

So this wasn’t an interview and they made that clear. This stage was a casual conversation with two other engineers from the design systems team where I could ask them anything. This allowed to me find out more about the team, their experiences at Spotify and about life in Stockholm.

Design systems interview (1 hour)

This interview is specific to the role because I was interviewing to join as a Design System Engineer for their iOS platform.

I was interviewed by a design program manager and a product designer.

Here I talked about collaboration with designers and my experience with design systems. How to evolve and maintain them; their challenges and possible ways to solve them. This was one of my favourite interviews as it gave me a lot of insight into the team I would be joining. It also provided insights into Spotify’s design system operations.

To prepare for this stage, I went over my resources on design systems and I went through all the information I could find on Spotify’s design systems. This helped me to build a better understanding of their approach and challenges.

🔗 Resources:

Values interview (1 hour)

The values interview is a behavioural interview. I was interviewed by 2 engineering managers for the designs systems team. Like most behavioural interviews this interview covered. Questions relating to the company values, talking about myself, how I handled specific situations at work and how I work with other people.

🔗 Resources:

🥳 Offer

After about two weeks, I got an email from my recruiter saying that I had passed and they wanted to make me an offer. My recruiter had also collected and shared the feedback from all the interviews. We discussed the compensation, relocation e.t.c and I accepted the offer after a few days 🎉🎊.

It’s important to always do some research and gather data when evaluating an offer so I’ve created a list of resources to prepare for discussing compensation here.

📝 Some takeaways 

  • Glassdoor and Google search is your friend when interviewing, use it for additional research when preparing for an interview and use it to gather more details on the interview process.
  • Having at least 1 personal project to showcase your skills can help you land a job. I don’t think it needs to be overly complex but something that shows how you structure code and what you care about when building an app goes a long way. Working on your own app and maintaining it can also be quite rewarding to see how your skills progress over time, especially if you use version control.
  • Having a good understanding of the fundamentals will always help and you should also be able to explain them to someone else.
  • Try to practice interviewing at least once a year to feel less rusty when you’re eventually looking for your next role, through real or mock interviews. This one is a piece of advice that I’ve heard a lot over my career, as it helps to keep up with the industry. It’s not something I’ve done but I can see how it helps. I think finding some way to incorporate interview prep materials into my personal development is a way to try to keep my knowledge fresh even when I’m not looking for a new job.

I hope this has been helpful, If you have any other questions about my role at Spotify or relocating to Sweden, you can reach out to me on twitter @funmmi or leave a comment here.

Bye for now 👋

RELATED ARTICLES

Luan Hughes, CIO at Telent, shares her vision for a more inclusive and diverse tech industry. Drawing on her extensive experience and passion for empowering...
Crafting inclusive job adverts is essential to attracting top female talent. An analysis of 158 HR job listings reveals that as salaries and seniority rise,...
Borderless recruitment is all about hiring without geographical limitations, leveraging the benefits of remote work and enabling companies to access a broader talent pool. Ivy...
Lydia Kothmeier, VP of Operations at enterprise CMS Storyblok, explains why hiring for the right mindset rather than skill set can be a powerful strategy...