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).
- How to create an app yourself using only HTML and Javascript (which is how I created Reading Remedies for iOS).
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!
DIY Using HTML and Javascript
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.
Then I found PhoneGap which works with Apple’s Xcode to create native iPhone apps using HTML and Javascript. I’ve been creating HTML pages since the early mid-90’s from scratch so although I am not experienced with creating Javascript, the learning curve for me was much less steep as I was starting with what I already knew.
Reading Remedies, which helps parents and teachers diagnose potential areas of reading difficulty and support beginning readers with assessments and follow-up activities, was the perfect starting point for me since it focuses on content rather than complicated features to work. I recommend the book, Building iPhone Apps with HTML, CSS, and JavaScript: Making App Store Apps Without Objective-C or Cocoa, which helped me by explaining the difference between web pages for the web and web apps intended to for the phone. It also provided sample code to try out.
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.
PhoneGap is a free plug-in for Xcode that allows you to create your apps using HTML and Javascript, copy them to a designated folder and then have PhoneGap due the rest in turning your app into a native iPhone/iPad app. You will likely want to download jQuery and jQTouch which are Javascript libraries that enhance your app for the phone if you go this route. For example, jQTouch provides the animated transitions between pages.
Submission Process
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.
Marketing
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.
Conclusion
It’s very rewarding to create apps based on a vision and then put those apps into use right away in my classroom. Watching to see how many people download the apps and how they fare in the real world is exciting and addictive. I’m working on increasing my Javascript knowledge by enrolling in local community college courses and using Lynda.com’s JavaScript Essential Training and I’ll work my way up up to Objective-C eventually.
Please leave your questions below. I’m happy to continue the conversation or offer any support I can.
Great article Mathew! Good synopsis on getting started with iPhone app publishing…Thanks for the mention!
Matthew,
This is helpful as I feel I may have to hire out someone to create my app. I am wanting to make an app and I am not sure if it is complicated our not.
And how it will be updated as new data becomes available. Unless new data is linked to a site and it can be added without changing the app.
Cheryl
Hi Cheryl,
You can store data on a web page or server. Pros: You don’t have to pay the programmer to make changes. You can make changes instantly instead of waiting for Apple to approve updates to the app. Cons: The app will require a data connection in order to run and may run a little slower.
FANTASTIC article Matthew with TONS of hope for me to continue my goal of building apps for my classroom…I too feel that the learning curve for absorbing the complexities of learning objective C are insurmountable at this point in my life…you’ve renewed the dying embers in me and have given me plenty of fuel to get the fires of creativity blazing again!
bill seng
ADE class of 2011
Very helpful. I’ve been wondering where you can find trustworthy developers. I’m going to check out Elance!
Excellent post. Thank you for submitting it to the Math and Multimedia carnival.
Matthew, thanks for the article. It is a wealth of information.
Great info. I am really interested in this. It seems though, that if you have the “vision” of what you want to create, that’s really the hardest part. The rest will come in time! You’ve inspired me! Thanks! Nicole