I recently heard an excellent talk from Windows Mobile Device Application Development MVP Chris Craft about development for Windows Phone 7. Although he did not go into detail about how to put an application together, he did spend nearly 90 minutes explaining the important things to be aware of and fielding some very tough and in-depth questions from the audience. I'm sharing what I learned because it may help you decide if Windows Phone 7 development is a path that you want to pursue.
The good news
There is plenty to like in Windows Phone 7 from the development perspective. The location APIs make a lot of sense and support a pull model (where you read current values) and a push model (where you register event handlers to detect things such as moving more than a certain distance). The push model is a great way to conserve battery power, and it allows you to not write large amounts of potentially complicated code. The fact that applications are written in Silverlight (which is becoming increasingly well known) is a big plus as well; this allows developers to use their existing .NET knowledge and any XAML skills they have. In addition, Silverlight/XAML is capable of some really slick looking interfaces, and there is already a ton of third-party components for Silverlight. Plus, Windows Phone 7 works with XNA, which is a huge benefit to game developers. There is the requisite accelerometer and multitouch support, as well as access to DeepZoom, which can do some nifty things. Applications are sandboxed, so the apps cannot see each other's data or read the system files.
The interface has some interesting concepts in it as well. The interface is designed to be very "glanceable," which is a great idea for people who multitask all day long. The interface design includes "tiles," which can be placed on the desktop and updated with information by applications. In addition, applications use "panorama navigation," where the current view is a slice of the total view, and the user can scroll left and right to see the rest of it; this is definitely an interesting idea, and it leads to some very smooth transitions between screens.
The bad news
Unfortunately, there is some bad news, and much of it was quite surprising to me. It stunned me that you must either deploy applications through Microsoft's app store as a public app, or you have to connect the phone to a PC and use Visual Studio to deploy an app to the phone. I can picture the look on an IT person's face when you tell him that he needs to deploy like that. The only saving grace here is that the Express editions of Visual Studio can perform the deployments, so at least you won't need to spend big bucks on Visual Studio for the system administrator just to install internal Windows Phone 7 apps.
That was the really bad news. There were a number of other less awful shortcomings, which include:
- The only language that will work up front is C#; VB.NET developers need not apply.
- The "tiles" are not interactive like the dashboard widgets on Android.
- There is no SQL Server Compact Edition or other built-in, lightweight database.
- There is no built-in JSON serialization.
- Applications cannot access the video as it records (so you can't do a real time videocast, for example).
- The Active Directory integration seems limited.
- There is no true background processing; it uses a push notification model to wake up the application.
Microsoft knows that some of these issues are deal breakers for developers, particularly enterprise developers. Microsoft has made it really easy to create gorgeous games and Twitter clients, but it's a lot more difficult to write something like a system for a sales rep to handle sales while potentially being offline. My guess is that Microsoft is planning to address at least a few of these issues in the near future; I am sure that better multitasking and SQL Server CE are on the way, but who knows when it will happen. However, Microsoft may not plan to address all of these issues; for instance, there are open source JSON serializers that are already popular, so there may never be built-in support. And the titles are not interactive to save battery life.
It really surprises me that Microsoft seems to consider enterprise developers to be less important than consumer-oriented developers because enterprise developers are currently Microsoft's last bastion of support in mobile. By prioritizing consumer-oriented developers, Microsoft is essentially starting fresh in the marketplace. By breaking backwards compatibility with Windows Mobile 6.X, Microsoft was doing this anyway, but it's really hurting the enterprise developers who chose to remain with the Microsoft platform and wait patiently for Windows Phone 7 instead of jumping to Android or iOS.
I think this is a mistake that will cause a great deal of ill will for many developers, which Microsoft can hardly afford right now. When you are asking developers to commit to a "clean slate" platform reboot like Windows Phone 7, you need every developer on your side that you can get, and missing the mark for your core enterprise base in favor of catering to the already crowded consumer-oriented field could be the Achilles' heel for Windows Phone 7.
Android was able to succeed because iOS was the only consumer-friendly OS out there, and it was limited to one carrier. If Apple hadn't gone exclusive with AT&T, Android probably could not have found a market. Now that Android has filled that gap, I find it hard to believe that Windows Phone 7 will be so compelling that it will make a significant inroad on that side. And by leaving the enterprise advantage in the past, I find it hard to believe that Windows Phone 7 will make significant progress against Android and iOS, which are quickly gaining momentum there as well.
Bottom line for developers
My take on Windows Phone 7 for developers is a bit of a downer. I really like the platform, and I think there are some good things about it for users and for developers, but I suggest a wait-and-see approach to any kind of development that requires a substantial commitment of resources. Sure, you might consider spending a few weekends putting together a cool little game or app and try to be the early winner in the app store, but betting the farm on a Big Application would carry an awful lot of risk until Windows Phone 7 proves that it is a contender.
More Windows Phone 7 coverage on TechRepublic
- Windows Phone 7 preview (photos)
- Inside the making of Windows Phone 7 (images)
- Windows Phone 7 enterprise features overview
- Windows Phone 7 cheat sheet
- Windows Phone 7 Series wish list
J.JaDisclosure of Justin's industry affiliations: Justin James has a contract with Spiceworks to write product buying guides; he has a contract with OpenAmplify, which is owned by Hapax, to write a series of blogs, tutorials, and articles; and he has a contract with OutSystems to write articles, sample code, etc.
---------------------------------------------------------------------------------------Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!
Justin James is the Lead Architect for Conigent.