Over the past few months I have gone through a major journey of discovery and enlightenment.  At the end of 2009 I decided to update my software development skills.  The platforms I decided to learn were the iPhone and Mac OS X.  I figured developing iPhone and Mac OS X applications would utilize my experience as a software developer and help me learn some transferrable skills along the way.

The early days

  • Joined Apple Developer Connection and iPhone Developer Program
  • Purchased the development environment (Macbook Pro, iPhone 3GS)
  • Installed Xcode on my Mac
  • Downloaded lots of free iPhone Apps to understand the User Interface and how other developers were making use of Cocoa Touch
  • Watched hours and hours of iPhone Programming on iTunes through Stanford University
  • Read many books on Objective-C, Xcode, Cocoa, and Cocoa Touch
  • Spent countless hours making sense of the development environment.

While I was learning, I wondered what kind of App I would develop, what type of audience it would have, and when I’d have an opportunity to release it.  Not too long after that I met Matt Beckwith the creator and producer of Podcast Stockton.  We quickly became friends and decided to collaborate on this project.  We went through the design process and agreed on what the finished product would be.

What I’ve learned so far

  • Mac OS X behavior (keyboard, windows, utilities, applications, shortcuts, etc.)
  • Objective-C  (An Object Oriented C developed by NextStep)
  • Model-View-Controller architecture (a different way of organizing code that helps to keep the data separate from the views)
  • Cocoa and Cocoa Touch (Frameworks for developing applications for iPod Touch, iPhone, iPad, and Mac OS X platforms)
  • Xcode (A suite of tools for developing Mac OS X, iPod Touch, iPhone, and iPad software)
  • iPhone User Interface Guidelines  (all the little resources needed for producing and releasing a professional level application for the iPhone)
  • iPhone certificate provisioning process
  • iPhone AdHoc distribution process

When it’s all done, there will be two applications.  The first App will be for the iPhone which may just work for the iPod Touch; it seems like it should since they share the same U/I but I won’t know for sure until I’ve tried it out.  The second App will be for the iPad,  we’re still talking about what it’s going to look like.  Will it be the same App that automatically expands to fill the screen real estate or will it have some extra features that aren’t available to the iPhone?  That will be determined shortly after the iPhone App has been completed.

Things I’m still learning

  • App Store application approval process
  • App Store application provisioning process
  • Apple’s iPhone App Store updating process
  • Taking advantage of iPhone OS 4 features
  • How to make money developing premium iPhone Apps
  • Improving iPhone App performance for 3G network

The journey is far from over; it’s only the beginning.  I see no end in sight for new ideas.  I receive suggestions on a regular basis from people in my professional and social networks who tell me that they would love to see an App for this or that.  So far, this journey has been an enlightening experience.  I look forward to hearing suggestions from the people who use my applications in the real world.