So, Brian... what have you been up to lately? Quite a bit, thanks for asking.
On November 17, 2008, I placed an order for Beginning iPhone Development: Exploring the iPhone SDK, by Jeff LaMarche and Dave Mark. I had no way of knowing that just a few days later, I would lose my job as a Mechanical Engineer. In pretty much every way except financially, this has turned out to be one of the best series of events in my life. Rather than moping around about losing my job (did enough of that the last time I lost my job), I threw myself into the book, determined to make myself into an iPhone programmer.
I am not a total beginner, but not too far from it. Roughly two years ago, I attended a programming class at Big Nerd Ranch, one of the best Mac programming instructional organizations in the world. I toyed a bit with Mac programming for a little while after that, but for various reasons didn't keep much momentum. When Apple made it possible for anybody to create programs for the iPhone, I jumped at the chance to dive back in to programming. Unfortunately, I am still a beginner, and Apple was still new at supporting this particular ecosystem. The examples and documentation were hard to understand, tutorials non-existent, and the available tools didn't work as well as their Mac OS counterparts. As Apple continued to release updates to the developer tools, I downloaded each one hoping that things would finally get to a point where I could figure them out, but it just wasn't working.
Thank you, Jeff and Dave.
At last, a well-written book appeared that would pave the way for what hopefully turns out to be my new career. I spent the next several weeks patiently and diligently working through the examples in the book. Somewhere around Chapter 9, I decided that I probably knew enough basics to start working on my own program. I started putting together small sample programs, testing different functions that would be components of an application that I wanted to make, and proved to myself that I could make it happen. Looking back at my project history, somewhere around mid-February is when I started to create my real program.
I'm planning to do a separate blog post detailing the creation of my program, so for now let's just say that my initial estimate of 6-8 weeks to completion was, um, inaccurate. I'm sure that someone who knew what they were doing could have completed the program in half that time. I slammed into speed bumps and brick walls constantly, rewrote the entire thing from scratch at least 3 times, and spent many a late night trying to squash bugs. I have learned that I am unable to get to sleep if my program crashes. My learning curve has been more of a jagged, rocky, and steep cliff face.
On May 28, 2009, Apple approved my program - SlickShopper - for sale on the App Store. I was really hoping to get it onto the store in March. And then I was really hoping to get it on the store in April. And then I was hoping I would just finish the darned thing. I finally bit the bullet and submitted the app into the approval process, and then nervously waited for what turned out to be 7 business days, meanwhile watching a competitor conduct a major advertising campaign. But it finally happened. My program exists. It is available for purchase. People who aren't friends or family have bought it.
I am an iPhone developer.
This is by no means the end of the story. For one thing, SlickShopper only sells for a dollar, so it's going to require a truckload of unit sales to provide useful income. I'm not expecting that to happen. For another, my wife will be losing her job in just a few weeks, which will drastically cut down on the amount of time I can do this iPhone thing before I have to go bring in real money elsewhere. And SlickShopper isn't done. There are several features I still want to add, and the main reason they aren't there yet is that I just plain don't know how to do them. So I have some learning to do. This doesn't take into account what my paying customers might want the program to do that I haven't even thought of yet.
Step 1 was to ship software. Now that I've made that happen, I can figure out what step 2 will be.