As a part of the MacStories Apps Tree event, I thought it would be interesting to hear the voice of Mac designers and developers about the steps that go into desigining and developing an application for Mac OS X / iPhone.
This is a guest post by Rick Maddy, the developer of Palettes for iPhone.
Have a good read.
While waiting in line for an iPhone at the local Apple store in July of 2008 I had the sudden desire to look into writing an iPhone application using the new iPhone SDK. Since I was running Tiger on my Macbook Pro at the time I grabbed a copy of Leopard along with my shiny new white iPhone 3G and headed home. Two weeks later I submitted my first simple app to Apple for review. A few days later the app appeared in the iTunes App Store. It was quite exciting. It tough sleeping the first few nights waiting to see my daily sales report.
My professional programming career spanned 21 years at the time. Those years were spent in various cubicles at 8 different companies. I used Pascal, C, C++, and Java as my primary languages in that time. The last decade was spent developing large enterprise websites in Java and J2EE. While I enjoyed most of what I did all those years my heart was always longing to write “one man” projects. I did my first BASIC programming on Radio Shack TRS Model I computers in the shopping mall in 1979. I was hooked. I spent countless hours on my first computer, an Atari 800 purchased in 1980. I had a great time writing little apps. Some were small and mostly useless. Some were complex and did wonderful things - at least to me.
I dabbled with some shareware apps in late 80’s and early 90’s. It was a lot of fun writing those apps. Most were sold on Compuserve all in the pre Internet days. But little came of it and most of my work was done at a job. I worked on a few personal projects at home and even did a few open source projects.
After writing and selling my first iPhone app in the summer of 2008 I was finally able to do something I’ve wanted to all those years. I was able to attempt to make a living writing small apps that I had complete control over. I submitted my second app a few weeks later and quickly started on a third. This was Palettes. Palettes was vastly more ambitious than the first two apps. I spent about 2 weeks each on the first two. Palettes took me nearly 2 months to write. I learned a lot writing that app. I delved deeper into the iPhone SDK and spent many nights tackling steep learning curves. I release my 4th app two months later with some of that time adding to Palettes. I release my 5th app in the first half of 2009. The rest of 2009 was spent making enhancements to those three apps.
While I’m making a lot less money than my last “real” job I just love working for myself writing iPhone apps. I have so much freedom. I write what I want, when I want, if I want. The last part is my favorite. It’s one of the joys of selling something. You write it once and then you sell it over and over whether your are working or not. One of my best week of sales happened to be while I was on a week long vacation. But the reality is that I work almost every day. I enjoy it. I wouldn’t be doing it if I didn’t like it. One of my favorite benefits of writing and selling apps is my customers. It’s very rewarding to get an email from a customer telling me how much they like one of my apps. Even if they write to tell me about an issue I enjoy working with the person to get the problem resolved. I’ve had emails from people all over the world. Places like Japan, Australia, England, France, Canada, and the USA to mention a few. I take customer support very seriously. Many of the reviews for my apps mention my customer support.
Prior to my first iPhone app I had never seen Objective-C or Xcode. I had been using OS X for a couple of years but any development I did was Java and web technologies. None of this was done with Apple tools. Learning Objective-C didn’t take me too long given my extensive background with C, C++ and Java. But it had been a long time since I had to worry about memory management. Java’s garbage collection will spoil a person. But memory management in the Cocoa framework is vastly better than the raw C and C++ I did a dozen years earlier. Needless to say there was a large learning curve with the extensive Cocoa Touch API for iPhone apps.