I recently had occasion to sit in on a workshop where I got to absorb a massive amount of advice on what makes up a great iPhone app — and the advice which I’ll share here has implications across a wide swath of domains where interactive content and media is produced. I can’t talk about the event, but I can talk about what I learned, and the most important and most broad reaching nugget of wisdom is what I’m going to share with you here.
First, an overarching requirement: no matter what the technology, be it building an application for the iPhone or creating some content for your Learning Management System — everyone involved with the project needs to have familiarity with the tools and technologies involved. This may seem obvious, but I’m constantly hit with project opportunities that I walk away from where the actors involved don’t really know anything about the medium they’re building to. It’s not just the developers that need to know the tech — if you’re building E-Learning, your project managers and clients need to have some solid experience taking E-Learning for themselves so they know what they’re going to be either working toward, or what they’re looking to avoid.
If you have a team that knows the medium it’s going to play in, here are some attributes that Apple seems to share about what constitutes a great application:
Great Apps are…
- Designed Well
Above and beyond anything else, a great application is delightful. This means it’s inviting (the app itself compells you to want to use it), intuitive (does exactly what you expect it to do), engaging (keeps you occupied and involved), exciting (provides a thrill) and enabling (lets you do things that you never could do before).
If you’re looking at the iPhone for examples of truly delightful apps, check out Guitarist, Yelp and Facebook. Guitarist is just a thrill to use and having used it on the advice of the workshop I attended, I can tell you with only three hours of playing with it that I can’t believe I went this whole time without it. It’s an amazing application.
Yelp enables you to do things with the web service that people never could do with the website (easily). The site is used more effectively because its content is now on the iPhone, when you actually need its information. This is an app I also added on the suggestion from this workshop.
I’ve used Facebook from the beginning, but admittedly in the 2.0 version of the iPhone app, it enables me to use Facebook more frequently and consistently than I ever did as a website that was blocked by my corporate firewall and handicapped as a mobile site.
Innovative applications are revolutionary, inspirational and fresh. They turn things on the ear and add an admittedly geek sense of wonder to them. Classics, as an example, is a book reader. There are a few book readers on the iPhone. What Andrwe Kazmierski and Phill Ryu did that sets Classics apart from the other book readres is *how* they approached book reading on the iPhone. They worked with a CGI expert to perfect the page flip in their book reader as well as an “actual” bookmark to save your spot in your book. Books even fly on and off the bookshelf as you put them away or pick them up.
Shazam revolutionized how to figure out what you’re listening to. Example: the night the Cubs lost the NLCS, I was in an Irish pub and a song came on that sounded like a funny rip off of Prince. I whipped out the iPhone and used Shazam and it told me it was “Debra” by Beck. I thought, “A Ha! This has got to be wrong. There’s no way this is a Beck song.” I tagged it with Shazam about five times, each time it came up with “Debra.” When I got back home I checked it out on iTunes and sure enough, the software nailed it. Even in an exceedingly loud and crowded bar, it picked out this song. That’s insane to me. But if I needed that song for the cab ride, not only did Shazam identify the song correctly, it linked in the iTunes store where I could buy it for my ride home. It’s innovative because it solves a common problem with a very unique experience.
Great design is not an accident. It is a top priority and it is supported in every phase of a project — it doesn’t just end with the “design” phase. Great design comes from small teams, not large embedded factions (and not individuals). Small teams tend to be inter-disciplinary and more organic. They also tend to be easier to manage and because of the size they communicate well and make decisions quickly. Teams that can flex themselves around the needs of a project also tend to iterate quickly, too.
I saw aggregated numbers from several leading application development groups, and the amount of time they spent in different phases of a project were pretty striking for how closely aligned they were:
- 33% of project time was devoted to the Design.
- 25% of project time was devoted to the Code.
- 21% of project time for Debugging.
- 21% of project time for Testing.
Even in Code, Debugging and Testing — Design permeates and surrounds those phases. Great design focuses on solutions, not features. The phrase stressed here is that great design comes from saying NO to a thousand different things.
The examples that were shared on designing well are more anecdotal. Twitterrific Pro was an App Store launch application, but it was one of the last applications to go in for the cut. They waited until they had the design just right. For instance, they were pretty much “done” until some realized that people are probably going to tweet one-handed — and they wanted to make sure they put in handedness optimization before the initial launch of the app. They focused not on a “feature” but on a “solution” — and that dictated when the app was ready to go.
Tap Tap has an app called “Where To” and when it launched, it looked like your basic list-style application where you dig down to get to the information you want. Because Tap Tap is a very small team, they were able to transform teh itnerface quickly going from the basic list-style interface to a rotary dial interface that saved real estate, eliminated the need to scroll — and they were able to get it out FAST.
Another example of great design? Colors! by Jens Andersson — the color wheel selection is brilliant and takes advantage of the how people interface with the iPhone.
Integrated applications take advantage of all the technologies and data in a system. Imagine building information portals instead of just your static E-Learning content. What would it mean to learners to have E-Learning that included real-time data — or where their performance in a multimedia experience directly unlocked new functions in a business system? In the case of the iPhone, there’s an entire Software Development Kit (SDK) that gives a development team access to the very same tools and resources that Apple uses to build apps for the iPhone themselves.
Some excellent examples of integrated applications include the MIM1.0, which is a tool that oncologists can use to do bedside consultations with cancer patients — which makes it easier and more personal to consult patients rather than making them wheel up to giant and expensive workstations. The tool uses the native photo manipulation and multi-touch to dig down and laterally through a variety of visual information.
Another, more accessible, example is the Crash Bandicoot game — which has 12 super hi-rez race tracks and awesome integration with the iPhone’s graphics and accelerometer. Recently released, there’s Google Earth which integrates with the accelerometer, the multi-touch display to rotate the Eartch and uses the GPS built in for a truly incredible tool for looking at where you are.
No one wants to use an application that doesn’t perform well. You can’t have a delightful application if it’s not responsive. You need to care about performance optimization, so it has to be a priority throughout the development cycle. This involves analysis (checking for memory leaks, as one example). This involves testing — testing that leads to some tough stances, like rejecting code taht degrates performance before committing it into your code repository. EVERYONE on your team needs to appreciate that high performance is a high priority. Testing involves benchmarking — so you can keep track of how well your project is performing as it’s being built.
Code re-use is clearly intelligent, but we all know that even when code gets reused, it needs to be tweaked. This is why you can’t just blindly port old code into your application wholesale. This is true for Flash; this is true for Objective-C. You can’t just blindly move your entire feature set, adjust/update the syntax and wipe your hands of the code.
Based on the examples, it’s clear that in the App Store, no one demonstrates this better than Pangea Software. Enigmo, Nonsaur and Cro-Mag Rally are all Macintosh games — some of them have been around for years. They were written with OpenGL for graphics and were based in C. When it came time to build them for the iPhone, they were able to get Enigmo running on the iPhone in the first 48 hours — by running, I mean it *worked.* That was only 5% of their development time. The other 95% of their development time was optimizing that application for the iPhone — specifically input for multitouch, texture mapping changes for the iPhone, and spatial audio. It wasn’t enough to just port the game — they had to optimize to make it perform awesomely.
Above when I talked about how great applications are designed well, I wrote a bit about how small teams can iterate applications quickly. Those iterations are important — when each iteration or revision of an application is substantially “better” than the last one. The focus on solutions, rather than features, again is critical to apps that perform great. Typically, as a developer, we want to “see what happens” — which is throwing in a feature. Mediocre “see what happens” features typically result in mediocre responses from your audience or customer base. This is why you need to deliver something that is awesomely designed, fully integrated and performs insanely well.
The next version of anything you build should be the best it can possibly be: think quality increase instead of more features.
This is the one element that is clearly applicable to the iPhone in a way that other applications of this entire philosophy might not be. The iPhone is truly a “personal” device. This means that people who use the iPhone want persoanlized experiences with their applications.
I wrote before that a great application needs to be integrated. It also needs to work well with other applications that are available on the system, like Mail, Safari, Phone, Maps, etc. A great application connects to your personal stores of photos and contacts. But it also connects you with personalized data that is beyond the device. Server-side preferences and storage, game scores and other forms of media and content — the iPhone is a great capturing device that captures personal information about where you are and what you’re doing with both sound, pictures and text. It’s also a great personal data visualizer that can aggregate and allow the user to manipulate all this information — where the bulk of the effort for organizing and storing can happen “in the cloud” — all the application needs to do is connect to that information, present it and report back what you as a user do to manipulate it.
SmugMug is a really good example of this. Market Circle, Inc.’s Billings application is coming out with an iPhone application in early 2009, and that’s going to allow you to synch up with the desktop application. Remember the Milk just came out with its task-organization application, and I’m considering switching to it from AppIGo’s ToDo, which I’ve loved so far.
Finally, every great application is world ready. When it comes to iPhone apps, the US isn’t the only market. The App Store is in 62 countries — more countries have the App Store than sell the iPhone. Think about that. Localizing the experience to multiple languages allows you to reach users in other countries, as well as new users in your own country.
Differentiating in this way creates a competitive advantage. The Remember the Milk app I just mentioned? It’s localized for every language — and keeps the same interface. Even the landing page in the App Store is tailored for each langauge.
One word of caution: avoid using the online translation services. Hire professional translation services as opposed to using the translation service on Yahoo or Google. The last thing you want to do is localize a would-be great application that is in either jibberish or messages something completely offensive to an audience.
I know that much of this post relates to making a great iPhone app. Hopefully, you’re connecting the dots and will share in comments below how this might impact how you develop whatever else it is you’re developing.
Technorati Tags: iphone, sdk, development, flash, e-learning, multimedia, attributes of applications, great applications, smugmug, remember the milk, tips, advice, design, great design, experiences, pangea software, nanosaur, billings, app store, itunes, ipod touch, innovative, crash bandicoot, colors, twitterriffic, shazam, classics, guitarist, yelp, facebook