Wednesday, October 7, 2009

Book Report: Programming the iPhone User Experience

Publisher: O'Reilly
Author: Toby Boudreaux

Title: Programming the iPhone User Experience
Tagline: Developing and Designing Cocoa Touch Applications

  • The book had a nice lief motif throughout which was to think about design first. I felt the discussions framed in this way were very helpful in eliciting thought about how can I do better with my app design? Have I thought various aspects of the design through enough? Or, I have not thought of that, what should I be doing about that aspect in my app?
  • As someone that has read most of Apple's iPhone introduction guides for programmers, the book could have been shorter as I felt there was a lot of rehashing of the basics. Like application templates and controls. I am sure that if I had done anything outside of the basic touch actions then I would have covered most of the touch chapter as well. That said, if you are new to iPhone programming or you have not read the programming intro docs from Apple, then by all means this is a short book with lots of overview. You will want more details than contained here but this will give you a good overview of the iPhone features you'll want to think about while designing your app.
  • The best chapter by far and the reason to buy this book in my opinion is chapter 9 on UX Anti-Patterns. Once you read this (and if you have used a reasonable number of apps) you will be saying, ya that is a bad design. If you've wondered what it was about such and such an app that made it not feel right then this chapter probably has a clue. Read this chapter to keep in mind UX designs to avoid without great thought.

Chapters In Order of Most Interest to Me
  • Chapter 9: UX Anti-Patterns - the first chapter I read and the best one for a lot of good tips on how not to develop your UX. Every iPhone developer should read this chapter. I will reread this chapter occasionally to keep UX issues fresh in my mind.
  • Chapter 5: Cooperative Single-Tasking - for someone coming from an enterprise and server applications UNIX background, this chapter was an excellent discussion on how the iPhone environment is akin to a web based environment where each app is like a web-page. You can even (as most devs would know) pass control between apps using the iPhone SDK's Custom URLs. This also had a good discussion on launching quickly, handling standard interruptions, etc. I will revisit this chapter.
  • Chapter 8: Progressive Enhancement - This is a good overview of some of the sexier features you might want to drop into an app. Sound, location awareness, networking, etc. The coverage raises lots of questions for you to think about and has some good lists of things to think about like how will your app handle a lack of location awareness if the user has turned off location awareness or says no to the prompt to use location awareness in your app? How will you handle sound and sound effects in your app if you use them? How will you deal with incoming calls and sound? Lots of good things to think about if you touch on any of these features in your app.
  • Chapter 4: Choosing an Application Template - this was a bit fluffy (see next point about things covered in the basic iPhone dev docs) but it did have a good discussion around identifying a problem to solve, thinking about how to solve it, and keeping your app focused. If your app's feature list and views are getting a little unwieldy then think about breaking it into different apps that are focused on solving only one of those features well. I thought this was a good idea and with the use of Custom URLs you could design a series of apps that work together collaboratively but would allow the user to purchase only the pieces they require. There are already devs out there that are opening their Custom URLs to others such as BirdFeed's Custom URLs from developer Buzz Andersen.
  • Chapter 6: Touch Patterns - good discussion about how to handle touches, touch accuracy (which lots of apps ignore with tiny buttons that are almost impossible to click), and a good overview of how to interact with touchable views. Worth reading for the discussion about view touch accuracy alone.
  • Chapter 7: Interaction Patterns and Controls - I found this rehashed a lot of the iPhone developer documents again so it would be good for beginners but if you have touched most of the controls in here then maybe the patterns will be of interest but the controls discussion was skip-able.
  • Chapter 1 to Chapter 3 had too much fluff which was good for those that have not read the Apple iPhone development documents but in general if you have read the iPhone Application Guide and the Mobile HIG then you can skip these.
Ok, so the FTC just passed laws about disclosing how a reviewer/blogger/etc benefited or whatever for posting a review. So how did I benefit? Well first, the book was free to me. The CocoaHeads group I belong too has an O'Reilly User Group membership. We get free books to review as a group every so often. This book came in and I got to review it for the group. I had the book for a month and it goes back to the group tomorrow night when someone else gets to take it and review it for a month.

Would I buy the book? Yes, I found I ran out of time to implement some of the code ideas in the book and I'd like to take some time to sit down and work through the samples. First I want to go and read Coders at Work though, so that will be the next purchase.

If you want to join in our monthly discussions and are an iPhone Dev in Ottawa, Canada then check out our CocoaHeads meetings.

No comments: