This is my first post for iDevBlogADay, an opportunity about which I am quite excited. The following is the tale of how I got into this crazy world of iPhone development and how I tackled the challenge of essentially re-inventing my software development career. If you’re in a place where you’re thinking about iOS development or are interested in resources to get started, this article might be of use to you.
The allure of making a lot of money, fast, is quite compelling. More so when you’re unemployed.
In the Fall of 2008 I found myself unemployed. I wasn’t thinking I should change career focus; I was thinking I needed to find a paying job and fast! The job market, as you may recall, was quite bad at the time. I was focused on putting the skills I already had to work in a decent gig. There was no time to learn something new. Or was there?
Around the end of that year, a friend said to me one evening, casually: “You should write iPhone apps.” “Really?”, I said. “Why?” My friend explained that someone had written an app that was making $10,000 a day. And on Christmas his sales shot up to $35,000 a day.
“Really?!”, I said. “What does it do?”
He said, “It’s a fart app. It makes farting sounds.”
“I’m sorry… what? It does what?”
“It makes farting sounds. Apparently, people love this stuff.”
I’ll say… Apocryphal or not, it got me thinking…
Now, you have to understand that until that point in my career, I had been a Unix/Linux developer working in C, C++, and Ruby on highly scalable, telco-grade server software. Not a GUI in sight, and I never really felt the urge to move in that direction. In any case, I was intrigued: I already had a Mac, the dev tools were free, and I had time on my hands. (Still unemployed at this point in time.) I thought about it…
Not long after that evening conversation I decided to download the tools. I started Googling around for information about iPhone development. Wow! There’s a lot of information out there. It was obvious that I was not going to learn how to write iPhone apps from Google. Sure, it’s all out there, but it’s arranged like a jigsaw puzzle. I wanted to learn how to put the pieces together in order — to do it right!
I quickly figured out what I needed to learn. I’d been a software engineer a long time. I already knew lots of languages, but not Objective-C. I knew nothing about Apple’s dev tools or frameworks. And of course, I knew nothing about iPhone development. I decided that I needed to learn about these topics first, in this order:Objective-C, Programming on the Mac, and Programming for iPhone.
Luckily, there are some great technical authors in our midst who have written some great books. Here are the books I chose to get started.
For me, the leap to Objective-C from C, C++, and other languages was not a hard one. Still, I wanted to learn about the language in the context of writing Mac and iPhone apps. I surmised that this would get me familiar with not only the language, but the tools. And I was right!
Learn Objective-C on the Mac, by Mark Dalrymple and Scott Knaster, was just the introduction I needed. I read this book first, working through all the examples, most of which were non-GUI oriented. The book, after all, is about Objective-C programming on the Mac and not about Mac application development. Big difference.
Next, I read Cocoa® Programming for Mac® OS X (3rd Edition), by Aaron Hillegass. This is an excellent book, more so if you already know something about software development. Information is presented clearly and succinctly and most of the chapters include challenges that make you think and learn even more. This book provides a great introduction to the Apple Frameworks which is key to being able to develop both Mac OS X and iPhone apps.
Finally, I read Beginning iPhone Development: Exploring the iPhone SDK, by Dave Mark and Jeff LaMarche. This is also an excellent book, and has since been updated for iOS4. It’s very similar to the Cocoa programming book in style, except it’s all iPhone focused. That is to say, the book is laid out similarly in that each chapter presents some information and one or more examples, and builds on each previous chapters’ lessons. Having established a reasonable foundation in Objective-C, Cocoa, and Xcode, reading this book allowed me to focus on the iPhone-specific stuff.
Believe it or not, after reading these books I felt ready to write my first app. (In hindsight, I knew so little, it’s amazing I got it done!) By May 2009 I had written WordWinder, a game based on the old Boggle game, in just a few months. I thought it was pretty good for my first app. And of course, I thought users would snap it up! (Don’t we all think that’ll happen?)
The experience of developing an app, fine tuning it, navigating the Apple submission process, and finally getting the app on the App Store was an incredible learning experience all by itself. Having a ton of “spare” time on my hands to get from Square 1 to the finish line in just 5 months didn’t hurt either.
And when my app was finally Ready for Sale on the App Store, I realized this: Apple does everything for the developer in terms of setting up the sales channel, handling the financial transactions, and all that. What they do not do for you is marketing. And so, my dreams of making thousands of dollars a day from my little word game were soaked with a dose of cold reality. Which only meant one thing: There’s more to learn! There always is, which is quite refreshing.
There are several lessons here, at least for me. First, an old dog can learn new tricks. Mobile application development was never, ever on my radar as a career path. Now, here I am, a mobile application developer at a time when mobile app development is white hot. Second, the path to success is long, with many forks, some disciplined, others less so. The disciplined path (of study, in my case) paid off. In just 5 months I went from “n00b” to “published developer.” Finally, and this isn’t really a lesson so much as a self-realization, I can finally say about my professional life that I am doing what I want to be doing, not just what I can do. But that’s another story for another post.
Thanks for reading.