How I learned to stop worrying and love Apple's iThing developer restrictions

At first blush, Apple is confusing. On one hand, I like the polish of their products. Apple makes some of the very finest producty products - shiny, smooth metal objects that have computers in them. I love that. On the other hand, Apple is being very restrictive about what I make and, now, how I make it.

As a developer, I want to play with the insides of these metal objects. I want to break it apart, see how it works, and write code that runs on it. Part of the reason is that I see my software as a shiny metal object, and Apple promises to help me create that effect, both inside and out. In fact, not only does my app get to run on a shiny object, my app can be purchased through a shiny store. So the entire user experience is shiny! This is an opportunity that no other software platform gives me. It is absolutely unique.

It doesn't bother me that Apple is restricting it's developers on how they write their software, because the best mobile apps are ones written for bare metal. It's the only way to squeeze the most performance per watt from an app. For years, programmers have been decrying the fact that we just push around abstractions, and have lost the art of Deep Knowing, and rely on ever increasing PC specs to make up for sloppy coding practices. Well, guess what: now Apple is forcing you to know their devices inside and out before you write code for them. Everyone already knows you have to be a low-level programmer to write the shiniest possible apps, and Apple is simply forcing us to code The Right Way.

Of course, it's the uniqueness of Apple's product (not just the iThings but the entire shiny end-to-end user experience) which gives them the leverage to do it The Right Way. But since it's really just forcing us to do what we already know is right, why worry?

And also, of course, Apple gleefully realizes that as programmers learn the iThing environment they will be loath to abandon their hard-won skills and may even be tempted to write native apps for OSX.

No comments: