Buying a new iPhone is a much more exciting experience for an iPhone app developer than it is for a typical iPhone user.
Yesterday, after waiting in line for an hour so, I scampered out of the Apple Store with my head down, furiously tapping my way around the screen of my new iPhone 3G S, not really watching where I was going. With each buttery smooth flick of my finger, I felt lighter and lighter. Two years of anxiety melted away as the realization set in: I get to code for a real computer now, not a cell phone.
Let's face it - until now, the iPhone had been a big tease. It was hard to believe that this was a serious computing device when it could not perform even the most basic tasks without constantly stuttering and freezing. As an iPhone developer who cares deeply about user experience, this caused me a lot of grief. I have worked very hard to make my app perform smoothly, but there just wasn't enough power and memory on the device. In particular, loading, unloading, and displaying of images and data tended to lock up the device quite often. My only consolation was that Apple's own apps were no better than mine - Maps, Mail, Photos, and Safari were all prone to being painfully slow.
When I say "slow," I am not talking about launch times or load times. It's nice when an app launches fast, but what really matters is that it is responsive. When I move my finger on the screen, I expect the UI to respond to each fine-grained motion immediately. That is what creates the illusion that you are interacting with physical objects, and not a computer. Having spent two years of chasing that dream, I had begun to wonder if Apple was ever going to make it possible.
After playing with the built-in apps for a few minutes, I was thrilled by the speed of the 3G S, but the real moment came when I installed the new Facebook app (still in development) onto the device. I am, of course, acutely aware of every speed bump in the app -- every table that didn't scroll fluidly enough, every animation that dropped frames, and every place the app would freeze while loading images. On the iPhone 3G S, every single one of these pain points are healed. Fast, smooth, and perfect every time. I have yet to see the app freeze once. I have yet to see a table that showed any hesitation to scroll. I have yet to see a single frame dropped. If my apps ever give my users any friction ever again, I will have no one to blame but myself. Apple has done their job masterfully and the iPhone 3G S now has every right to call itself a computer.
Of course, it will be quite a while before the majority of iPhone users have a 3G S or better, so I'm not free to stop worrying about performance just yet. However, what matters is that I can now feel good about the future. The next time I am wrestling with a performance issue on the iPhone 3G or earlier, I won't fret that it is my Sisyphusian fate as a mobile developer to struggle to achieve good performance. It is now just a matter of time.