It has been a few month since I started mangling with WP7 platform. The more I learnt about it from the inside the more I wanted to buy new real WP7 phone. Things changed slightly after I have done my very first app(didn’t make it to the app store as I found plenty of similar ones already there and mine was not adding much :() but still as of now I would really be interested in posessing a WP7 phone and giving it a solid try. But let me start from the beginning…

Learning

As my primary learning resource I used 2 jumpstart sessions : WP7 jumpstart and Mango jumpstart. If you have the time to invest into watching those I highly recommend them as these are very good sources of information to study the platform fast. Especially keeping in mind that all the sessions there are accompanied by code examples which are also easily found on codeplex. The code especially nice due to the availability of the before-after versions of demo applications so that it is easy to see the transition from incomplete/incorrect state to the solid code.

Environment

Windows phone SDK 7.1 integrates seamlessly into VS2010 and makes a very pleasant environment to work with. The emulator gives you a lot of power when debugging your app. Still I missed the camera support(it is there but I kinda didn’t like it) and the FS support. It’s not so easy to look at things located on the Isolated storage as well as on the SD card. Otherwise there’s everything you’d want from the emulator, including recording gyroscope and accelerometer changes and playing them afterwards again and again.

Development

Developing WP7 is tricky yet interesting. You’re using almost all of what .NET can offer with certain limitations(e.g. AsyncCallback is almost useless) seamlessly and easily. There’s a lot you can customise in the standard controls collection. Still some common things which I would expect to be just working are in fact not. As an example I cannot grasp why would one want the Popup class if it still has to be injected into the visual tree manually… Why not use the panel with visibility instead? It’s a lot more natural to me than injecting the Popup somewhere at runtime… Another interesting discovery for me was the fact that IsolatedStorage is not available in the OnNavigatedTo event. I guess MS guys give us a hint here that we should probably use only the StateStorage as it is much faster, and then use progress indicators to load heavy stuff after the page is loaded… but then why would I bother using StateStorage at all? Just put the “loading…” progress on top in the first place and get all the stuff from the IsolatedStorage where it is grouped together nicely and not scattered between 2 storage places(not to mention the fact that when storing to StateStorage you are highly recommended to store things to the IsolatedStorage as well as the state might not be available if the application was killed in the meantime..)
Nevertheless there’s a lot to admire here as well… Among other things I liked the controls customisation ability and overlaying concept best. WYSIWYG designing is really helping out here cutting redeployment and testing time. Debugging the real phone is easy too.

Bottom line

WP7 development surely has its own intricacies one might not like, but for me this is what makes mobile development thrilling. You can discover completely new ways of using the very old concepts/controls and rethink your strategies towards certain solutions. Mobile changes the way you treat data and UI and Metro-powered mobile development really broadens ones vision on how the data can be processed and delivered to utilise the customer needs.