Author: Rob Cameron
Aimed at: "Pro" WP7 developers
Pros: Some interesting material covered
Cons: Poor organisation, overlong examples, level varies
Reviewed by: Ian Elliot
Windows Phone 7 development is based either on Silverlight or on XNA based and there are some slight differences. Things have changed a little in the latest version but this is still true. So what do you expect a book called "Pro" to tell you about?
It starts off with a chapter introducing WP7 and the market place. I would think that any programmer wanting to work up to "pro" would already know most of this - but a book has to start somewhere so let's see where it goes next.
Chapter 2 is the real start of the book and it gets to grips with Silverlight UI development. However, rather than diving into the programming we have an examination of design guides and icons. When we do get to code it hits like a flood - pages of listings. If you like unexplained listings then you will like this, but I don't and I doubt it will do much for your understanding of the process of creating an app.
Cameron does explain some ideas quite well - like the use of the debug counters. But, for a chapter on the UI, it covers all sorts of off-topic subjects, such as what is included in the framework. Eventually we do get to XAML - first raw and then in Blend 4. Again we have long listings with few explanations. It isn't so much that explanations are necessary, it's more that the long listings could be cut to be short listings.
By the end of Chapter 2 you have seen a tiny bit of just about every UI related topic - data binding, styles, behaviors and so on - nothing in much depth and with little organization. This nearly 100-page chapter needs to be split into much easier to read chunks with some logical subtopics.
Next we move on to handling input. The keyboard, touch, accelerometer, location, microphone and camera - well they are all input of sorts. Again the chapter is very long and there are lots of very long listings for you to wade through.
Chapter 4 is called "Programming Model" which could be earlier in a book aimed at "pro" programmers. This runs though low-level device information, data persistence, tasks, choosers, the Web Browser, asynchronous programming, using web services, maps. etc. To me this is more than you might expect in a chapter about the programming model - in fact it doesn't really discuss the programming model at all. Where is a discussion on tombstoning and lifetime?
From here we move on to look at advanced UI development, starting off with a look at the MVVM model. Then on to the WP 7 toolkit and a very simple tour of controls. The chapter ends with a look at the Microsoft Advertising SDK.
Chapter 7 continues the advanced topics theme but this time tackles the advanced programming model. This includes databinding, lazy load images, the media library and push notification.
The final two chapter are on XNA development - basic 2D games followed by 3D graphics. This is more like an introduction than even an intermediate text. Again this probably reflects the real situation with WP7 development with Silverlight doing most of the work.
This book has some serious problems. It lacks organization and it presents large chunks of loosely connected topics as a single whole. This makes it difficult to know where one subject ends and another starts. It also makes the material seem harder to follow because you don't get an introduction, middle section, round up type of approach that you would if a chapter was devoted to each topic. The book lacks very basic introductions to the topics it covers so it isn't suitable for the beginner. However it also includes lots of information that an intermediate programmer would be expected to know. Put simply the level varies a lot.
You could forgive this if the actual descriptions were clear and easy to read. The actual writing style isn't bad, but the layout of the book and the quoting of large chunks of code makes it look very messy and difficult to read. I'm a great fan of code, it's what it is all about, but I when I'm learning I prefer my code in small illustrative chunks with explanations.
Overall then I can't recommend this book, even though there is a lot of useful material hidden within it. With a huge improvement in layout style and much better presentation of the examples it would be moving in the right direction but it also needs a much better logical organization.