I've been ranting for quite a while now about the importance of enterprise developers to the mobile market. Last year during JavaOne, I focused on Sun and Java, and then later Symbian and Nokia. The idea is that Microsoft has an integrated suite of tools for corporate mobile developers and these other guys just don't have anything nearly as compelling and I keep wondering what is being done about it?
I'm bringing this up again because of an article in the Los Angeles Times entitled How Microsoft Got Smart About Phones which gives a brief history of Microsoft's entry in the mobile phone market and included this quote near the end of the article:
Microsoft will benefit more when corporations decide to equip their staffers with smart phones, just as they did with hand-held devices, said analyst Richard Windsor of Nomura Securities. Such corporate buying could amount to 25% of the smart-phone market, and Microsoft should be able to take 80% of that segment, Windsor said. "It's a no-brainer for the corporate customer."
I'm sure this article is a direct result of heavy Microsoft PR and the MDC a week or so ago - it's a fluff-piece with no real news and ends by making it seem like Microsoft will be the inevitable winner in the space. ("It's not a sprint, it's a marathon, we're pretty good at marathons.") Ugh.
But regardless of how shoddy the reporting is, the quote from this "analyst" (read: Microsoft shill) is definitely the prevailing wisdom both inside the corporate walls and out. Which is really dangerous. It was stressed to me just the other day the importance of the corporate market to Nokia's Series 60 plans. Basically the enterprises are willing to spend the big bucks on handsets and are an intricate part of any manufacturer's smart phone business model. Giving up the corporate market to Microsoft would be a serious hammer to Nokia's bottom line and the obvious death knell of Symbian. Both these guys *need* to have an answer to Visual Studio and .Net Compact Framework. It's as simple as that.
I think I know what the answer is to .Net CF and that's J2ME Personal Profile. But there's others that disagree with that. Fine. The fact remains that from what I've seen by all the manufacturers out there, there are only two classes of development tools, both aimed at developing apps for consumers only. The C++ toolkits are for the hardcore low-level developers who are creating 3D engines or native games or utilities. The J2ME MIDP toolkits are for developers who want to create games and other light apps that run on the broadest level of devices. Neither is good at rapidly creating PIM-centered, form-based applications that talk to back-end web services which most corps need. Yet Microsoft's tools are all about doing exactly that.
I got a great demo of Nokia's Lifeblog from Christian the other day - it's a clean app, looks good, works well. Nokia has obviously spent (and is spending) considerable resources to make sure it doesn't suck. Now, where is the developer equivalent? Why isn't there a great IDE and integrated development environment arriving from Finland as well? Not to just pick on Nokia (because I actually have met people who work there now, so I feel the need to be less harsh :-) ), but the entire industry. Where are the toolkits for corporate developers from Motorola? Samsung? Palm? Where's the competition for .Net CF?
I'm beating this drum because I'm exactly the type of developer that's being neglected by these guys. I don't do C++ development and feel really restricted by MIDP. For programmers like me, there's not really other options. These guys need to get off their asses and start addressing the needs of my type of progammer because there's gazillions of us out there and we are going to be the ones that sway the decision makers on what platform to invest in. And once a corporation decides on a platform, they're not changing. Think of a company the size of Coca-cola, over a five or ten year cycle they will be spending enormous amounts of money on the platform they standardize on. Thousands of handsets, constant churn of employees and replacement devices, upgrades, maintenence, etc. As the decade closes and corporations realize how vital mobile data is to their business, this number could be in the tens of thousands per enterprise and this would trickle out to all their business partners and market ecosystem as well.
The corporate market isn't something these guys can ignore for long, and the lowly developers are the key. No decent CIO/CTO out there is going to standardize on a platform he knows his techies can't support. I really wonder if the guys at Symbian *get* the fact that no Fortune 500 company will *ever* create a business app using their C++ APIs. It doesn't seem like it - it seems like Symbian wants everyone in the world to just program using hacked-together gnu compilers and Perl scripts that target multiple platforms, I swear. No, it's just not going to happen. CTOs don't want the training costs, the adoption curve problems, etc. that comes with a native solution. And when a slick marketing-driven company like Microsoft comes in with a click-click-click demo of how easy it is to create mobile apps with their .Net toolsets, CTOs are going to sign on the bottom line. I've seen in happen before during the client-server hype (VB over PowerBuilder and other tools) and I've seen it happen during the groupware wars (Exchange over Notes or Novell) I've seen it happen during the internet revolution (integrated IIS over Java) and I'm sure I'll see it happen during the mobile wave as well.
Part of the problem is just that the best solution is Java, yet Java is a threat to everyone except Sun. There's no lock-in and there's an extra fee for providing it as an option, so why should a company like Nokia put any real resources into Java? Better to support MIDP, which is a lowest common denominator and then force developers into lower-level APIs if they want more functionality, right? Wrong. That's total hardware-level thinking, but mobiles are quickly turning into a software platform just like the PC. And what wins in software? Developers. Lots of developers.
So fine, Nokia and Symbian and Moto and the rest don't want to *really* support Java (i.e. start promoting Personal Profile as a solution) then they need another solution. Nokia or Symbian should just buy a company like AppForge outright. Motorola should be pushing CodeWarrior to produce something besides an IDE that hasn't had any substantial changes since 1994. And those companies who think that Linux is the way to go need to be thinking along these lines as well: cool, you're using Linux, now what? Maybe Borland should pull Delphi/Kylix into the mix and create Mobile Pascal (TM) Hell that's it! We need Mobile Pascal to save us! It's not Java, it's not C++, it's not Microsoft, it's got a great IDE and a zillion developers who learned it in their CompSci 101 classes. That's it! I'm a genius! Someone get on it (and don't forget to send me a check)! Just remember you heard it here first.
Okay, no seriously, Perl, Python, Pascal, OPL, Haskell... it doesn't matter. What matters is that there's support for enterprise developers and a focus on their needs, with an eye towards competing with what Microsoft is doing with Visual Studio and .Net CF. Anything short of this is a real problem. So in the coming months and years as we see announcements from the various manufacturers and Sun and Symbian concerning their mobile development stack, I'm going to constantly be coming back to this key idea: "It's the tools, stupid!" Do their software tools meet the needs of enterprise developers and compete with Microsoft's dev platform? If not then it'll be obvious why Microsoft ends up with 80% of the corporate market like the shill above said, won't it?
Okay, off to bed.