Since the early part of 2011, I’ve been focused like a laser on ‘iPad software development.’
Beginning in early 2009, I realized that the recession was going to be a big disappointment to the market research industry and thought I should build up my skills in adjacent but challenging and high growth areas. I bought an Objective C development primer from Amazon.com, downloaded the Mac OS X-Code, integrated development environment for Mac OS and gradually built up a library of iPhone/iPad-development-for-dummies books. Also, I got used to using Google to discover how other people had responded to the many many errors that one gets in software engineering. I found the Apple documentation thorough, but not particularly helpful.
I was frequently frustrated feeling like I’d hit a dead end. Then, I would do a search on the error code I was getting and voilà – some other newbie had experienced exactly the same error and I learned from their experience. It was slow, it was painful and I was slowly getting it to sink in. On more than one occasion, I worked all day trying to fix a bug and then took the iPad to bed reading various coder blog entries on exactly the problem – or what I thought was the same problem.
I did all the exercises (well, most of them). I discovered a couple of bugs, errors and omissions in the textbooks and built up my confidence and expertise in, first iPhone and more recently, in iPad development. Probably the most wonderfully satisfying project has been the development of my own project and product. The -for-dummies exercises were helpful in exploring the scope of the IDE and the limitations of the devices, but they weren’t useful in helping me pick an opportunity and then filling it with software.
At the top level, I can say that my methodology is simple but disciplined. I started with a brainstormed list of possible apps. I started a diary. I analyzed the competitive environment surrounding my list (what apps like it are out there? who needs this app? etc) and whittled it down to the one app that I thought I could and should do.
Next, I thought about what should be the functionality in the app. I believe that people want single-purpose apps that help them make decisions and with cool visuals helping them interpret the data they are presented. I made a Keynote (PowerPoint equivalent for Mac) with the core graphical ideas of the user interface, and then I started building my first app.
Then I began coding. Using a template from one of my paint-by-numbers books it started working. Then I discovered a flaw in my approach: it wasn’t scalable. I had to do something different. Amazon and another series of paint-by-numbers coding books later, I found the perfect architecture, but it would require a complete rewrite of the functionality I did have.
I downloaded the awesome CS193p iTunes University materials from Stanford University and kept watching them again and again while I jogged on my treadmill. That worked for most of February, March and April, but gratefully, as the weather started heating up, I found the videos less interesting just as I started running outside.
Back to the project shaping up. I abandoned the original work, and rebuilt the code and the design. Here, I would focus on getting a function point to work, and then deciding how to integrate it to the code base. Later, I just stopped making copies of the code and relied more heavily on the TimeMachine backup mechanisms built into the Mac OS to keep my software free from corruption.
Then, on May 7 I purchased my Apple developer subscription and began the process of testing the code directly on my iPad. Two weeks later and many builds later, I’ve ironed out most if not all of the memory leaks and got the project ready for testing by two friends and two of my kids who all own iPads. It’s only a matter of time, but I will have the platform in the app store in only a few weeks.
Now, I’m onto my second app. It’s been an intellectually stimulating experience and hopefully it will be equally a financially rewarding experience too.