Interviewing prospective developers
Most of us had to sit through at least one job interview to find employment, so you’re familiar with the drill. It’s a good idea to interview each candidate at least once. You’re not so much interested in discovering where they “see themselves in five years,” but rather what your project will cost, how long it will take, and most importantly, if they have what it takes to do the job.
It goes without saying that plenty of candidates will exaggerate qualifications that are vaguely accurate and sometimes impossible to verify. Pay attention to what they say directly and personally to you, instead of relying on long bulleted lists or copy-and-paste responses. If your first correspondence isn’t so hot, the next ones will probably never make up for it. Just move on quickly if you sense the relationship won’t work out, but if your gut tells you there might be a match, set up an interview to move things forward.
It’s not the most loving gesture to ask for a signed NDA from your candidates before sitting down with them for a discuss your project, but make sure you do it before sharing any more details, especially the detailed design specification. (You will learn how to create this spec later in this chapter.) It’s a tedious legality, but nothing is more infuriating than having your work stolen. If developers refuse to sign, scratch them from the list and move on, plain and simple.
Buying local isn’t just a campaign to boost your town’s economy; it can also boost your confidence in a candidate because you can meet in person at least a couple of times. But if schedules make that impossible or candidates live too far away, set up a Skype conversation for the interview. Even if you happen to discover a developer through a friend who only speaks highly of him, you need at least one conversation to find out if you get along.
If words like class and subclass sound like slang terms for who’s hip or not, try inviting a “techie” friend who is familiar with software development to join you. Even if your friend doesn’t know iOS programming, she will be able to sniff out dubious programmers quickly.
Questions to ask
Your shortlist of candidates might include independent freelancers as well as agencies that offer a team of developers. If you’re considering an agency, your initial correspondence most likely will be with a salesperson, but when it comes to the interview, you want to talk to the developer who will be creating your app, not a sales rep. If a shop won’t let you talk to the developer, scratch that shop from the list. The sales rep can join you on the call, but you want to talk to the person actually building the app.
Planning the call will give you an idea of whether your hours overlap and if it’s a convenient time for you. If it’s at 4 a.m., be prepared to drag yourself out of bed and be available at that time during your project. This call also gives you a chance to hear how well the developer speaks your native language. You’re not looking for a great personality, but you should verify that language barriers aren’t going to cause communication problems and delays during your project.
You can ask some of the following questions in your email correspondence, and then go through them again in your interview to verify whether the answers are consistent.
Remember that iPhone apps have been around only since 2008, so anyone who claims to have been creating them longer than that is fibbing.
- What is the developer’s history developing in Objective C? How long has he been creating iOS apps? What were his biggest learning curves? What was the hardest feature he developed? What other developer languages does he know?
- How frequently will he send builds to test on your device? After the initial framework of the app is programmed, you want weekly or bi-weekly builds made available to you to evaluate the user interface, start testing, and track bugs. We get into testing and bug tracking later in this chapter.
- What support does he offer? Will the developer help you install the app for testing? Will he help you submit it to iTunes? When the app is complete, how will he follow up on any bugs that are later found? Will there be a cost? If so, how much? The developer should offer to fix any bugs found even after your app goes live.
- What is his experience working with any specific technologies in your app? If you are creating a game, ask him about his experience developing other game apps. If the app has a special feature, such as in-app purchases, see whether he has worked with it before.
- What other platforms has he worked on? Does he have experience creating websites? desktop applications? other mobile platforms? This will give you an indication of how seasoned of a programmer he is and whether he put in the time as a developer to see projects through to the finish.
- Does he work with an in-house artist? Some shops just go ahead and create any missing design elements themselves, and developers seldom know enough about design tools to do this correctly. You can later fix any design elements created, but sometimes the developer plows down a path pretty far before you’re made aware of the design work the shop created, and fixing it almost can’t be undone.
- Has he attended WWDC? This is the developer conference sponsored by Apple. It sells out in minutes after tickets go on sale and is incredibly expensive, so it’s an added bonus to you if your developer did attend.
- What devices does he own? He doesn’t need to own all the latest gear from Apple, but you want to make sure he’s developing on the products that are going to be used by the majority of your market.
If you really want to drill developers, you can go through this next section of technical questions. You might not have a clue what they’re talking about and that’s okay. If the candidate doesn’t understand these questions either, he’s probably about as capable as coding your app as you are. Again, having a code-savvy friend join the interview can be helpful.
* What is XCode? Explain its debugging tools.
* How do you use Interface Builder?
* Talk me through submitting apps to the App Store and everything that is involved (certificates, App IDs, and so on).
* Tell me about Objective-C and using properties.
* Tell me about Objective-C and using delegates.
* What do you know about networking with ASIHttpRequest, AsyncSockets, GameKit, and Bonjour?
* Explain subclassing to me.
* What do you know about CoreAnimation and CoreData?
* Can you list all the usual interfaces on iOS like UITableView?
* Tell me everything you know about memory management. (Someone good at memory management is usually good at everything iPhone, so if you ask just one question, pick this one!)