29 April 2008

By Example

Microsoft's recent introduction of Live Mesh is a perfect example of a core difference between Apple and Microsoft. Apple is, at heart, a product company. Microsoft is, at heart, a platform company. Both produce products and platforms, but the way they approach the problem and communicate with developers is decidedly different.

With Live Mesh Microsoft says, "Come, build on our platform and do amazing things!" What is the oft cited example for using Live Mesh? Multi-device synchronization of data. Now, to be sure, this is a big and very hard problem to solve. In fact, I really wish Apple's Sync Services were much, much better, but do you wake up in the morning thinking, "Man, I really have a Multi-device synchronization problem?" Most people don't. What they do think is, "Man it's great that when I put stuff on the web, I can get it wherever I am. All I need is a web browser." You see, syncing folders or sharing data across devices isn't top of mind in the way a developer thinks about it. Microsoft's challenge is mapping their platform to real problems in a persuasive way.

Contrast this with Apple's normal product focused pattern. First they release a product that solves a real, tangible problem people have. Say, "I hate it that I have to carry around my iPod and my Cell phone everywhere!" or "Man I wish I could buy that cool song I just heard, right now." or "I have so many digital photos, I wish there was an easy way to do something cool with them." or "Man I hate it when I loose files on my computer, I wish I could just go back in time." To solve these problems Apple, like Microsoft, has to build a platform, but this platform is built for a product first, which they use and improve. Then when they talk to developers they can say, "Did you see this cool thing we just did? You can do the same thing or even something better! Here's how we did it..." It's the difference between saying, "Here are the tools, let me show you how to use them." and "I used these tools to do this great thing. Let me show you how and maybe you can do the same thing." Ultimately, it's leadership by example.

Another great example is Apple's use of the Cocoa APIs in their own applications. Apple builds amazing products and then is able to say to developers, "We used the same APIs available to you today!" Contrast this again to Microsoft. Windows Vista was released with some remarkable new C# APIs. Many of them very cool and very interesting, but what is Microsoft Office written in? C and C++. What APIs does Office use? A multitude of Office only APIs and libraries shared among the applications. Does this hurt C# and the new "WinFX" platform "street cred"? I think so.

Ultimately, Apple and Microsoft are trying to solve many of the same problems, but the path you choose while logical to you, may not be so logical to those you most need to persuade and inspire. No one can argue with the results. For me Apple's "solution first, platform second" approach makes for easy understanding of new ideas as well as providing the activation energy needed to try something new.


Anonymous said...

Nice points. When Apple introduces a new piece of technology to their developers they almost always have an application that points to its benefits.

For example, what could be less interesting on the face of it than Bonjour. Most developers can't possibly see what the benefit of locating other devices running the same application could be. But Apple introduces Bonjour (then Rendezvous) with an iTunes demo. Other music libraries magically appear in your iTunes nav. Suddenly it's in iChat and iPhoto and printers are announcing themselves to the network using it.

Anonymous said...

Not to defend Microsoft at all --- I am a devoted Mac user, resorting to Linux in cluster environments, living an entirely M$-free life --- BUT... one drawback to the "application oriented focus" that is abundantly clear w/ Apple is that they often fail to factor out common functionality in the appropriate way, missing opportunities for greatly enriching the platform. The (unfortunate) design of Spotlight, of filesystem eventing, the Address Book and Calendar APIs, Mail internals, the tendency to shove things into Finder (smart folders) that should live in the filesystem, the hacky design of Time Machine from a shell interface perspective, and so on are clear indications of this sort of thing.

Google has this tendency, too. The lack of a unified storage / tag namespace and mechanism across their apps is, even from a pure-user perspective, entirely annoying.

Operating systems *exist* to factor out common functionality! That's what platforms *do!* I'd like to see platforms tackle the search, versioning / backup, sync, dynamic search / virtual folders, tagging, and PIM problems from *more* of a platform perspective than they are; doing so would enable fundamental new apps, not just prettier versions of the same (sometimes broken) workflows we've been using for years.

$0.02, YMMV.


joe said...

along the same lines (i think i've read this elsewhere in the past), Bill Gates has been talking about "the digital future" forever. You can find keynotes of him in the early-mid 90's talking about how "in a few short years, your house will be alive. your refrigerators will email you a grocery list, your TV will talk to your computer", blah blah blah. All good and admirable goals, of course, but guess what - hardly any of that has happened! MS throws out platforms left and right, but it takes years for people to adopt it, build communities on it, etc, then by then all the companies that want to actually sell products on the platform are too small to gain any traction in the marketplace, or the platform is already out of date.

Take computer-TV integration. Microsoft has been talking about this for years, but they haven't done jack about it. I guess the closest they have is the XBox extender or whatever that is. But instead of talking about it, Apple just introduced the AppleTV. It's not a perfect product by any means, but to someone who can't or doesn't want to buy an XBox and get it networked, or buy an expensive entertainment PC, or build one from scratch with MS Windows MCE, they can just go get an AppleTV and it's plug and play.

My point, just like yours (and daniel's) is that MS talks, but Apple does. They get products in the hands of their customers that makes their lives easier.

Anonymous said...

"My point, just like yours (and daniel's) is that MS talks, but Apple does. They get products in the hands of their customers that makes their lives easier."

I think it was John Dvorak that once said:
Microsoft blogs, Apple codes.

Anonymous said...

Interesting post, and somehow related to an observation that I made over the years of using both Apple and Microsoft products, I've found that Microsoft has a habit of abstracting things to death in order to please everybody. This habit makes sense if you are putting out a platform, as you describe.

This tendency is everywhere. Try playing a simple movie using DirectX. You can do it, and you can do a *lot* of wonderful things with DirectX. But playing a simple movie is easier in QuickTime.

Another example is Bonjour, mentioned by Daniel earlier. It works beautifully. But no, it's not abstracted enough for Microsoft, so they developed they own auto discovery / zero conf software that has printers returning an incredible amount of information about themselves. It's all useful to someone, I'm sure.

Anonymous said...

Or is it lack of creativity (on MS's behalf?)
MS fails to provide solution - VIsta is good, but not good enough.
Office is good..but not so good enough.

MS wants to take a shot at bigger problems and ends up screwing itself, while Apple is happy with say a 2-4% PC market share..

Its also a qn of mass customization vs. staying niche

Mark and Cyndy Weiss said...

There is one other difference that makes sense to me between Apple and MS.

When MS comes out with products that are substandard, in a way, they pander to their developers. In essence, "We write junk apps, but you can do much better" is the message, kind of encouraging their developer base, stringing them along, stick and carrot.

Some would say that Apple's apps, while good examples of using their API's are also examples of Apple competing with their own developer base. MS can ask the question, "When is Apple going to see a popular app and write their own and put you out of business?" Veiled threat is very effective. We see it all the time in our current campaign season for example.

Today's small developer can be tomorrows big success. You just don't know which small guy is going to make something really big happen. But if the small guy is convinced that the big guy is posed to take their app away from them, they are not likely to play that game. On the other hand, if the small guy is convinced he can do better than the big guy, he is more apt to risk. So, MS may be leveraging their blundering for a couple of reasons. 1) It makes business sense and 2) they really have no choice because the weight of their own legacy code has them stopped in their tracks, aka Vistahorn.

Joel Esler said...

You've been able to do things like this with iDisk and .mac for years with macs.

Anonymous said...

Your point about MS Office not being written in C# and not using WinFX is invalid. Doing that would require a huge amount of effort and time, rewriting everything, debugging the whole thing, and so on. It's simply not practical.

There's also the problem of backwards compatibility. Apple simply doesn't really care about that, and old apps in general don't work on newer OSX versions.
Microsoft on the other hand does support older APIs.

Of course, you might or might not agree with that.