What do you need to hire a good iOS developer? You want someone who will be a good fit with your development team and a great long-term investment for your company, right?
If you ask developers about their recent experiences being hired and doing interviews, you’ll probably hear a lot of similar stories. And unfortunately, a lot of them are really negative. A lot of this negativity stems from the idea that when it comes to software development, companies should focus on hiring for only technical skills and expertise.
This is an outdated mindset, and it’s become extremely costly for companies who choose to sustain it.
In most cases, but especially for startups and growing companies, they need a mindset that prioritizes two things when hiring:
- Team players with good communication skills,
- And professionals who are agile at learning new things
We've already talked about what specific topics, you should ask about but in this article we’re going to cover:
- The practices you should stop doing in interviews
- What leaders and hiring managers need to focus on if they want to grow strong, inclusive development teams and what they can do right now to improve the hiring process
- Tips specific to the hiring of iOS and Swift developers
Current hiring practices are hurting everyone
It’s fairly well-established that the tech and software industry really struggles with hiring and retaining people. According to LinkedIn, the tech and software industry continues to suffer one of the highest turnover rates in the world: 12.9%. This is higher even than industries notorious for their high turnover, like hospitality and retail.
It’s also really expensive. Data shows it costs organizations anywhere from $43,000 to $50,000 to hire a new software engineer and will spend upwards of six weeks’ productive time to do it.
However, as we noted before, many interviewing practices and tools, including popular ones that are sold as reliable ways of assessing candidates, essentially set your hiring process up to fail.
If you’re spending a lot of time on either side of the interview table, you already know how stressful and awkward it can be – you have the difficult task of divining whether you or your organization can have a successful long-term relationship with the other with no foolproof way of knowing they are the right choice for you. That said, stressing people out during interviews, including yourself, is always going to be counterproductive.
What You Need To Stop Doing When You’re Hiring
Arbitrary code tests
Have you ever made a candidate stand up and work out an algorithm on a whiteboard during an interview? These are invariably high-stress situations, which means you’re never going to see what their good quality work looks like with them. You may have even seen many people completely freeze up when put in this situation.
While there might be many developers who can complete them, code tests are a very poor way of understanding what a candidate’s abilities are. Many tests also rely on areas of computer science that are rarely used in day-to-day work.
Grilling candidates to see if they know everything
In modern software development, there is a high need to be agile and flexible in the way you work. Things change very quickly, and a good developer needs to be constantly learning new things in order to stay ahead in this field. Making sure that a candidate has at least a baseline of knowledge in the area of expertise you need them for is best evaluated as one of several indicators of their ability to learn.
What is important to avoid doing long rounds of interviews fixating on technical knowledge – more often than not, it puts both the hiring manager and your company culture in a negative light. It also has a tendency of making prospective hires feel unwelcome in your organization, and you lose out on recruiting the best people. It’s also time wasteful, as you end up needing 6+ rounds of interviews to explore someone’s knowledge of even small areas of software development.
Not giving any guidance or sharing expectations
A classic example of this happening is when the interviewer sits silently while putting the interviewee on the spot with the two above practices. Not only does this make things more awkward, but it creates a hiring process that selects for candidates who are arrogant - not surprising if the interviewer is unhelpful and hostile to having a conversation.
A key part of software development is communication – almost nobody hiring builds apps all on their own. And if you’re hiring for a team of any size, communication is going to be a major factor in the success of that team.
How to find the right candidate for the job
What follows is by no means exhaustive, but are just some of the things you could do that we know are good ways to learn about a candidate’s ability to learn, as well as their communication skills.
Code pairing is not only an easy, low-pressure way to check a candidate’s technical skills, it gives you a chance to see how a candidate tries to learn on the job and a glimpse into what they’re like to work with.
In a Swift development space, this could, for example, involve setting up a really basic app for iOS. You allow the candidate to use whatever tools they normally would to build an app and work through the steps to set it up.
But what you want to focus on as an interviewer is how they talk to you. Are they able to talk through code problems with you? Do they take suggestions or guidance well from you? How well do they iterate on their code in response to feedback? As a bonus, a challenge like this can be modified for a candidate’s experience level: you can set the bar for clearer communication, and cleaner code, for more senior developers.
Clean up your job descriptions
There often seems to be a disconnect between Human Resources, who write the job description, and the person who actually interviews developer candidates. This is most evident when you see job descriptions that ask for long lists of qualifications that are, at best, tangentially related to how apps and software are made.
Especially given the recent employment climate, all job descriptions like this do is scare away good candidates because they both make people feel unqualified, but also communicate that you don’t really know what you’re doing in hiring for the position.
Focus on communication skills
There are many problems that arise in software development when you don’t select hires for their communication ability. It can’t be understated how much successful development relies on professionals being good at talking to each other, with management and with product ownership. As a manager you probably experience this where members of your team can’t talk to each other effectively, saddling you with the task of mediating between them. That’s hard to work with, right?
So how can you figure that out during interviews? You can ask them questions that are relevant to the day-to-day life at your company: tell them what routine is like and see how they react. If the team is expected to have lots of meetings, you might as well be clear about that, instead of hiring someone who can’t stand meetings.
This also relates to making your hiring process diverse and inclusive: if you can’t be honest and transparent with candidates about how work happens and how the company is managed, you may have a problem. If you can’t do this without feeling the compulsion to make excuses or downplay things, especially in front of candidates who are underrepresented in the organization, it may be time to take a hard look in the mirror and make changes before you even start hiring.
This also goes the other way as well: be wary of any prospective candidate, or even a recent hire, that struggles or avoids talking to others that are different from them: be that a coworker in a different technical discipline, someone in a higher or lower position of authority than them, or a team member of a different gender, ethnicity or cultural background.
An easy, low-stress tactic for ensuring someone can talk with everyone in your organization is to invite them for lunch. Observe them having casual conversations with the people they could be working with. At the same time, let the team know you want them to feel comfortable, and avoid having it feel like an awkward attempt at networking.
On hiring iOS and Swift developers
While the above can be applied to hiring for almost any software development team (and even teams that have nothing to do with software), there are a few things to note specifically when hiring in the iOS, Swift, and Apple space generally. The state of the Apple ecosystem is currently changing very rapidly: in the last few years, we’ve seen a lot of big changes in the frameworks we use and even the way we think about how we code. This really underlines the need to hire people who are good at learning new stuff really quickly.
There are rapidly growing market segments with peripheral devices. The Apple Watch is already coming into its own Meanwhile, there are lots of brand-new features released each year on the established platforms of iOS, macOS, and iPad. And very little of this development can be planned for – we usually only get a few months to find out what Apple is putting into its latest release.
At the same time, it’s important to recognize that no one can know everything, especially in Swift development. It should not be a failure or weakness if a developer needs to Google or use Stack Overflow to figure things how. In fact, you will probably be hard-pressed to find a good developer that doesn’t do this – they are often where coding professionals come to share their ideas, learn from others, and contribute to their professional community. Along with forums, social media, and Github, online spaces like these are a cornerstone of professional development, especially for newer programmers and developers.
If you choose to do code pairing with an iOS developer candidate, it is perfectly acceptable to tell them what to expect at the start of the interview: walk them through everything that will happen during the interview, including when and how the code pairing will take place. By doing this, you not only reduce the stress of everyone involved, but you give the candidate an opportunity to mentally prepare, which means better quality work, and potentially a shorter interview, reducing your time cost.