After having several discussions at CodeCamps, seeing the debate on Twitter and even the comments on Charlie Kindel's recent post "Hey, You, Get Off of my Cloud" on the Windows Phone Developer Blog, I felt compelled to answer a few of the points that quite a few people, including quite a few the mobile developers that I think are brilliant, seem to be missing.
Complaint #1 - "All of the work I have done for the previous Windows Mobile platforms has been wasted." Well, if you're complaining about having to ditch embedded C++ or embedded VB and their associated handicaps, I respond with a resounding "YES!" (which also means you wrote no managed code at ALL for mobile devices). If you have written managed code (and aren't living in the 90's anymore ), but can't adapt anything you have written for any other platform to a new one, again yes, but in that case you are learning *every* new technology from the ground up, and I suggest you take up a new line of work. As you can see, I *hardly* think that is the case. Are you giving up the "Ability" to have your program sleep in the background and crash the phone constantly? Yes. Are you giving up the "luxury" of managing thread pools on your own? Yes. What's that, you LIKE writing interop code and dragging along legacy code for the next 10 years? Yep, you'll be "giving that up" too.
Complaint #2 - "There is no multi-tasking." That's not entirely true: There is multi-tasking, but it's not third-party developer controllable multi-tasking. You can easily let the operating system manage the limited CPU and RAM available on a mobile device and let *it* decide what is best for the *user* based on what the user is trying to do - not what you, third-party programmer, have decided - that your app is more important than one the user is actually trying to use instead. Your app should be sophisticated enough to save state when it is sent a Pause event (meaning it could live on in the background, or be killed for another app to run). If it's not, I would probably uninstall your Windows Mobile 6.x app anyhow. Your app is not *that* important. If it were, it would be part of the OS.
Complaint #3 - "Everything has to go through the marketplace, so Windows Phone 7 is useless for business applications." For initial release, this is true. However, if you were serious about reading what the platform has in the works, you would know that Microsoft is very up-front about initial release being a consumer target. You would also know that the enterprise deployment scenarios will be discussed in Q1 of 2011 (according to multiple presenters at MIX this past March). Also, do you really think that most businesses would immediately jump to a completely rewritten platform as soon as it launches this fall? I know I wouldn't recommend any business do that without having been in some sort of alpha/beta/TAP program - that's just good risk mitigation. That's regardless of vendor or technology. Heck, it took over 2 years to get another mobile device approved to connect to Exchange for the firm I work for, and for good reason! The corporate developer story for that competing device is also very much an afterthought, so don't go waving the fruit-adorned flag as a pinnacle of enterprise development success. Windows Phone 7 will be able to connect to us within a week or two after release, all thanks to not having rogue code, otherwise known as your Windows Mobile 6.x style app (which we would probably block anyhow), being able to run on the phone and steal all of our Exchange data and send it to a server of your choice.
Complaint #4 - "Everything is Silverlight or XNA, you can't just use WinForms anymore" Thank Goodness! One of the things I completely hated about the previous versions of applications (and to a good extent the operating system UI) was the fact that it was WinForms on a 3" screen. Thank goodness things like HTC's Sense UI and other application launchers/home screen replacements came along. Seriously, do you know how big my thumbs are and how little the "X" in the upper right hand corner is? Sure, you can butcher Silverlight or XNA apps to look like WinForms, but take a design cue from the templates and the SDK. Make target areas bigger than they should be. Don't expect people to read your application's version of "War and Peace" or whatever else you are trying to fit on a 3" screen - it's just not feasible or enjoyable. If you aren't good at usability design, either step outside your comfort zone, or hire someone to do it. Silverlight is a prime candidate (finally) for having a design person do the "pretty stuff" and you, being the big brain you are, stick to writing code. Oh, and if you aren't a graphics person, seriously, don't bother with any XNA bits short of very elementary games that you don't expect to sell 100,000 copies of. Sure, that's a bit of a rant, but I'm *tired* of seeing application UIs designed by engineers, not designers (myself included). If it's more than a list type app, I'm getting design help - and will probably do so on some of the list apps.
Complaint #5 (which I think is the big one) - "You mean the applications I currently sell won't work on Windows Phone 7?" Yes, that's right - the "cash cow" that you wrote 5 years ago in C++ won't port over.. you may actually have to get out there and write some *new code* (shudder) instead of dragging all that old code (and its backwards compatibility) along with us. And seriously, just how many copies of that app did you sell before the Windows Marketplace was an *option* to sell your app through? Oh, that's right, people knew to go look on 200,000 different sites for your "perfect" app instead of finding it in the Marketplace (alongside your competition's apps BTW.. how's that for incentive to actually update your app on a regular basis?). Yeah, I'm being sarcastic, but come on people.. innovation comes with sacrifice, and you're in line to be put on the alter next.
My position - I *applaud* Microsoft for realizing that Windows Mobile 6.x was dead on the vine. Let me be clear, I'm not dissing the former Windows Mobile team in any way, you guys did a great job of porting a desktop OS to a mobile platform. Unfortunately, Windows apps designed for desktops do not translate well to use on a touch screen that was one fifth of the size of a regular monitor 10 years ago. The developer story finally started to catch up a few years ago, but it was admittedly still a second class citizen due to conscious limitations put in to the compact framework. I love the fact that the code will be reviewed and signed, and have to live up to the coding guidelines. I love that your apps won't be able to steal the data from my app or the OS without user approval, and even when they do, it's not across the board access.. it's one lonely item at a time. I think Windows Phone 7 will be just as functional in its initial release as the competitor mobile operating systems out there were after 2 or even 3 major versions.
The comment box is open.