Meeting the “Minimum Acceptable User Experience”

While working on file_wrangler_2 I’m constantly amazed at the number of new technologies I need to learn. There is a bar that is yea-high (when I say “yea”, I’m putting my hand about eye-level) that effectively sets the level of expectation Macintosh users have for their software. Apple has raised that bar considerably, by adding polish and sheen to every tiny aspect of the user experience, often creating new concepts in user interaction for a standalone program. We look at Garage Band vs. iTunes and see that they are not afraid to let function dictate design, even if it is unlike anything we’ve seen before. I don’t really have a problem with this.

What I can say, as an independent, solo developer is that in order to give Macintosh users the experience they have grown to expect out of their software requires one person to know a LOT of different things. This both fascinates and frustrates me as a Cocoa developer as a few key companies and products (let’s start with Apple on that list) have raised the minimum acceptable user experience (MAUE) to almost absurd levels. Macintosh and iPhone/iPad users expect a beautiful, polished, “lickable” icon, multi-lingual support, and an interface that is intuitive and even a little bit fun. Objects are expected to look “real”, so if there is a tuner knob it should look like a photorealistic tuner knob, and wood should not repeat its grain pattern and look shiny and hand-crafted, and the pages of books should bend and fold like real paper. Like real paper! So now, if I want to make a killer e-book reader with features I’ve not seen in any other program, I have to know the physics of page turning just to compete with my lowest competitor. In this regard, the graphical polish has become a key feature.

This, for me, is a bit of a problem. (Interestingly enough I would not say users expect “robust documentation”, which I believe illustrates my point exactly.)

Think about how much time/talent that takes for the graphic assets alone. Oftentimes these user expectations are not easy (and even impossible) to make with Apple’s pre-built interface tools. Look at the scrollbar in iTunes. That isn’t built into the developer kit, that is a custom graphic set applied to the NSScroller class. I now need to understand this class and learn how to create custom graphics and stitch them together if I want that in my own app. This is a non-trivial amount of research and experimentation for a one-man operation. More to the point, using ONLY Apple’s pre-built interface tools can make an application look rigid, stuffy and stuck in the past.

This, for me, is a bit of a problem.

It isn’t that I don’t have a great deal of fun digging into multiple APIs to find out how to animate, filter, draw, preview, etc…, nor do I dislike the learning process (as evidenced by my last blog post). However, meeting the MAUE does significantly increase time-to-develop and if you’re one man working alone, that time is incredibly important. Can I really afford a four-month development cycle to balloon to six months in an effort to meet the MAUE. That’s the difference between three software releases and two, which could be the difference between “barely surviving” and “drowning”. I can’t afford NOT to meet the MAUE, but it also severely restricts my ability to get products into my users’ hands in a timely manner.

This, for me, is a bit of a problem.

It also begs the question of, “Can a one-man operation succeed any longer?” Can a two-man operation succeed? There are examples of this happening, even today, but without a big hit (like “Delicious Library” or “World of Goo”) it can be more-than-a-little daunting. Over time I’m certain I will develop internal code libraries and have a deeper understanding of the “important” APIs to reduce the time of reaching the MAUE. However, I am surprised almost daily about the breadth of knowledge necessary to achieve what seems to be such a narrow process as “renaming a batch of files.”

Leave a Reply

Your email address will not be published. Required fields are marked *