startup junkie

0 notes &

Thoughts on Mac Application Development

Imagine we - yes, that’s right, you and I - are about to start designing and building a new Mac application. How should we proceed? I’ve recently had to put some thought into this, so here goes…

I feel pretty strongly that if we are going to release a new Mac app, we should aim for it to be one of the greatest Mac apps ever written, both in terms of functionality and design. Otherwise it’s not really a project that’s worth working on.

Given the recently released screenshots of Mac OS X Lion, it’s clear that the design language for Mac OS X going forward is rapidly converging with that of the iPad. Applications will be more graphically intense and beautiful than ever before, and it will be harder than ever to create a stand-out Mac app. But we should try.

Characteristics of World-Class Macintosh Applications

Having now spent more than twelve years using and observing the Macintosh platform, there are a handful of attributes that all of the very best apps have in common to some degree:

  1. As simple as possible, but no simpler. Einstein had it right, a half century before the first Macintosh: our app should do precisely what the user needs it to and no more or less. Even more importantly, these features should be immediately intuitive - no explanation required. Our app is not going to ship with a ReadMe or any other documentation. Sorry. Does that change your attitude?
  2. People are busy; they shouldn’t have to think about our app. It should seamlessly integrate into the user’s life and require no presence of mind. It should “just work” and fade into the user’s mental background. To be specific, we’re going to use direct manipulation whenever possible. No modes or modal dialogs and no alerts or mental context-switches unless absolutely necessary. Let’s get our work done and get out of their way - time is precious, and more is often saved through a well-designed UI than a highly-optimized inner loop.
  3. The world is watching - let’s dress to the nines. Consider every minute a person spends using our application a gift. How do we repay them? The least we can do is prevent their eyes from bleeding. When brought to the foreground, let’s put on a show that will please and surprise the user. Watch the typography, watch the spacing, and add touches of animation where it helps inform what is happening. The screen is your canvas and the very best developers are artists too.
  4. Every app is a platform, so make it easy to leverage. One of the best ways to rise above the crowd is to a establish a platform for your domain. If our app will be used as part of a workflow, let’s make it scriptable or automatable. If it will benefit from being modular or extensible, let’s publish the plugin SDK. At the same time, let’s leverage the platforms that already exist. We should Growl and Sparkle with the best of them (not the worst of them). If we have an opaque document format (go directly to jail. do not pass Go. do not collect $200) let’s provide QuickLook and Spotlight plugins. Again, we’re building this to be used, so let’s make it usable.
  5. Look after the elderly but focus on the young and yet-to-be. Software development should be forward-looking, with a quick glance to the past for compatibility. The Macintosh platform moves rapidly and the majority of the active user-base is on the latest release. Think about it - are the people still running Tiger (or even Leopard) really going to be those springing to purchase our brand new app? I’d argue it’s always better to aggressively adopt new technologies to sell ourselves to the users of the future than burden ourselves with supporting everyone that ever was. 

The Cross-Platform Dilemma

Designing a world-class application is even harder when it comes to making the app cross-platform, because the tendency is to decide on the feature-set and UI once, and implement it on both platforms. There is not a single instance I can think of where this has resulted in a successful Mac application. (e.g. the greatest version of Office for Mac in recent history was 2004, when it differed the most from the PC version. Adobe Photoshop has only continued to decline on the Mac as it asymptotically approaches the PC version’s UI.)

I’m not saying that things should be different simply to be different - these stem from very real differences in user behavior. For example, the vast majority of Windows users store all of their files in their My Documents folder or a subfolder thereof. On the Mac, however (due primarily to legacy OS 9 behavior, but also because the UI does not enforce it) a significant percentage of users stores files in directory trees at the root of their hard-drive or on the desktop. If we have any hope of our users making our app a part of their daily routine, we can’t ignore this.

And it’s not just this: the availability of multi-touch gestures, the deemphasis of right-clicking, the different keyboard shortcuts, the availability of system services, the single-menubar-multiple-window metaphor, and many more differences all need to be accounted for in the design process.

To give one more example of the pervasiveness and importance of these user behavioral differences, realize that they impact website development as well. On the PC, the typical user fills their entire screen with their browser, resulting in a usable width of over 1000 pixels. On the Mac, the typical user centers their browser window on their screen, with space on either side reserved for access to the desktop and, often, an IM application. This results in a usable width of 900-1000 pixels regardless of their display size. Yet another thing to keep in mind.

And through all of this, one thing is clear: Mac users want to use apps that feel like they have been designed specifically for the platform. Yes, they want to feel like they are special. Let’s grant them that gift.

On Marketing

As the number of available applications for a platform explodes, it becomes harder and harder to stand out. It also becomes harder and harder to get press. We’ve seen this already happening on iOS - the App Store has succeeded beyond Apple’s wildest expectations and the long tail is lonely. If we don’t make a splash and attract attention, we’re not going to see the level of success and adoption we were hoping for, nay, deserve.

There is only so much press to go around and only so many bloggers (“journalists”) available to write stories. With so many apps to pick from, how will they decide?

Once there is a critical number of apps, functionality starts becoming commoditized. There are dozens of alarm clocks, dozens of calculators, dozens of text editors, image processors, and drawing apps. What gets attention? In an age when everyone and their kitten can ship an app, the one aspect which hasn’t yet been democratized, the hard part, the time-intensive part: elegant design.

Assuming our app rocks its basic functionality (would we seriously be having this discussion if it didn’t?), the press is going to focus its attention on what makes it special. If the answer’s nothing, they’re simply not going to write about us, but if the answer’s a gorgeous UI, an elegant simplicity, and an element of joy, we’ve got a leg up on most.

It’s been 12 years since I shipped my first Mac app and, let me tell you, it was boring. I’d strongly recommend we try the flashier, more exciting approach if we want people to sit up and take notice.

Easier said than done.

Writing this is the easy part. The struggle is yet to come. I have no delusions of grandeur nor presumptions of success. There are so few truly great applications because they are so truly difficult to conceive of and build.

The worst of all possible outcomes, however, would be if that fact led us to give up and settle for mediocrity. Or, even worse, settle for above average, because then it’s clear we had the potential but let it slip at the end.

This is just the beginning. Far more can be learned by studying Delicious Library, Transmit, Tweetie for Mac, Courier, etc. What have I missed? Which other amazing apps strike your fancy? What makes them so special?

Are you ready? Fire up Photoshop. Fire up Xcode. Let’s build.

Bonus: Replace the words “Mac” and “Macintosh” above with the name of a platform of your choosing.