I’m going to admit up front that, in my day job, I work for Microsoft. I’m not a developer and I don’t work in anything related to phones – I have a somewhat strange role best described in this post on my work blog. I don’t think I’m unusually Microsoft-biased in general, and I certainly don’t get paid for writing nice things about them here, or penalised for writing nasty ones. Right, that’s that done.
As you may know, Microsoft have been lending out pre-release Windows Phone 7 devices to companies who already had apps for sale in the Windows Mobile 6.5 marketplace. They were doing this to encourage people to port apps to WP7, and I happen to know from my day job that they were taking this seriously enough that all of the executives who’d been playing with phones for the last few weeks had them taken away and promptly sent to developers, because the supply dried up. I got my developer phone about three weeks ago and I’ve been using it for my primary phone as well as a debugging device. I thought I’d write up some thoughts both from a user point of view and a developer one, and here they are.
From a User Point of View
As I mentioned, I’ve been using this phone as my primary device as well as a development device. This was partly because it was new, shiny and free of charge, and partly because one of the things I’d been struggling with as a developer was a sense of how things were generally done in this new work of UI. The emulator only comes with one application (Internet Explorer) and so I had a lot of questions that weren’t really answered: When do apps typically use the panorama UI? What does the “back” button normally do? How do apps typically deal with data that doesn’t fit on the screen? How big do people make buttons? Using the phone for a while would give me a better sense of what other apps were doing with the various new bits of UI. And, well, yes, also I got to play with a new phone whilst pretending it was work.
I’ll start off with some positive things. Fast. These phones are fast. Cripes, they’re fast. I thought I didn’t care about how fast my phone was, but it turns out I do. All of the UI is gorgeously fluid, there are none of WM6.5’s mysterious hourglass-less “did I click that?” lockups. Apps load and close very quickly indeed. Did I mention how fast everything was? It’s like getting out of an automatic car and getting back into a manual one. While you were driving the automatic car you weren’t thinking the whole time about how terrible it was but then as soon as you start driving the manual one you get an erection. Maybe that’s just me.
Using the UI in all of the apps provided with the phone feels very nice. There are no unexpected delays, and everything zooms around the place and looks very swish. It makes you happy.
I really like the new panorama style of application, where your phone is essentially a view window onto a larger app canvas. You can just see the edges of the other areas, and you sweep left and right across the screen to switch between panorama elements. Once you’ve used one panorama-style app you immediately recognise others, and the whole style has really grown on me. Perhaps the easiest way to demonstrate this is using my own Septic’s Companion app.
One of my favourite parts of this interface is the safe discoverability of the whole thing – users can explore the app without feeling like they’re selecting anything, or changing anything, or going down some sort of path that they can’t get out of. As you can see from the right hand side, going off the right of your panorama brings you back on the left.
On the “home” screen, a lot of thought has been put in and this really pays off. Instead of an iPhone-style “start menu” of icons, Windows Phone 7 starts on a screen of “tiles”. These could be shortcuts to start applications (you can pin them there) but more often they’re little square snippets of information being provided. Aside from the built-in apps, there aren’t many applications using these tiles right now but as time goes on I’ll bet we’ll see a lot more clever ideas involving the tiles. I, for one, shall be attempting to have a few of those clever ideas. The user can move these around and elect to display or hide them, so it allows for a surprisingly customisable “at a glance” view of what you see as being important stuff.
Okay, I think that’s enough pro-Microsoft stuff to convince you that I really am being paid for this. Now for some good old-fashioned Microsoft-bashing.
I don’t like touch screens. There, I said it. I know I’m a dying breed here, but I don’t think the best way to control your device can ever involve putting your breakfast all over the screen. It seems to me akin to having a car you drive by moving your boots around on the windshield. I appear to be a dying breed in this respect, so I’ll shut up about that now. But mark my words – I don’t exactly know what the replacement is going to be, but twenty years down the line we will be able to use our telephones without covering them in grease.
On the device I have (It says “LG” on it, whatever it is) there’s no easily-accessible keyboard. It has a slide-out keyboard, but this is much more difficult to use then the old Blackberry-style form factor I’m used to from my Dash 3G. It seemed to me like that was the right form factor – you can unlock the phone and send text messages at the same time as carrying your shopping, and you don’t have to look at the keyboard half the time when you’re typing. I’ve seemingly lost this battle to the rest of the world as well, though, so I’ll shut up about that.
This phone doesn’t actually do any more than my Windows Mobile 6.5 device. Yes, yes, I know the interface didn’t look beautiful but it was pretty feature-rich. For WP7 they’ve made a reasonable effort for a v1 product, but in terms of simple usage of built-in apps there are quite a few things I can’t do. On my Dash 3G I could send DRM emails. When I got meeting cancellations, the meetings disappeared from my calendar. I could synchronise Outlook’s “Notes”. I could change the default reminder time for new appointments. I could snooze alarms for a specific time rather than just “snoozing”. As far as I can see, Microsoft have taken the iPhone email/calendar feature set and just copied it, warts and all, because most of these things aren’t possible on iPhone either. There are a lot fewer things I can accomplish on this phone when compared to my WM6.5 one, but I do certainly feel happier while I’m accomplishing the things that are possible. Perhaps this sense of happiness will die off over time – hopefully that timescale will correlate nicely to Microsoft adding in all these features that vanished.
Microsoft have gone for a three button interface when it comes to the physical device. Those buttons are:
- a sort of “home” button which takes you back to the main screen
- a “back” button which is intended to take you back to the last… well… the last something. I’m sure various marketing people in Windows’ mobile team have spent a lot of time brainstorming exactly how to describe this thing, and I notice that misuse of the “back” button is the number one reason for apps failing the Marketplace approval process. The reason for this is that nobody really knows what the back button does. I, however, have worked it out. Here is my FAQ for it. Windows Phone marketing guys, you’re welcome to use this.
Q: Do I press the “back” button now?
A: Press the “back” button when all of the following are true:
- You want to get out of the screen you’re currently looking at
- You don’t want to exit the current app [Note: often the back button will do exactly that, so please make sure other criteria are fulfilled first]
- There are no buttons on the screen which say “OK” or “Cancel”
- The button bar at the bottom does not contain anything that might mean “OK” or “Cancel”
- There is nothing on the screen saying “Go back to main screen of app”
- There are no arrows on the screen pointing left or up
- You have made a paper-based note of what you were doing, just in case the back button does exit the app
- a “search” button. I have put together a similar FAQ for that one.
Q: Do I press the “search” button now?
A: Press the “search” button when all of the following are true:
- You want to search for something
- You are running an app that was made by Microsoft [Note: Non-MS apps don’t have access to the search button]
- There is no “search” box on the screen (in panorama apps, check all screens)
- There is no “search” button on the screen (in panorama apps, check all screens)
- There is nothing on the button bar at the bottom of the screen that looks like it might mean “search”
- You have made a paper-based note of what you were doing – if the app you’re running turns out not to have been made by Microsoft, the search key will launch Bing search and exit your app
Aside from the “home” one, these buttons are about as useful as the various strange buttons that are on full-size keyboards. You know, the ones with a picture of a house, an envelope, someone running and a space hopper. Please, Microsoft – either get rid of the two useless buttons or call them “button 1” and “button 2” and let app developers do useful things with them.
The battery life on this device is rotten. With the WiFi on (and it was on when I got the thing out of the box, so clearly that’s the desired state) the thing lasts less than a working day. If I charge if overnight, I’d better be ready to plug it in again at 8pm if I spent any time fiddling with apps, looking at the internet or playing games. I know that terrible battery life is another aspect of the new world of happy touchy phones, but the phone I had with more features lasted three times as long. I’m just sayin’.
From a Developer Point of View
Alright, enough about that. This device is a “developer device”, so I’m supposed to have been developing on it. And Microsoft will be pleased to know that I’ve done just that. I have two apps on the Marketplace as we speak. Naismith’s Rule is a very simple app which uses an old Scottish formula to determine how long a hike is going to take given the distance and ascent. I wrote this mostly as a “hello world” experiment to try out the new development tools. It’s free, although it has ads in it (they haven’t lit up just yet, but I believe they’re going to very soon). My guess is that the ad revenue will be near zero, but it’ll be an interesting experiment. The Septic’s Companion (see picture above) is the phone version of my Septic’s Companion British slang dictionary web site and book. This app took a bit longer, partly because it’s a panorama application and uses data binding. It’s now for sale for $1.99. The Windows Phone 7 version of Carlos, our “where did I park the car” app, is nearly finished, but my experience here is less about that – the work was mostly subcontracted to someone more competent and all I’ve really done so far is fix a few bugs.
I spent the previous year or so developing Windows Mobile 6.5 apps, so I’d say I’m reasonably familiar with the development tools available for that platform. For WP7, it’s all change. First off, you’re into Visual Studio 2010 instead of 2008. No great upheaval there – it just seems to be iterative improvements in a number of different areas, which is exactly the sort of new version I like.
And then you’re into the development tools for the phone platform itself. And, well, that is quite different for WP7. Gone are Forms and the .NET Compact Framework, and in is Silverlight and XNA. Here is a table with what I would call the “pub explanation” of what’s different. Please bear in mind that I have scant understanding of the things that I’m pontificating about here on a technical level, and I’ve been working with them for a sum total of six weeks. But, hey. Your time is free.
|Bit of your program||What you used in WM6.5||What you’ll use for WP7||Difficult to port?|
|Actual code – loops, data classes, logic, algorithms||.NET Compact Framework||Silverlight||Easy. It’s all still C# and Silverlight contains most of the same classes as the Framework did, so you’ll find that a lot of your code will pretty much copy-paste. If you were using VB.NET, just switch. It’s always going to be a second-class citizen in IDEs and you can switch in an afternoon.|
|User interface||.NET CF Forms||Silverlight pages||You have to start again. However, console yourself with the fact that everything you didn’t like about Forms will be gone, and your apps will look way better without you trying. However, you’ll have to spend a few hours reading about stuff.|
|Game stuff||Heaven knows||XNA||Barely understand this other than knowing it’s not Silverlight. Best of luck.|
Now that I’ve shipped two apps and been involved in the creation of another one, I think I’m ready to say that I prefer WP7 development to WM6.5. Now that I’m six weeks in I’m roughly as fast overall as I was on the old platform, but there are some things so truly wonderful that I think they make up for it. Once again, let’s deal with the good things first.
There’s only one “platform”. Some of you may know that Windows Mobile came in two flavours – “Pocket PC”, which had a touch screen, and “Smartphone”, which didn’t. You could sort-of compile cross platform apps, but there were weird little gotchas that sprung up in all sorts of strange areas. There was no button control on Smartphone, for example, and the alarm API was different on each platform. Because having one EXE is easier for distribution, you end up with code all over the place to deal with the different platforms. I’ve no idea how these two things ended up so similar and yet so different, but who cares now, because it’s gone.
There’s only one screen resolution now. Oh, god, yes, only one screen resolution. It’s 800×480, and 480×800 if you get bored and can be bothered dealing with that. For my WM6.5 projects I had a giant matrix of screen resolutions that I was testing on – even after eliminating the weird resolutions that hardly shipped on any devices, I had eighteen resolutions to test for Pocket PC and seven for Smartphone. The spreadsheet I used to track these (shown above) was complicated enough. Every time I shipped an updated I had to test every single screen on every single resolution. Every time I changed anything to line up better on the others, I had to retest them all. Fun? No. No, not really.
The fit-and-finish on the dev tools is so much better. Particularly incredible in a v1 product, these dev tools are more robust and predictable than the WM6.5 ones ever were. My favourite disaster with the WM6.5 dev tools was when you changed the platform from Pocket PC to Smartphone, and the IDE decided to reorganise all your userform layout in such a way that you spent the next fifteen minutes moving it all back. I saw quite a few IDE crashes during debug, and the emulator was slow as hell. The new emulator is very fast, and the dev environment is much, much smoother. Perhaps this is partly due to Visual Studio 2010 but, hey, who cares.
There are several controls in the dev kit that are truly great. The Panorama is one of them (I rambled about the principle above), and the Stackpanel is another. A Stackpanel is a container which allows you to lay out UI in a style more akin to <div>s in a web page rather than controls on a form. Child controls just fall into place instead of being fixed at x,y locations. Stackpanels can be either horizontal or vertical, and will resize magically when you resize the UI elements at runtime or design time. The “search” page in my Septic’s Companion app, for example, is just a stackpanel with a textbox in which you can enter the search and a listbox where results are displayed. The stackpanel is centred, and the contents are centred – no mucking around aligning everything in VS. Oh yes, and in between them is a textbox that says “No search results found”. When I don’t find any search results, I set it to being Visible and the listbox magically moves out of the way to fit it. This magical flowing around visible/nonvisible elements makes for very easy design of very interactive one-screen UI.
And now for the bad stuff. Not nearly as much of this from a dev point of view.
I hate the way developers are siloed like iPhone developers. Goodbye, idea for an app that set your lock screen wallpaper. Goodbye, Proximity, because you have to run in the background. Goodbye sending CAB files around your friends so they can test the app. Oh well. You can’t stop progress.
As I mentioned above, so far I’ve submitted two applications to the Marketplace. Both of those were accepted at first try – this wasn’t my experience with WM6.5 (I got a couple of rejections for each app submission) and I think this is in large part due to the fact that the dev tools are simpler to operate and the built-in controls are so much more stable and predictable. And, although I’d grumble about it, I suppose having your app siloed to hell might make it more likely to pass the approval process.
Do I prefer it? I think I do. I’m positive that I prefer it as a developer. From talking to various Android/iPhone developers, I’ve got a sense that this is far and away the best phone development platform out there. I’m a pretty hopeless old dog, and I’m already more productive despite being near the beginning of the new trick learning curve. In a few months, I think I’ll be faster at developing on this platform than I have been on any other one I’ve tried (mobile or not).
As a user, I’m optimistic but I can’t quite decide. I do enjoy using the device, I must say. I feel happy playing with it. Will I still be as happy in six months when the new UI looks old and I can’t set up a recurring appointment that must only occur twice? Who knows. If Microsoft keep the entire team working on the WP7 platform until it’s feature complete when compared to WM6.5, I will certainly be happy. If not, I might be. With my employee hat on again, I do think Microsoft were right to ditch WM6.5 and, as v1 products go, this one is definitely shaping up to be a fine competitor to the iPhone. Hopefully MS will keep the pedal down and not follow the Zune principle of overtaking the iPod just as everyone stopped using the iPod.