Since I’m starting iPhone development, and will be discussing it here, it seems appropriate to talk about why I chose the platform. It’s not perfect, but it’s got some features which make it compelling to me as a developer and entrepreneur. Here’s a quick overview of the good and bad points of the platform, as I see them.
UI
I’m really looking forward to getting back to a platform with actual UI libraries. I don’t believe I’ve mentioned it before, but I find web design to be an unpleasant experience.
HTML isn’t designed to let you do the sort of pixel-perfect layout one wants to do when building an application’s user interface. This isn’t necessarily a flaw in HTML; it was designed for document markup and presentation, and in that application it’s not desirable for the document author to have to worry about (or have control over) the exact final appearance of the rendered image. Application interfaces aren’t really documents, however, and I’ve never enjoyed trying to express the one thing as the other. There are a large number of hacks (e.g. absolute positioning) that one can use as a pseudo-UI API, but they’re inconsistently implemented and feature incomplete.
Bring on the API, I say.
Form Factor
The iPhone is sort of a special platform. It’s a mobile device. It’s got GPS. It’s got an accelerometer. It’s got 3D. It’s got a camera. It’s networked. It’s new. I bet there are a lot of things that you can do with with such a device that weren’t possible, or as compelling, on other platforms.
The fact that such devices are novel means that there’s a lot of ground to explore, and (hopefully) a lot of useful and profitable applications to be discovered. Other devices will combine the iPhone’s features eventually, but for now the iPhone is the dominant such device, so it’s the one to develop for.
Objective-C
On the downside, the native language of iPhone development is Objective-C, with which I’m unfamiliar. More significantly, my taste in languages run towards the dynamic, duck-typed …. hell, I like Python. I’ve worked with a bunch of others, however, so I figure learning and using Objective-C can’t be that bad.
Closed
The iPhone is a completely closed platform, and Apple rules it with an iron fist. These facts upset those who are passionate about open source, and, frankly, I’m not wild about them either. On the other hand, I started out in the video game business, and Apple seem like sweethearts compared to some of the console manufacturers. It’s an imperfect world, and the upsides of the platform (for me) outweigh its politics.
Money
I need to make a living. Perhaps unwisely, I’ve chosen this moment to strike out on my own, having resigned my main gig last Thursday. Money is much on my mind, therefore, and I think there are two factors which make it a little easier to earn a living in the iPhone ecosystem than in either the desktop or web application arenas:
- Psychology: People expect to spend money when adding stuff to their phone. It’s customary to pay for data plans, additional services, ringtones, and, with iTunes, music, video, and apps. On the web, people are conditioned to look for the free service.
- Trust: The iTunes store is pretty much the only way to get stuff onto your iPhone. This has its downsides (covered above) but two major upsides: First, people aren’t going to be afraid to install your application. This fear is a major problem for anyone selling desktop software over the web; you’ve got to be pretty reckless to download and install executable code from Some Random Website. Second, people have already provided their credit card information, etc. to iTunes. This makes it much easier to close the sale; once someone decides to buy your app they can simply do so, without finding their credit card, entering their information, and wondering whether or not you’re a thief.
I think this will be fun.