This is the first of two posts on creating my first app Should iRun.
As a developer with a heavy interest in technology i’ve been interested in writing an application for iOS for a number of years. Many of the websites, podcasts and people I follow on the twitter are mobile application developers. Two or three years ago i’d started doing Standford course CS193p from home and completed the assignments to learn objective-C and the iOS SDK. But alas without any particular application idea in mind that is about where it finished.
Since moving to Perth i’ve spend most of my time traveling by train or bike. Without getting into the detail of Perth’s public transport problems, one particular downside which often affects me is that the trains only run every 30mins after 7pm. My 4km journey from the city to my apartment turns from a 7 minute journey to a 37 minute journey. Often when out and about I would leave the comfort of the place I was at to catch the train, only to arrive at the station just as my train was leaving and wait in the station for 30mins. In order to avoid this problem, I searched for a website or iOS application to provide me information about the timetables. None really fit my needs, they were slow to navigate and not suitable for my need to quickly check this information on the go.
And so my first real iOS application idea was born. I wanted an application which would use my current location, lookup the timetable information and show me immediately the next trains at the nearest stations, allowing me to work out if I should go for the train….or buy another beer! :)
Learning the ropes
As I mentioned earlier, i’d dabbled with iOS development with CS193p and when I started work on my app idea, I returned to the new version of course to get up to speed – the iOS SDK and Objective-C has been developing pretty rapidly in the years since i’d last done the course and I found the assignment based activities a good way to get myself familiar with various new frameworks and techniques. After feeling confident enough to get started, I opened a new Xcode project and started going out on my own!
Apple provide really excellent technical documentation, code samples (which I probably don’t rate as highly) and videos of presentations. The videos of WWDC are really stand out resources. I would recomend that any software developer should watch some of the more generic talks on networking, power management and Internationalisation. In fact with the Internationalisation presentation I remember watching it and feeling frustrated that I couldn’t use that every time I want to explain to a Moodle developer the various traps they’ve fallen into in their code!
Perhaps its because i’m a novice to iOS SDK, but I also got a ridiculous amount of knowledge from stackoverflow, I don’t tend to need to use it as much in day to day work, but as a programmer its surely becoming one of the most important resources on the web.
Developing the app
I’ll discuss the technical nitty gritty of creating the app in my next post, but creating a mobile application is quite different to what i’m normally doing and it was an interesting experience to go through.
- I got the basics of the app working in very little time at all, but I spent by far the majority of my time optimising the performance and responsiveness of the app. Its probably obvious to anyone who has done any work in this field, but to a newcomer, its surprising the amount of work which goes into making things feel as responsive as is commonplace in iOS.
- I (almost) surprised myself in the amount of time, convinction and thought I put into the design of the app. I don’t mean design in the purely visual sense, but as Steve Jobs put it ‘Design is how it works’. Having a small, touch-based canvas with common paradigms and a simple task really helped me focus on how I wanted things to work. I say I surprised myself, because I don’t think I tend to have such strong convictions of how something should work when I have a whole desktop-sized webpage.
- [Lack-of] Graphic design was certainly a barrier. I’m using the standard iOS controls univerally and I bought some standard icons for use in the app. But there were frequent times when I thought of how i’d like something to be, but couldn’t make it work graphically. My first version of an icon for the app was shockingly bad, thankfully I managed to find a photoshop template which helped me make something which at least doesn’t look too out of place on my iPhone home screen.
Since its not something I ususally do and I was interested to try it. I decided to put a tiny bit of effort into marketing the app. I created a website, twitter account and added facebook ‘open graph’ metadata, sent some mails to local press to see if I could generate some interest. I got no interest at all, and failed completely. :)
Despite generating no interest at all in the app from my (somewhat half-hearted) marketing efforts, this did not mean my app sat unloved in the app store. In fact in the first week iTunes was reporting between 10 and 20 downloads a day, then after a few weeks that increased to 30 – 40, a few weeks later 50 – 60 and today, 3 months after I launched the first version I get between 80 and 90 downloads a day.
I find it really incredible how consistent the volume is, these are unique customers each deciding to download my app relatively independently. Yet there is a very consistent volume of them day by day. Its especially impressive to me as the app sits in such a small niche – its only really relevant to people in Perth, WA. But even with 1 million apps in the store, nearly 100 people find and download my app every day.
Whilst the volume and discoverability that the app store brings is a massive advantage, it is really surprising as an app developer how little you know about your ‘customers’ from the store. All I see are raw numbers and most of the time i’m left wondering – did they install it and delete it immediately, are they using it at all? What stops them from using it? Fortunately i’ve been lucky enough to get lots of positive reviews recently, which gives me some satisfaction, but its a definite down side to the app store ecosystem.
Recently I added a ‘timetable update’ feature to the app which required a server-side component. An advantage to having this, is that i’m able to find out a little bit more about users of my app. For example, I now know that 300 people launched the app today and checked for timetable updates. Knowing that people use it motivates me to keep working on it.
I’ve really enjoyed dipping my toes in the mobile ecosystem, its clearly a trendy and important place for anyone working in the technology industry. I was satisfied enough when I had managed to make an app which had filled my own needs (in fact, I almost stopped development after it’d done the bare minimum that I required). Now I want another app idea to create!
The press often focuses on the lucrative economic aspect of mobile application development.. so what have I made from this lucrative business? Probably at least a $300 loss… and loosing more by the day! :)
You can find the technical details about the app in my second post.