Skip to content

The Genius of Apple – Users First

April 18, 2011
tags: ,
by

There are a lot of what I believe are misconceptions in the developer community about how Apple runs its mobile (iOS) business. I know, because I used to hold and promote many of these ideas myself. I think a lot of these ideas are natural responses to Apple’s approach to the market, but I also think a lot of people miss what’s really going on.

The basic misconception is that Apple makes it hard on developers because they don’t care. The complaints are legion:

  • iOS programming is difficult, and Apple doesn’t care
  • Android has garbage collection, why can’t iOS?
  • Apple hates the web, wants everyone locked into their proprietary tech
  • App Store approval is a big road-block that exists only to service Apple’s need for dictatorial control

The most recent example of this complaint came in a “Letter to Steve Jobs” blog post over at TechCrunch. There’s nothing wrong with asking for garbage collection, but there is something wrong with asking for it without realizing why it’s missing.

A bit of history

I have been doing 95% web development for the last 9 years, right up until December 2010. Last spring I helped my company develop our first iPhone app, Vodpod for iPhone. I probably spent about 4 teeth-gnashing weeks doing iOS development. I came away with a pretty dim view of the iOS platform from a developer’s perspective.

But then last December my company embarked on the development of our new app Showyou. This was a brand new app, and a big team effort. We were making a strategic commitment to the iOS platform way beyond our previous efforts.

And so I spent another 6 weeks clawing up the iOS learning curve. Coming after doing Ruby on Rails development for 4 years, writing Objective-C for iOS seemed primitive and horrible. Wrestling with memory management, the XCode environment, UIKit and its notorious table views, the static/dynamic language limbo that is objective-c, etc… I was around in the 90′s when NextStep was introduced, and the 20 year old lineage of iOS is right there in your face.

But then, finally, I got over the beginner’s learning curve. And then once I finally got the “What” of iOS development, I started to feel like I was finally understanding the “Why”.

I think the basic “Why” of iOS development goes back to core Apple philosophy: users come first. I want to explore some of the implications of that philosophy on the development process.

Embrace the Constraints

Rock music is an incredible limited art form: 4/4 time signatures, 4 standard instruments, 1-4-5 chord progressions. And yet within these very narrow constraints blossoms a huge range of incredible music. I think we can make an analogy between artistic constraints and the constraints of mobile device app development.

The fact is, the iPhone and iPad are underpowered computers. They have limited storage, limited memory, (relatively) slow processors, slow network connections, and most importantly, small screens. And thus to make a great application user experience for these devices, you have to design with all those limitations in mind.

And this I think is where the genius of Apple comes in. They aren’t trying to hide those limitations from the developer. On the contrary, they are constantly exhorting you to understand and embrace those limitations. “Design for one task at a time”, “make buttons easy to press”, “use animations to show the transition from one view to the next”, “be miserly with memory”, “keep your interface responsive”, and so on. Their message is simple: Our top priority is to provide a great end-user experience, not to make your life as a developer easy. It’s not to say that they don’t want it to be easy to develop applications. Clearly they have invested heavily in documentation, tutorials, the XCode toolset, the simulator, and so on. But rather than focus on making it simple and easy for you to create a simple – and probably poor – application, instead they have focussed on helping you make a great application.

The missing GC is a feature

And thus to garbage collection. It’s great to never have to worry about memory allocation and deallocation. Trust me, I’ve been using Ruby for 5 years, and Java for 7 before that. But in a great mobile app, on these limited devices, I think its reasonable to predict that a garbage collector is not going to work as well as managing memory yourself. And in the overall scheme of app development, its not that big a hit. I’d guestimate that we didn’t spend more than 5% of our development time worrying about memory management. And in my mind we spent a lot of time worrying about memory! Our 2D grid of video thumbnails is pretty huge. In the early incarnations we tried to draw the grid as one big view. No dice. Just trying to draw the tiled background image caused the device to crash. So I spent a lot of time worrying about when various views would get deallocated.

I think its totally reasonable to debate whether or not a GC should be included in the mobile toolkit. Maybe Android has proved that it can be done without hurting the user experience. But I think if you come to understand Apple’s philosophy towards their platform, then you will understand why they’ve excluded GC from their mobile devices.

The App Store is for users

I have had a strong feelings about the App Store process for a long time. I am a huge fan of the open web. I believe freedom of choice, and a level playing field. And I think the openness of the web has been critical to its success. So on principle I am not a big fan of the walled garden that is the App Store.

But I believe you can start with the “users first” principle and arrive at the App Store and its process. We can argue about the particulars, but I think you have to admit that the App Store provides an amazing channel for developers to reach a worldwide audience of paying customers. You can say that all of that is doable on the web at large, but I can argue that every rule in the App Store contributes to making it a more effective developer->user market than the open web.

And I will liken the App Store to the approach Apple has taken with the development environment: the App Store is oriented towards exposing and supporting great apps, not just apps in general. It’s a philosophy that says “What users need is 50 great apps, not 10,000 average apps”. We can argue about whether that is the best approach for end users, but don’t argue that the process isn’t good for the average developer, because that isn’t the priority.

Apple and the web

I have come around to disagree with the notion that “Apple hates the web.” I do however, tend to think that Apple either doesn’t completely “grock” the web, or maybe just doesn’t appreciate its strengths. (Q: why can’t mobile Safari cache a web page?) I do think they had great insight to realize that existing web sites were not going to provide a good experience to users on mobile devices. No matter the technology, I’ve come to believe that you have to build specifically for the mobile device. Expecting to shrink down desktop-targeted web pages has clearly failed as a strategy for mobile apps.

This is not to say that we won’t see great HTML5 mobile apps – I believe that we will. But the great apps will be designed for mobile devices. This is another example where you can derive the Apple position just as easily from “users first, embrace the device” as from the notion that Apple hates the web.

The Philosophy

Apple’s approach reminds me of David Heinemeier Hanssons’s theory of opinionated software. Apple’s products, including their processes, have a distinct point of view. I think a large part of that point of view boils down to:

  • Users come first
  • Simplicity is everything
  • Embrace the constraints of your device

For developers, this means more work. Apple is challenging you to work harder to build better apps for end users. Making your life easier is not their #1 concern (it’s probably not even #2 or #3). It can be painful, but the end users will tell you that its worth it.

Just like religion, there’s no point in arguing with someone over their philosophy – you either agree or you don’t. And if you want to play in the Apple ecosystem, better to spend more time understanding that philosophy than complaining about it.

Advertisement
13 Comments leave one →
  1. April 18, 2011 10:39 pm

    I’d agree it’s difficult for developers to pull themselves out of the frustrating weeds of memory management and approval processes to consider what Apple’s goals are for the non-techie, average consumer: intuitive, responsive, consistent, stable, easy interfaces from a trusted source.

    Like it or not, everything else — the developer platform with its limitations and restrictions and controls — stem from these goals.

  2. April 19, 2011 10:09 pm

    “Apple hates the web, wants everyone locked into their proprietary tech”

    Good point, I was wondering why they bought html5.com they must be trying to ‘proprietarize’ the open web.

    Sneaky Apple always up to no good!

  3. scottp permalink*
    April 19, 2011 10:20 pm

    Hmmm…ya, you might want to go back and read the rest of this post.

  4. tmcdee permalink
    April 19, 2011 10:42 pm

    First: I agree wholeheartedly that it’s Apple’s garden and if developers don’t like the walls they’re free to leave; Apple should be allowed to do what it wants in that realm and devs would be better off figuring out how to navigate the rules versus complaining [too much] about them.

    That said, I disagree that “users come first”. It’s Apple who comes first. The recent IAP mandate was purely Apple coveting the revenues of developers and pulling the carpet out from under them because they could. Forget about 30% rev share or any percent… it was the forcible disruption (and in some cases, destruction) of already-been-built programs that threw both developers and users under the bus. Not for the users’ sake but for Apple’s.

    Of course, it’s in Apple’s best interest to keep users near the top of their priorities but it’s either naive or disingenuous to assert that their policies are “users first”-based. Luckily enough for Apple, developers have a certain tolerance for being pooped on so they can survive some level of bad behavior. Unfortunately the first developers to bail are typically the best ones and *that* is not user-centric. Of course, Apple will survive and do just fine.:)

    • headbiznatch permalink
      April 19, 2011 10:51 pm

      Hear, hear. Read this AFTER my reply :).

      • tmcdee permalink
        April 19, 2011 11:12 pm

        I do think the essence of Scott’s post (from my interpretation) remains true that developers do not and never will come ahead of users. Doesn’t lessen my frustration when I notice tire tracks across my chest when Apple’s decisions thrash me as a user, much less as a developer and then claim it was all in my best interest. I like being treated like an adult. :)

  5. headbiznatch permalink
    April 19, 2011 10:45 pm

    Apple is not interested in the “best user experience” or the “best developer experience” apart from what affects their bottom line. They are interested in the “most profitable for Apple” experience. They are no different than Microsoft, Google, Oracle, HP, etc. etc. You are not their “consumer of influence” unless you are the CEO, or begrudgingly, a shareholder. I say begrudgingly because they have an established history of contempt for actual users outside the controlling group’s circle of friends. They have cultivated a sycophantic culture and it clearly works for them, so don’t be fooled into thinking they care one iota what you, as a user OR a developer, think. They are proud of the fact that they do not and they profit by catering to users and developers who can accept being told exactly what to do.

    • Alex M permalink
      April 19, 2011 11:12 pm

      Pointing to the fact that companies are in business to make money doesn’t add anything to the conversation. Yes, business exists to make money.

      Part of what defines Apple’s brand and attraction to its products is the user experience, is it not? Therefor user experience is a huge part of Apple’s bottom line – a critical part that if overlooked could ruin their entire brand.

      • headbiznatch permalink
        April 19, 2011 11:36 pm

        It certainly does add to the discussion to point out that saying “Apple cares about users, thus your complaints about their practices are missing the point” is “begging the question”.

  6. April 19, 2011 11:00 pm

    Garbage collection has absolutely nothing to do with “users first” . Great user experiences can be done with or without garbage collection; they can be done with or without C, C++, Java, .NET or any other technology for what matters. Apple does spend a lot of time focusing on the user, and that is great, but that is not an excuse for some technical decisions like GC. Everything that can be done in a garbage collected language can be done in a non-GC’d one.

    If you want an example, look at MonoTouch: same platform, same runtime, pretty much same performance, and a real runtime + GC. The really small (5-10% at most) performance hit has mostly to do with the fact that objects have to be marshaled because Apple doesn’t support any GC in the first place, not the GC. You can disable the GC if you really want, actually, although I never had to do that.

    The reason GC is not in iOS is because Steve Jobs thinks NextStep is the greatest thing on earth, and he’ll never give up that other platforms created better development tools than his beloved company. It’s a purely political decision. Apple is actually now working on MacRuby for OSX, and it’ll be included by default in OSX. That DOES include a GC.. So how would you explain that? They stopped focusing on the user? I don’t think so.

    • guy permalink
      April 20, 2011 7:08 am

      GC exists in Objective-C, on the desktop. it has for years. so much for your “political” argument.

      GC does not exist in iOS, currently, because collectors have consequences. you absolutely pay for it, one way or another. it’s never free, pun intended.

  7. Andrei Zaharia permalink
    April 19, 2011 11:11 pm

    Great blog post ! :)
    And I must add to the App Store idea and process, I dont think an app store can be embraced by the users when they dont know what they get, I’m talking about security here, Apple takes time to test, look for bugs, look for code that will steal the user information from our trusted devices. Thats why we need a closed system, someone must trusted when you download an app. And the part that is not nice for apple, is that someone my be held responsible for any damage the app can do.

    Thank you !

  8. scottp permalink*
    April 19, 2011 11:22 pm

    @Edwardo Objective-C on Mac OS X already includes garbage collection. They’ve made a conscious decision to omit it from iOS, at least for the time being.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.