iOS Role - Beginners Questions
Junior roles vary in responsibly and employer’s expectations. They also differ from someone fresh out of university, to someone that is doing the job for up to two years. Both could be put in the junior bracket, although some places would call the former a graduate. Bellow I will define a set of questions and expectations for the spectrum.
Graduate, or no professional experience as a Software Engineeer
At this level, the employer is assessing two things: cultural fit and growth mindset. Anything beyond that is putting candidates for failure. I know this, because we were doing it at Babylon with mixed results.
- Tell me an app you love to use and why.
- Tell me an app you often use, but you don’t like. How would you improve it?
- Why did you decided to become an iOS developer?
- Why apply to <company’s name>?
- If you join and leave us in one year, what do you expect to know by then?
- Do you read/follow any blogs about iOS? Which ones and why?
- In three months time, what does success look like to you?
All questions are open-ended. There’s no right or wrong answers. They are also not google-able. We want to assess the candidate’s drive to learn, but also if they would get along with the rest of the team. At this level, I love candidates that have strong opinions about products they use.
1/2 year experience
The engineer already shipped some code. They have interacted with the team (engineers, designers, PMs). They have 1 or 2 features under their belt. They are not fully independent, but they are capable of working on trivial to medium tasks on their own. Right now the work can be copy/paste: check a feature in the app and mimic the approach. There’s nothing wrong with that, as long they are oversight by more experienced engineers.
- Describe the architectural pattern are you using in your app. What do you like about it and what you don’t.
- How do you test your app? What approaches have you used?
- Describe me your daily workflow when you are working on a feature. Where do you feel it could be improved?
- What’s the biggest point of friction/frustration working on your existing codebase? How would you improve it?
- When do you use an
enum
, versus astruct
or aclass
. - What’s the goal of a
protocol
? - What’s the difference between an
Array
and aDictionary
? When would you use one versus the other?
1-2 years of experience
The engineer is now at an inflection point between junior and mid level. Beyond technical knowledge, they are also capable of negotiating and finding compromises across different functions (designers, PMs and other engineers). They still follow a copy/paste approach, but they are also able to write things from scratch. They have a decent knowledge of iOS and Swift.
- Have you created a featured from scratch? (if yes) Walk me through your process from inception to shipped and beyond.
- What was the last bug you fixed? Tell me how you find it and fixed it.
- Have you used SwiftUI? What’s your experienced so far compared to UIKit?
- How can you make sure your code is testable? What different strategies are you aware of?
- Give me an example when you would use a
struct
instead of aclass
. - How’s memory management in Swift? For example, why do you have to do
[weak self]
sometimes? What would happen if you didn’t? - Have you been exposed to Functional programming?(if yes) What are your thoughts on it?
General tips
- Avoid as much as possible asking theoretical questions. Ask for real examples.
- Be mindful about what are you trying to get with what you ask. Questions probing how much trivia facts the candidate knows, are a waste of everyone’s time.
- Is the question relevant to the job they would be doing? If not, move along.
- Calibrate the questions to the person you are interviewing. An engineer with one year of professional experience, is miles ahead compared to a graduate.
- It’s rare to find a junior dev punching way above their weight. If you happen to hire one, pay them accordingly.