When companies look to hire a developer to write software, in particular iOS (iPhone and iPad), they expect to hire an expert. However these days everyone and his dog claims to be able write iPhone and iPad software. While this may be true, it is nearly impossible to know if you’re getting a good product. Apps may have great visual design, but in some cases it is just a pretty face. So how do you pick a developer that is going to produce a quality product that is stable, maintainable, and works well. Many projects get passed from developer to developer, so having good quality code to begin with, the app will have a higher change that it can continue without being completely rewritten.
I’ve written software as a contractor for many years and like to think that I know what I’m doing, so here are some tips and questions to ask that may help companies hire a quality developer.
- Does the developer rely heavily on open source? Open source itself isn’t inherently a problem, but should be used sparingly for specific purposes and should be easily removed at a later time if need be. Building an entire application on an open source framework makes things needlessly complicated and fragile.
- How long has the developer been writing Objective-C software (Mac or iOS)? Experience says a lot about how easily the code can be maintained in the future.
- What do the applications that the developer has developed look like? Take a look at the App Store and see how complicated the apps are and how well they work?
- Ask for references. Ask why the developer is no longer doing work for the references. There are a number of ways to say “we got fired”, so be on the lookout for those. If the app is no longer being developed, the company ran out of money, or the developer no longer has time are probably the best reasons; anything else might be suspect.
- Does the developer use source control? This is a pretty basic requirement. If a developer doesn’t use source control for his/her own projects, that would worry me. There are many sites that offer free or cheap source control, so there is no excuse for avoiding it.
- Does the developer use code analysis tools such as CLANG? It’s built into Xcode and there is no excuse for avoiding it.
- Does the developer allow warnings when building the project? Compiler warnings should be avoided at all costs.
- Can the developer provide code samples for review? In particular, an app that can be built using the Apple Developer Tools. This is important as some developers have a huge list of tasks to get a project built. A project should be delivered such that you can unzip the archive and build the project. I’ve seen projects delivered that have a list of steps to build including checking out code from open source repositories. This is extremely problematic and error prone as the repositories could change by the time the app is delivered.
- Ask the developer what is the right way to determine if a feature is available on a particular device. Today I saw code that checked the OS version to determine if Retina display graphics should be used. This is completely wrong because for example, iOS 4 runs on devices that don’t have Retina displays. (Also the code that checked the OS version didn’t properly check the version.) Apple has identified ways to determine if a particular function should be used or a feature is available.
These questions are probably hard for non-developers to ask and know if the answers are legit, so it might be worth spending a few bucks to find an expert, such as me, that can spare a few hours to evaluate a developer, but doesn’t have time to actually do the project.
“Does the developer rely heavily on open source? Open source itself isn’t inherently a problem, but should be used sparingly for specific purposes and should be easily removed at a later time if need be. Building an entire application on an open source framework makes things needlessly complicated and fragile.”
Are you referring strictly to iOS open source frameworks?
Hi David,
I’m mostly referring to iOS/mac open source frameworks, but this can be applied generally. Basically, the use of open source should be compartmentalized such that one piece can easily be replaced at a later time with something else. For instance, if there is open source to display a Cover Flow view, it should be done in such a way that it can be replaced with another implementation later (there are a number of Cover Flow implementations out there). If all the views are based on a hierarchy of open source, unraveling it can be quite complicated.
It depends what you want to implement.
If you are searching for games dev, than using standard views can’t be recommended as best approach.
I would prefer expert in: opengl & some open source framework like cocos2d, box2d, sio2 than regular views master.
If you are using for example cocos2d then there is no way to switch to standard views easily and it’s not needed.
Game development is a whole different ball game. However, developers should be able to understand the basics before getting into game development. Some things like using system services and networking are the same regardless of how the views are implemented.
Hey Scott,
Thanks for writing the article. I am building a startup centered around development of iOS Apps. I have been an exec for the past 10 years in the mobile space working for a fortune 20. However, I have basic programming experience. I have the “how to” evaluate an employee down. Just need so help with the “Where to find”.
Short of starting with friends, where do you recommend searching for iOS developers to evaluate?
Thanks for your time,
Bobby
Hi Bobby,
If you can, definitely start with friends for recommendations. You might also contact Apple Developer relations for recommendations. I’m not sure if they still do it, but in the past they’ve steered work to various developers. If that fails, you could try searching on LinkedIn and then check references when you line up developers.
Good luck!
Hi Scott,
Nice post. Just wandering, if your looking for an iOS Developer and they say they have experience in Cocoa.. is that alright? Because Cocoa is based on Objective-C and is the main computer language which is used when making iOS Apps. Am I right?
(Note: I am excluding iOS Game development).
Dan
Cocoa is the framework used on the Mac; Cocoa Touch is used in iOS. So, having Cocoa experience is a really good thing to have. However, if they don’t explicitly saying iOS experience, that would raise a red flag to me if you are looking for an iOS developer.
Do you know of any good programmer that i can hire for ios development?? Having problems finding one.. Its for a simple app
thanks for all
Unfortunately I don’t know of any developers that have spare cycles for an app. While you may consider an app simple, there really is no such thing. Apps require design and implementation that typically can’t be done overnight.
Hey Scott,
Nice article thank you, I am coming at this from a developers point of view. I have been studying obj-c and the IOS SDK full time for the last 6 months or so. I recently had my first ios app approved by Apple with no problems. I would like to develop apps for clients at some stage in the future if I have the time. I would in no way want to be considered or thought of as a cowboy developer. If I was to go down this road do you have any advice or suggestions?? Any feedback would be much appreciated.
Rob
Hi Rob,
I like to see developers with 3+ years of Objective-C experience which basically means they did Mac development prior to iOS development. This isn’t to say that some developers who just started iOS development in the last few years are bad, it is a decent gauge when there is nothing else to use to judge the skills. One way to start is to offer your services for a reduced rate to get more experience under your belt. I also wouldn’t try to take on very difficult projects as it is very easy to get in way over your head quickly. In addition, if you can team up with a more experienced developer, that could be a good move as you could get tips on your code and learn some best practices.
Good luck and welcome to the world of iOS development!
The iOS platform’s growth has grown at a pace that makes it unlikely that you will find many “available and looking for work” developers with 3+ years in Obj C. Especially if they were on board with Cocoa Touch at an early stage. The majority of your qualified talent pool right now probably transitioned over from another platform in the last 3 years don’t you think?
If I have my choice, I’ll take developers that have been doing Mac development for ages which would give them more than 3 years of Objective-C. There are a number of good developers with this background; I realize that this limits the pool of candidates and sometimes eliminates very good developers, but I find using this makes it easier to screen developers.
Hi Scott,
Very cute kid and dog. I have several ideas for apps but only extremely rudimentary experience with code. I am having trouble finding a developer. I am wondering if it is possible to use an existing database such as Bento or Filemaker as a basis for a commercial app that includes text data, pictures and video. I talked to someone at Bento and got a negative but I am not sure he really understood what I wanted
Hi Maria,
I definitely wouldn’t consider a database as a basis for any kind of app. The app could be based on the data, but the key, in my opinion, to quality applications is a good design. You could possibly use a database to test out your idea and move forward finding a developer if the idea pans out.
Good luck!
Hi Maria. Generally, databases such as Filemaker offer limited scriptability on the iPhone. Apple have very strict rules about being able to “download interpreted code” that tend to make it impossible for such products to produce native apps in the same way they work on the desktop version.
I suggest you have a look at LiveCode (http://www.runrev.com/) which is based on the same idiom and language as Apple’s Hypercard and recently won a Jolt Productivity Award (a very big deal) as a coding tool. http://drdobbs.com/joltawards/232301291?pgno=4
Great Post Scott.
I followed your recommendations and found a lot of developers have around 1-2 years experience. My favorite tip was the idea of downloading the developers apps and using them yourself. This is a great way to see what kind of product the developer will produce for you. References were good, but I also found linkedin.com to be a great source of truth on an individual. Overall, this is an excellent framework for finding reliable iOS/Mac Developers. Without it, I would have never found my current development team, Bixby Apps – http://www.bixbyapps.com.
Thanks,
Chris
Hi Scott,
Great article and extremely interesting.
Could u please let me know what you charge to interview a potential programmer that I have found for an IOS project.
Kind Regards
Stuart
And what suddenly makes you an expert in evaluating other developers ?
Hi Thun,
That is an excellent question! In the course of my career, I’ve had to evaluate contractors time and time again, so I have experience doing this. While I haven’t been writing software as long as some of my colleagues, I’ve been writing software professionally for just about 20 years.
People can choose to use my advice and recommendations or not; it doesn’t hurt my feelings either way.
Weird that you say open source means needlessly complicated and fragile. In my experience it tends to mean the opposite …
It really depends on the open source software. Just because it is open source doesn’t mean it is good nor that it is bad. I’ve seen a lot of both. In one particular case (probably the one I was referring to), it was a tangled mess that made it hard to use a particular piece.
Absolutely – it totally depends on the project. There’s some total messes out there, but I’m very grateful for the open source code that runs Apache, Rails and so on. It’s a bigger question to ask on average about the quality of open source versus not open source. Some analysis appears to suggest it is similar:
http://www.dmst.aueb.gr/dds/pubs/conf/2008-ICSE-4kernel/html/Spi08b.html
but people are coming away from your blog thinking that open source implies low quality:
http://allisonunzipped.blogspot.co.uk/2013/03/how-to-get-hired-as-ios-developer.html
which seems a shame given there is a lot of high quality open source code out there, and it has the huge advantage of being … open source … 🙂
Some people are likely misinterpreting my stance on open source. I love open source and use it in various projects. I just re-read my article and I don’t ding open source, but do say that building on an open source framework makes things complicated. In particular, I’m referring to a popular iOS framework where it is hard to just use a piece and you have to build a lot of your application on top of the framework. Adding this layer makes it harder for another developer to come in and examine the code without knowing all of the ins and outs of the framework. (The framework is another layer on top of the existing iOS frameworks and while it does have some utility, it attempts to replace many of the built in methods with its own.)
I look at various controls on Cocoa Controls all the time and the nice thing about most of what is linked there is that you can pick and choose what you want to use. This also means you can swap out components later if you find something better.
I’ve been in situations where interviewers have asked questions expecting an exact answer and if I didn’t have it, then the OBVIOUSLY I don’t know how to program for iOS.
Then I’ve had interviews where they ask a few questions, have a chat about my craft, then at the end make me do a technical interview that has a well-prepared test question (in that it can be solved in a variety of different ways), and from those DELIVERABLES the candidate shows what he/she is actually capable of. These are the people who get the good candidates. Not the people playing so-called Bullsh*t Bingo. 🙂
The only hitch there is that it takes an iOS developer to hire an iOS developer. But all this theoretical heresay can be eliminated if you give a person you get along with a technical test and let that sample of their work speak for itself.
I’ve also written a post on the topic.