What I have learned so far about being an iPhone developer

I have been a part time iPhone developer now for just over two years. I was thinking the other day about what I have learned in the past two years.

When I started I hadn’t written any major pieces of code since leaving a large multinational and started training as a teacher of 11-18 year olds. After five years of the classroom I wanted to return to software development. Needing to get my head back into coding I required a project. Being a recent Apple convert and iPod Touch owner convinced me that writing iPhone apps looked like fun.

I haven’t made much money – so far! However I have learnt a huge amount, not so much about writing software but about all of the other stuff needed to be an independent software developer.

So in bullet point form here is a quick overview of what I’ve discovered:

Coding:

  • Objective-C is easy to learn if you know C and some other object-oriented language
  • Beta versions of Xcode sometimes crash – not so much anymore but certainly in the early days
  • Start using version control from day 1
  • Don’t use the Xcode snapshot feature – use a proper version control system. When your snapshot disk image goes wrong fixing it is really difficult
  • git is better than SVN, especially when it comes to Interface Builder files – don’t worry about Xcode integration just use the command line and gitx
  • Coding apps is relatively easy, but that doesn’t mean the whole process isn’t challenging

Testing:

  • Testing, testing, testing. It’s not always the code which has bugs in it. The first couple of versions of Go Calc had some very elementary errors in the built in unit conversion calculations – such as mis-converting celsius and fahrenheit. Having the review section filled with complaints is not a good way to start
  • It is worth investigating early on how unit tests work in Xcode
  • Some users are forgiving of problems in first releases, others are not
  • Find yourself some enthusiastic users and send them regular beta releases

Communication:

  • Communication with users, and potential users, is key. A good forum can often be better than really detailed information on a website which people can’t be bothered to read
  • Can you describe what your app does and why someone would want to use it? A cool idea which is hard to explain will be difficult to market. For my next app I have already written the App Store description even though I haven’t yet finished designing yet – let alone started coding
  • Don’t make a complicated website – maintaining it will take too much time. My website started being written by hand in HTML. The second iteration used RapidWeaver, and has taken much less time to maintain. However my site is still to complex and needs to be pruned. Some of the top selling apps have a single page explaining an app – I have 12 pages just for Trunk Notes

Marketing:

  • Press Releases are vital. I have only just started issuing press releases and am kicking myself for not doing this from the off. What prompted my first press release was seeing a press release from the creators of MyWiki – a rival personal wiki. A couple of weeks after their press release they appeared on the front page of the App Store. After my first press release, Trunk Notes appeared in the U.S. “What’s Hot” section and sales increased 1000% – for a while anyway!
  • Adwords are tricky beasts. I haven’t had much luck so far. Part of the problem is that you can’t use the word iPhone in the text of advert!
  • Do spend time courting the review sites. My personal feeling though is that you shouldn’t be paying for reviews, a promo code should be sufficient if your app is good enough. I need to spend more time on this…
  • There should be more bullet points here. I haven’t done a very thorough job marketing my apps. Something to work on…

Legal:

  • Getting an Employer Identification Number is easy, even for a UK developer acting as a sole trader (sole proprietorship for US readers) – just phone up the IRS
  • Your app name. Go Calc was originally called Go Figure. Sometime after it being in the App Store I had an email from the Apple legal department and the company who were accusing me of infringing their trademark. I don’t know whether or not I was but I changed my apps name anyway. Not that I recommend giving in so easily necessarily. However if I had contested it my app would likely have been removed from the App Store whilst I sorted it out with the accusing company. Be prepared for this kind of thing. As an aside there is now another app called Go Figure – and not by the company who complained to me
  • Read before doing. I recently added support for encrypted wiki entries to Trunk Notes. I did this before spending a couple of minutes researching the impact of adding encryption to an app. I’d seen the questions about encryption when submitting updates but hadn’t paid them much attention. It turns out you need to get approval from the U.S. Government before Apple will even review an app containing encryption – and this includes encryption which is part of the standard iPhone libraries. So, the lesson is do your research first. I now have to fill out lots of forms and then wait 40 days before re-enabling encryption in Trunk.

Oh, and lastly don’t expect to make huge amounts of money. At least not if you are creating productivity apps with a learning curve and a non mass market target audience. Money has never been my reason for being an iPhone developer. Far more important has been the feeling I get when I see a good review, or get contacted by a customer telling me everything they love about my app – usually followed by a few suggestions!