Since creating my first iPhone/iPad app, Reading Remedies, the question I’ve been asked most frequently by friends, family, blog-readers, and strangers on the street has been, “How do you create an iPhone app?” I am no expert on the subject but I’m happy to provide information on my experience and how I did it. It’s not that hard, so keep reading. This is an article for non-programmers. You won’t find any coding in this post but I will give you some resources to go further into learning Objective-C if you wish.
What I will focus on is:
- How to hire a programmer to do all the work for you (as I did with Fluency Timer for the Mac App Store).
Hiring a Programmer
The impetus for me beginning to create apps was the creation of the Mac App Store. Once the store was announced and months before it opened I set up a profile on Elance.com, a site that bills itself as “The World’s Leading Site for Online Work.” Many of the people who bid on jobs are from other countries. If that bothers you, you can request only American bids but you can expect to pay more.
On Elance, I posted information on the job requirements and then waited for bids. None of the bids came in at less than $500 and had I been creating for the iPhone/iPad I believe the cost would have been several hundred dollars more based on market demand. Remember, mine was a relatively simple app, providing a one-minute countdown timer while simultaneously recording a students’ voice for purposes of fluency testing and practice. More complicated apps would naturally cost more.
I received about 10-12 bids on the job within a week. Many of the questions asked by programmers showed me that they clearly misunderstood what I was asking for. It was easy to eliminate those bids. I had two proposals that I kept going back to because they seemed to “get it.” They knew what I wanted and although they asked questions, their questions were related to what I had in mind.
I chose a programmer and sent him a detailed proposal on what the app should look like, including a mockup of the user interface, and detailed descriptions of what the app should do. I would strongly recommend doing this even though it was very time consuming. The mockup and detailed description are just about all the programmer has to go by. You communicate by posting messages in a meeting room and since you don’t see the person it would be very easy for the two of you to have different ideas about what you’re talking about without such a document.
In terms of payment, you put total amount in an escrow account until the final software is received and it is satisfactory. There are built in protections including optional mediation (which would cost $100) in the event that you do not receive a satisfactory product and can’t come to an agreement with your provider. Once you release money you cannot get it back, however, and so you are advised by Elance not to release funds until job milestones are completed. This is all fine and well but most of the programmers (and most of the programmers who have any kind of reputation established) require some of the money to be released up front in order to start work. It’s a risk you have to take if you choose to use this service.
I had both a bad experience and a good experience using Elance. The first programmer delivered me a one minute timer that recorded 58 seconds instead of 60 seconds…the one thing I needed my app to do, it wasn’t doing reliably. We went back and forth several times with me insisting that he fix the problem and him resorting to name calling and pettiness when I didn’t release the money from escrow before the problem was fixed. He did fix the recording length problem but in so doing broke another piece of the software. I didn’t notice the new problem until a couple days later and at that point he stopped responding to me queries. I cut my losses and hired a second programmer, my second choice from the initial bids.
Programmer #2 charged me a far smaller sum to fix the problems of Programmer #1 since I already had the basic code. In retrospect, I should’ve gone with Programmer #2 at first. Programmer #2 had several more jobs listed under his profile. Both programmers were highly rated but the additional job experience of Programmer #2 meant that he was far more professional, delivering the software early so I had a chance to try it out before the deadline, rather than waiting until the absolute last minute so that I would be pressured to release the money. He was respectful and polite.
I left feedback for each of the programmers. The negative feedback for the first programmer led him to go ballistic and the positive feedback for the second programmer led him to raise his prices on a second job I offered him. I believe most experiences on Elance end well based on my own experience and that of my friend but there is a certain amount of risk that comes with the Ebay-like process of getting the work done and there are some nightmare stores out there if you google them.
My tips, if you go this route…I would strongly recommend planning out and thinking through your app and all of its functionality and spelling all of that out ahead of time. Any new features you add once the project starts will incur additional cost even if they don’t really require much additional work. Something that’s obvious to you may not be obvious to your programmer. The first programmer gave me a non-functioning search box and then told me that I never told him the search box had to work!
I would use Elance again when I’m ready but the process made me very nervous, particularly after the first programmer went crazy. It wasn’t an experience that I want to soon repeat. Also, with the small amount of money you’re likely to make from educational apps, it takes a lot longer to turn a profit when you have to pay a programmer and there’s a risk of not making a profit at all. So, I set about trying to find a way to create my own iPhone app.
I bought a few books and checked out a few podcasts on the subject of programming natively for iOS using Objective-C and tried unsuccessfully to encourage every college-age person I know to change their major to computer programming. I haven’t given up yet but right now the learning curve for me is too steep. If the ideal teaching is i+1 (one level up from what you already know), learning Objective-C is more like i+20 for me. However, I discovered several alternative methods of programming.
I looked into programming via Flash (which I know a little bit of) but it would require an update to my Adobe suite to get Adobe Packager and even though such programming is currently allowed in iTunes, it’s slower than native apps even by Adobe’s own admission.
Let me back-up one step. To develop apps for iPhone/iPad you need to register as an Apple Developer and download their Software Development Kit and Xcode software. All this is free to download but you have to pay in $99 a year in order to distribute your apps to your own iPhone or to the world. It also provides limited access to technical support.
This was the hardest part of the process for me, both technically and psychologically. You have to code-sign your apps which means adding a certificate that indicates the app is unique to you so that users can receive updates and the app is authenticated on devices. The process of code-signing is not hard but I had trouble both times. It was completely unfamiliar and even though the steps on Apple’s web site were simple, something wasn’t working quite right. Searching the developer forums indicates that others have had a hard time as well. I eventually figured it out and now that I’ve done it once I could do it again more easily.
Then comes the waiting. My apps each took about a week for approval. That’s a pretty quick turnaround time but it felt like forever each time. Apple’s approval process is notorious but most apps are approved successfully and mine were approved without a hitch.
John Tran at Moms with Apps has already written a great piece on how to market your app that’s a great read once you’re ready for that step of the process. I won’t repeat what he said except to say that you should expect that creating your app is only half of the work. If you want people to discover and download it you will need a strategy for getting the word out.
Further Resources for Learning Objective-C
I am not giving up on learning how to program without using an intermediary step like PhoneGap. Stanford University offers a free video podcast via iTunes University which is like attending a college course for free. I’ve watched some of it and it’s well presented but it’s still Greek to me. I’m not quite ready for it.
There are also several programming books you can purchase. I’ve tried Sams Teach Yourself iPad Application Development in 24 Hours and it helped somewhat but some of the code was outdated and I wasn’t able to get all of it to work.
Please leave your questions below. I’m happy to continue the conversation or offer any support I can.
Update: Also see Flow Chart of Process