views:

635

answers:

6

It seems that Apple has so far gone the furthest of any mobile platform in creating a good all-around developer ecosystem (SDK, app distribution, monetization, etc). However, reading the comments from previous SO questions on mobile development (e.g. this and this), certain criticisms seem to pop up, such as the following:

  • Objective-C, though a nice language, is not really used outside of Apple products.
  • The development environment and tools do not match what Microsoft has to offer with Visual Studio and .NET.

So, I am wondering about the viability of Apple's ecosystem in the longer term (i.e. 2-4 years). If Windows Mobile 7 phones (projected to be released in a year or so) gain market share, will the iPhone development environment be able to compete with .NET + Visual Studio (plus whatever "App Store"-type distribution mechanism Microsoft comes out with)? Judging from what I have read about iPhone development, I get the impression that we might see gradual attrition of developers to Windows Mobile since most will prefer to develop with Microsoft's suite of tools.

For developers who have experience with either of these platforms, what are your impressions on this topic? Does the iPhone platform have long-term viability (versus Windows Mobile) that goes beyond its initial advantage of having more market share?

==

Edit: fair points about the advantages of the App Store. But I'm curious about long-term potential of the two platforms, and it seems only a matter of time before Microsoft comes out with its own app store (e.g. SkyMarket) that makes installation as easy as it is on the iPhone. (Though the iPhone's app store might prevail because it came first.)

+6  A: 

You are missing the point of Apple's toolset, IMO.

VisualStudio may have a good toolset, but Apple's toolset is good enough (and pretty awesome, IMO) to have enabled 15K apps with over 500,000,000 downloads. I'd say that bodes pretty well for the future.

The killer app for the iPhone is the AppStore. It is the sole way to get apps on the phone and is outside of the carrier control system. Try getting an app on a Verizon phone, for example, and you will soon find out what control means to a wireless carrier.

Discovery is web-based, so you can send someone a link to an app and when they load it, it goes to the page where they can install the app. Simple and elegant.

Objective-C's language quirks is a red herring. Any competent developer will come up to speed in a matter of weeks. Cocoa is an incredible framework.

Also, don't underestimate the power of controlling the hardware spec. Apple's control over the hardware spec is a boon for developers, since they can count on things not getting complex and fragmented, since it is not in Apple's interest to ship phones that don't comply to the iPhone SDK spec as completely as possible. When an OEM makes hardware to Windows Mobile spec, there are always "interpretations" of the spec which means the developer is left holding the bag between phone a and phone b and why doesn't my app run the same on both?

That's a big if often overlooked point in mobile. If there isn't one owner of the hardware spec, it easily become "write once, debug everywhere."

Genericrich
Apple's control over hardware is also a boon to Apple, since it's a *lot* easier to test and qualify only a couple platforms instead of dozens that are developed by 3rd parties. This allows a much faster OS cycle and platform refresh time, making the platform more nimble.
ctacke
And I'd ammend it to "write once, debug everywhere, *for all time*" since even if you test on every device before you ship, you can almost always count on a new device shipping *after* your software that will somehow cause your app to break.
ctacke
I would add the consistency of the interface elements. Most data-based applications look and feel pretty great with the default objects and even heavily customized tables and cells behave in predictable ways.
Rob Drimmie
+2  A: 

Funny, the viability of the development platform is really secondary to the viability of the delivery platform.

The best development platform in the world is pretty much worthless if there is no market for the products you can make with that platform.

The iPhone/iPod touch is an insular, "proprietary" product, but at the same time its selling a LOT of units. Even more important, it's selling units to people that like to buy things from the App Store. The App Store is a compelling selling point for many users.

So, basically, the viability of the dev platform is tied heavily to the viability of the platform itself.

Will Hartung
+2  A: 

This is really, really subjective since none of us have a crystal ball. I've been doing mobile and embedded development for a decade now, and I've played with most everything out there (you've neglected to mention Symbian or RIM, and at one time Palm was a major player too).

I'm been very disappointed with Microsoft's mobile "strategy" for the past few years - they seemed to look only to enterprise apps and developers. However they did a good job of creating first-class tools and the Compact Framework is one of the most solid products I've seen shipped out of Redmond (v1 was admittedly limited, but it was pretty damned solid for a v1, from-nothing delivery).

iPhone appears to be taking advantage of this and is beating Microsoft up pretty heavily in the consumer space. But you can't really expect that Microsoft (or any business in their place) would just sit still in the face of strong competition. I'm sure they have something planned (though even I have no clue what that plan may be). Will it be enough to recover? Who knows.

And is iPhone all it's touted to be? Well I'd argue that it's not near as open as some people seem to think. You're limited in what you can write, you're limited in how you can sell and distribute. You're limited in the tools you can use and the target hardware you can run on. Not the greatest environment. But again, will they remain like that in the face of likely competition from MS, RIM and now even Google? Hard to say, but I'd bet it's unlikely.

So who will win? I'm not going to take odds on any of them. We're already heavily invested, in both hardware and learning, in Microsoft's technologies so it's unlikely that we'll just abandon that. Still, we've already done some work and job bidding for iPhone work because we'd be fools to keep all of our eggs in one basket.

ctacke
+2  A: 

If you're writing telephone software like it was desktop software, you're doing it wrong. Palm used to have some good guidelines on how to approach developing for their handhelds, and that advice would apply just as well to a phone.

Since you're going to have to get into a different mindset, using a somewhat different language and different tools aren't going to be a big problem. Indeed, a different development environment might help you maintain different mindsets.

David Thornley
This is, in fact, one of the major problems Windows Mobile has had from the consumer perspective - they try to make it as desktop-like as possible, which makes for a pretty terrible phone. Many/most of the applications have the same problem.
Mark Bessey
+7  A: 

I don't think Windows Mobile is the iPhone's competition. As far as I can tell, there are four platforms developers should consider for consumer-oriented applications right now:

  • iPhone
  • Blackberry (with the new App Store)
  • Palm Pré (which will get an App Store)
  • Android (which will get an App Store for paid apps)

Everything else is a non-entity. Symbian and Windows Mobile may become relevant again, but as of today, they are not. There's no healthy market for software on these devices, and it's unclear to me whether a large part of the people who decide to buy Windows Mobile phones even care about third-party software.

As for the tools and languages, the differences are insignificant. It's just not an issue. Developers won't abandon a market like the iPhone's simply because they don't like the tools or the language.

What's more, Xcode is more than good enough (some prefer it to Visual Studio - I certainly think certain aspects of it are better than their Visual Studio counterparts), and if you know Java, C++ or C#, you'll learn Objective-C within a week at most. It's basically two or three new concepts, a slightly different syntax and reference counting. If you already know a few object-oriented languages, learning Objective-C is a non-issue, and if you don't, it's a good excuse to pick up some new ideas and concepts.

The real difference is in the libraries, and I personally vastly prefer Cocoa to the .Net libraries, which often require you to call through to pre-.Net APIs.

Perhaps in four years, everything will be different. Perhaps Nokia fixes Symbian for good and takes over the smartphone market. Who knows? You've got to make do with what we have today :-)

So my points would be:

  • Until Windows Mobile actually starts being a viable platform for third-party apps, ignore it
  • Instead, look at the Pré, the iPhone, at Blackberries and at Android Phones
  • Objective-C is just a programming language. It's pointless to even think about it too much. Any programmer can learn it within a week
  • Xcode has its weaknesses, but it also has its strong points and isn't really worse than Visual Studio
  • Cocoa is great
  • Four years is a long time, and nobody knows what will happen by then

Programming for the iPhone is a ton of fun, and you'll learn a lot of new things if you've never ventured outside the .Net world. Just pick up a good book, set aside a weekend, set a small goal (such as a small game, or a todo app, or something like that) and get coding. Even if you don't like Xcode, even if you end up not writing any iPhone apps, you'll come out a better programmer.

And if Symbian does win, the experience of learning to write code for the iPhone will at least have taught you how to get up and running on a new platform :-)

LKM
+5  A: 

"If Windows Mobile 7 phones (projected to be released in a year or so) gain market share...we might see gradual attrition of developers to Windows Mobile since most will prefer to develop with Microsoft's suite of tools."

Let's posit that VS and the CLR provide a better programming experience. EVEN SO, it is not at all clear that the "gradual attrition" towards WM would occur. "Programming experience" is only one factor that developers will face; existing marketshare and perception is another (think about Amazon and eBay or, for that matter, iTunes' MP3 store).

You talk about the "longer term" as being 2-4 years. In that time, is there any chance of WM7 gaining LARGER marketshare than Apple? Not realistically.

Even if we take the far horizon of your timeframe, is it feasible that iPhone development will have COLLAPSED in 4 years in the face of a vastly-superior programming experience for WM7? What does MS have that's conceivably a platform-killer against the iPhone? C# 4, DLR, VS2K10? None of those things would be sufficient. What might (might) do it is Azure.

But I would argue that if you think Azure is an iPhone platform killer, then you have to give equal attention to Google / Android.

All of which is to say that, from a risk-management perspective, the least risky choice is clearly the iPhone. If you want to mitigate the risk of being wrong, factor your Cocoa programs well enough that you can re-implement them in, say, C#.

Larry OBrien
Interesting reply; +1. But how would Azure play the role of an iPhone platform killer?
RexE
+1 - Very true. I think one of the open platforms will succeed in rising up in the next few years, question is will it be Android or WM7...
Mat Nadrofsky
...that being said, or some unknown.
Mat Nadrofsky