In our first installment, we discussed some of the more frequently asked questions by aspiring devs and we explored a bit of what managers usually want to see in order to grant you an interview.
Today, we’re exploring what to do once you do get an interview. There’s different types of interviews, so let’s explore that first.
Step 1 – The “are they legit” call
All the companies I’ve interviewed with have a first call where they want to make sure that interviewing you is not a waste of time.This call is usually not technical in nature, though there may be some softball technical questions just to make sure you’re not lying on your résumé.
Usually, this call will revolve around why you applied to the company and what both parties are looking for. Let’s explore some common questions…
Why did you apply to Company X?
If you followed the advice in the first part of the series, you applied to dozens of companies per week so you’re very unlikely to remember Company X. That’s totally okay and you should not feel bad. I hate this question, and so do a lot of devs, but the worst thing you can say is, “well, I want money, har har”. That will immediately disqualify you. It’s literally why Step 1 exists, to filter out people who can’t play the game. It may be hypocritical, but you have to play to get to the next step.
However, if you’ve reached this step you must prepare by Googling the company. Find out what their main product is and download it. Play with it and take notes. Is the onboarding process too long or short? Are there any interesting animations? Can you guess how they implemented a few of the custom elemnts on screen? These notes will help you craft an interesting answer. Write down a genuine answer and you’ll be set.
Also, just in case you do get technical questions, you’re getting some softballs for sure. I have seen other devs asked and I have asked myself things like:
– What is the difference between let and var?
– What are optionals?
– What’s the main difference between a structure and a class?
Tell me a hard problem you solved recently.
This is where your side projects or contributions to open source shine. Here’s the secret: it doesn’t have to be a super hard problem. You can make anything a hard problem if you describe it correctly. For example, say presenting a new view controller from a button press. Super simple stuff, right?
“There was an open issue on Open Source Project X that I tackled which was presenting a new view controller when Z happens. The project was using VIPER and I had no experience with this architecture so implementing the change required reading several blog posts by Y and W (authors). I wanted to respect the architecture so I learned, wrote a modular solution and submitted it for pull request. This was hard because learning a new architecture, even while knowing UIKit took time and effort.”
The purpose of this answer is not for you to show off how to solve complex technical issues. The purpose is to show the interviewer how you overcome issues that are difficult for you.
What’s your expected compensation?
Sometimes you’ve already answered this question during the application process. If so, this question is unlikely to be asked.It’s also unusual for this to get asked in the first call but I have seen several companies ask this upfront. Do not be surprised if this is the case.
There’s a few possibilities here:
Easy:They posted an expected salary in the job post.
If that’s the case, just find a place in the range where you feel comfortable. I’ve seen a lot of people that feel uncomfortable saying something in the higher end of the range, but I haven’t seen evidence of this affecting your chances, unless the range is very big (e.g. 60-80k) or if you’re in a very close race with someone else and the hiring manager is worried about budgeting.
Hard: They did not post an expected salary.
Complicated, of course. The easy way out is to tell them a range you feel comfortable with. Do a bit of research on Glassdoor and ask around on Twitter (subtly) to find out a suitable figure. In general, for iOS jobs in the US, 60-70k is your floor. In Europe I’d assume 50-55k Euro. For the rest of the world, I don’t have enough info to help.
Now, here comes the kicker. The correct answer to this question is “I’m looking for a competitive rate.” DO NOT SAY A NUMBER. You will feel awkward. The interviewer may ask again. Repeat the phrase. Repeat it again. They’ll wait a few minutes and ask you again. Repeat the phrase. Let them give you a number.
I wish I could emphasize this more, but it’s really important that you don’t say a number at first. This may disqualify you from some (shitty) jobs, so if you’re desperate, go the easy route. If you’re looking for a good place, though, this will help you increase your chances of getting paid what you deserve.
Step 2 – The Technical Test
Depending on the size of the company, this step may take a single interview or up to 8+ interviews. Yes, it’s that crazy.
FAANG tech interviews
There’s usually ~2 video calls here. Usually the first few calls are CS questions that may be answered in one of several available high-level languages (think Java, Python, etc). An engineer will be on the call and he’ll see you code live. They may or may not be helpful.
If you get past the first video calls, you’ll be invited to an all-day interview on site (with COVID-19, they do 6+ virtual calls back to back, which sucks because you missed the trip but at least you get to be in your house). The subsequent interviews are much more likely to be around your area of expertise, in this case iOS. Expect some 1-hour problems around all areas of iOS: view lifecycle, Swift fundamentals, UIKit questions and UI/UX.
These 6+ interviews vary wildly because it’s 6 different interviewers. Each interviewer wants to test different things from you so I can’t help you a lot. There’s too much variance, so just prepare as best as you can and good luck!
Startups and small-to-mid-size companies
Good news is that interviews at startups are usually not as drawn out but you may find some outliers here. It’s also more likely that you get a take-home test and some slight pair programming afterward.
You’re also one step ahead of other participants if you got here because during Step 1 you gathered notes about the app. Usually interviews at this company size will be related to something in the area where the product exists: e.g. UI-heavy apps will ask you about custom animations and UIKit, video-based companies may ask you about AVKit, other companies may ask you about Networking or Core Data.
Take home tests are your opportunity to showcase your skills and they are usually timed. No one is measuring your time but yourself, but don’t lie. If the test says it should take an hour and it took you 4, the interviewer will know. They’ll know.
While working on your take-home test, you must understand that it’s a personality test too. If you’re way too clever and fancy, that’s a tell and you’ll get grilled on it. If you’re way too simple and don’t do anything more than the bare minimum, you won’t get the position. Not to toot my own horn too much in a single email, but my book covers this aspect pretty well.
The important note here is to understand that there’s much more personality involved during these calls. Yes, they will be technical in nature, but adding a new person to a startup is an extremely expensive affair. I don’t mean this financially, though sometimes that may be the case. Adding someone to a team of 5 or less and finding out later that you don’t like working with them is expensive. It takes up time to fire them and once you do, you have to restart the process.
So feel free to show more of your personality here. Joke a bit. Bring interesting tidbits regarding the problem you’re solving.
Step 3 – The “cultural fit” call
If you’ve made it this far, it’s very likely that you’ll get an offer letter. This last step is all about getting approval from the last person in line. This person usually has Director, VP or a big capital C in their title and they will be judging if you’re a good fit.
These will likely be softball questions:
– What are you expecting from the company?
– When would you be available to start?
– Do you have any questions for me?
This is the call where it’s most likely you’ll get asked what’s your expected compensation? I’ve already described both easy and hard path.
The interview process is, at its simplest, a popularity contest. You want your interviewers to like you and you want to demonstrate that you’re the person for the job.
I also send interesting iOS-related news and interviews from members of our community. Subscribe to improve your coding skills! Follow me on my weekly mailing list and I’ll keep you posted!