Category Archives: Software

Six Things I Learned About Making iPhone Apps

Last week, I released my second iPhone app (WordFlipper). WordFlipper also my first game. My first iPhone app is called WriteChain and it is a simple tool for writers to track their daily word counts. I created both of these applications myself from concept all the way through design, development, and release. And while I’m a long way from an expert, I’ve learned quite a bit from the experience.

1. Writing the code is the easy part… At least for me.

First off, I’m a very experienced programmer. Over the years, I’ve developed in at least half a dozen languages on a variety of platforms. So naturally, writing the code is the easy part.

Of course, that’s where you get into trouble. It’s so easy to reach for code first, and so wrong…

After I launched WordFlipper, I picked up Bob Walsh’s Micro-ISV: From Vision to Reality. A Micro-ISV is a tiny-independent software developer (less than 10 people, often just one). As I was reading through Bob’s book, he talked about all the things you might do wrong in starting down the path. None of this was new to me. I’m a pro, right?

But I was making all those mistakes, starting with reaching for the code first.

2. If you have to write instructions, you failed.

This is a little like telling jokes. If you have to explain the joke, you’ve already ruined it.

I suppose that some people might think this is a bit extreme, but really I think you have to do into designing an iPhone app with the mentality that there can be no instructions. Considering the number of websites I’ve built over the last 15 years, you’d figure that this would be a natural for me but it wasn’t. Even though both apps are small and focused, they had a few gotchas that required me to create instructions.

3. Never release an app that is missing non-negotiable features.

For both apps, I set s strict deadline for getting the apps up into the App Store. However, to make the deadline I also needed to cut a few features. While I think it’s possible to drop features to make a deadline, there are certain features for particular apps that need to be there and working properly. They are the non-negotiable features.

For most games, you need a global score board and some multiplayer functionality.
For apps that record data, you need to have an export feature.

4. Never create your own control when one from the iPhone SDK will do.

I learned this on my first app. I decided to create a custom settings screen and I built a view that is non-standard. I think this can work in a game, but in a utility app it really ought to be a custom TableView.

The point though is that while the iPhone provides you with an open palette for design and development, you ought to spend a little time really asking yourself why you think your idea is better and how it improves the app.

As they say in the world of writing fiction, if the scene doesn’t advance the story (i.e. serve the plot) – cut it.

5. You will spend just as long creating marketing materials as you did coding and you ought to start before you write a line of code.

Jonathan Fields of Career Renegade fame has a post up today called “Marketing from the Heartbeat Out”. In the post, he talks about creating new markets within existing markets by spending more time thinking through your idea and building something new…

While you noodle through the idea for that great new app, think about how you will position it against others in the app store. How will you get visibility? What do you need to create to make it easy for editors to include your app on their sites? Why will people download your app and keep it?

6. Get a second opinion.

Julie Roads of Writing Roads also has a new post up today. It’s called “Can you look at this for me?” As a writer, it’s natural for me to ask people to check out my stuff or listen to an idea. The same discipline applies to development, but in creating my first iPhone apps I didn’t follow through on what I knew was right…

In both cases, I created the applications as an act of pure, creative fun. It isn’t that they’re bad. I’ve heard great comments about both WordFlipper and WriteChain. However, I think that they would have been better had I solicited more feedback from the right people before setting out. I suppose that I failed to do it because I was basically learning the platform and having fun.

7. Developing for the iPhone is really fun.

I know there are only supposed to be six items here, but when I read over the post it felt like sort of bleak. I mean, after all, the apps are just fine. They work and they’re fun. I had a great time making them.

So, I’ll wrap up here on a high note: developing for the iPhone is really fun! 🙂