Designing an App Means Knowing How It Will Work

Ash Furrow recently wrote an article about “How to Design iOS Apps”, wherein he discusses the difference between using Apple's stock UI components or building your own. At least, on the surface, that's what the article seems to be about. But after actually reading the article, I'm left with the feeling it was more about “How to make your iOS Apps Look”. Consider the following:

[Adhering to Apple's Look-and-Feel] is the best option for most people. Apple provides amazing libraries of user interface elements that can be combined to make great apps. This doesn't mean that you can't be innovative and are forced to make cookie-cutter apps; only that you should focus on what the user is familiar with and expects.

This option has many, many advantages. The user will feel at home and know instantly how to use your app. If you're a developer, you're probably bad at understanding the user's expectations, so using UIKit for everything means Apple has done all the user interface design for you (hooray!). Using UIKit is always way easier, so you can spend you're time doing things that make your app functional and unique.

(Emphasis mine. Keep that part in mind) The design of the application is really a focus on how it's meant to be used, and if you, a developer, are bad at understanding the user's expectation with regards to how the application will be used, you aren't doing your job right.

Shifting gears, Ash moves on to the other option of “Roll Your Own”.

This alternative option is best suited for development teams with graphic designer talent. (No, developers who have a pirated version of photoshop and get confused about how the Pen tool works do not count as graphic designers.) This kind of app typically involves making something completely new and innovative or copying existing, but non-standard, interfaces.

Ignoring the fact knowing “Photoshop” does not actually make you a graphic designer any more than knowing “hammer” makes you a carpenter, the visual design of an application is not the same as how the application is actually meant to be interacted with. Great graphic design is supposed to communicate how the application is to be used, but it does not define the usability itself. But then:

It should involve designers and developers working together to create an innovative and consistent user experience. Using open-source projects should be a means to an end; if you start with some neat menu demo project from github as the basis for your app, it's probably going to suck. Instead, start with an idea of what you want and leverage existing solutions to achieve this goal.

It should involve those same developers who are “probably bad at understanding the user's expectations”? And you shouldn't use code you find on GitHub, but you should post it there so you'll become internet famous?

The rest of the article deals with the implementation of the design by you, the programmer, and is for the most part accurate, but still there are a few bits which detract from it.

A Lightning Round of minor inaccuracies:

Wherever possible, avoid using transparent .png's to achieve some effect. The system can hardware accelerate your app's graphics a lot easier if they're using a CAGradientLayer and not some UIImageView instance.

Actually, according to some of the WWDC videos from 2011, in many benchmarks, drawing with UIImageView ended up being the fastest and most efficient way to draw graphics to the screen. More so than using a CALayer itself.

Under no circumstances should you subclass UINavigationController. Ever.

This is in the class reference for UINavigationController and has been since iPhone OS 2.0. If developers can't read the docs, then all hope is lost.

Developing a usable interface is one of the most important problems we developers face, and it involves so much more than just our coding know-how. It involves input developers and graphic designers and users too. The design of an application encompasses all about how it is used, and it can't just be slathered on in the last steps. It is not a coat of paint.

And even though Apple provides the excellent UIKit for us to make use of, there's no way one framework could provide the interface paradigms for all uses to come. User interaction design is not a solved problem—it never will be–it's a constantly evolving target, and we app makers are here to always be advancing the state of the art.

Speed of Light