Welcome to Pete Brown's 10rem.net

First time here? If you are a developer or are interested in Microsoft tools and technology, please consider subscribing to the latest posts.

You may also be interested in my blog archives, the articles section, or some of my lab projects such as the C64 emulator written in Silverlight.

(hide this)

What were your top 5 Pain Points in Learning WP7 Development?

Pete Brown - 01 October 2010

For my readers who have built something in Windows Phone 7: what were the top 5 pain points you hit when learning WP7? We're planning some great content and samples for WP7 dev, and want to make sure we hit all the things you wish you had known when you were starting out.

Let me know in the comments below, and also note if you were a Silverlight developer before you started working with WP7, or if you worked in a different technology/platform.

     
posted by Pete Brown on Friday, October 1, 2010
filed under:      

18 comments for “What were your top 5 Pain Points in Learning WP7 Development?”

  1. Gergely Oroszsays:
    Hi Pete! I've been an experienced SL/WPF developer when I started out with WP7. My top pain points were:
    - Transitions between pages. If you want a e.g. the pages to flip or disappear when navigating this still can only be done with some hacks.
    - The ApplicationBar not being a FrameworkElement & working around this. So much for clean MVVM!
    - Realizing that some Silverlight 3.0 BitmapEffects have been left out of the RTM (e.g. Blur). I was convinced that the phone was an extended SL 3.0, however it would be nice to see a list on SL 3.0 features that didn't make it in the RTM (some were still present in the beta)
    - Figuring out how to test multitouch, GPS and the accelerometer. It seems you have to write your own libraries for testing or find some 3rd party ones to do so. Would be nice to see some resources on these.
  2. Scott K Davissays:
    Here is my current most sticky issue with WP7. The Bing maps control for WP7 and Silverlight are in two entirely different namespaces. I understand there are some slight differences that require separate namespaces, but some of the objects are identical and could have used the same namespace. This would have made writing shared code across both platforms easier. If there is a common interface definition for both sets of objects, I haven't found it yet. That would help too. Writing extra abstraction layers to support both platforms with maximum code sharing is fine, but this is one area where it would be nice to have a bit more sharing across platforms. Call me greedy, the code sharing across platforms is so good for core controls, but I definitely miss it here.
  3. shaggygisays:
    This is more related to Silverlight in general. I find it hard to pass data between pages. I've read different blogs on how to use the id in the URI, but what if you have a large data object with many variables ( double, List<string>, byte[], etc. ). I would like to see some wizard-type examples to allow user to make a selection of items throughtout a few pages ( each selection would store the selection to the data object ). At the end page, it would process and/or show details and then go back to starting page for the next selection process. It would also be good to show an example on how to cancel and/or edit a selection that user may have selected from a previous page.

    Thanks again.
  4. Velvárt Andrássays:
    Coming from Silverlight, my biggest issues are with platform specific things. Namely:
    - Tombstoning is the number one difficulty, depending on how much of an application state you want to preserve (e.g. scrollview positions?). It is also very tedious to test. I really wish there was some kind of a "swap" built into the OS.
    - Using XNA stuff from Silverlight (not graphics, but audio / mic for example) requires some additional setup with FrameworkDispatcher. It is very difficult to find out while things are not working
    - Recreating animations from the OS - this can be very difficult, and most people will probably settle for something simple and not consistent approach.
    - A decent AppBar API would be nice, although in V1, I can live without it.
    - The phone is based on SL3. I am missing some Blend coolness that work with SL4 (PathListbox, CallMethodAction), and also RIA Services.
  5. Geoffsays:
    I'm only a couple weeks or so into WP7 development and only some Silverlight beforehand; mostly WinForms, middleware and web before but so far:

    1) Cloud-centric / getting around lack of embedded database / local support
    a) Local DB instead of all cloud makes sense for some apps like mine where it's essentially a read-only DB that doesn't change (basic US river data) and it's often used outdoors where connectivity is often limited. Using unofficial Sqlite for now.

    b) Chatty cloud apps suck battery life and users' data plans. Caching, guidelines etc.?

    c) Hosting web service - Azure is too pricey for the little guy. Small web hosts can't handle. Amazon / Google cheaper but less friendly to work with. I don't want to pay much/anything for web service hosting for a free or cheap app

    d) Appears cloud is required for a trial app? Otherwise having license data in isolated storage fails when user reinstalls trial to renew it? Lack of info here

    e) Async chaining and error handling patterns for network operations

    2) Resources Misc
    a) Getting file content from a xap inside a class library, outputting to isolated storage if it doesn't exist etc.
    b) Images - creating... white or black, guidelines, image libraries, themes, etc.
    c) I still can't replace ApplicationBarIcon.png with a picture image of same format and size. Trick, requirements?

    3) Navigation with MVVM and View Model Locators, app lifecycle
    a) Patterns, communication, passing data and navigating between views the "right" way
    b) Tombstoning. Some handy stuff here: http://www.imaginativeuniversal.com/blog/

    4) Application bar and controls
    a) App bar - Lack of commanding, lack of controls, lack of customization, making a "pressed" / "checked" / toggled button, wrapping text for button in expanded view etc.

    b) Lack of various controls (DockPanel, others), lack of documentation for existing, some issues with some such as Progressbar (a resource hog), have to use custom performance progress bar, etc.

    5) Testing / feedback / standards
    a) Lack of developer phone program even at RTM for all but rockstars? Have to get a contract or pay top dollar later for phone only for real testing?

    b) Getting instrumentation, error data, feedback etc. back from user/device

    c) More standards, guidance such as layouts (technical - arrangements, margins etc.), themes, images, workflows, user filtering/sorting of data...
  6. Rodrigo Díaz Conchasays:
    Hi Pete,

    For me:

    - Locked emulator. I think it would be great if we use an unlocked (full version) of the emulator to test our apps
    - Not really related to learning WP7 development but Marketplace registration is kinda painful and slow

    For *lots* of people I have had contact with:

    - The Tools (VS.NET Express for WP7) require Windows XP. This is the main complain people have around here.

    Hope this helps.
  7. Velvárt Andrássays:
    And here is the bonus pain point: the locked emulator. Without a device, I can’t test:
    - Music + Video Hub integration
    - Picture hub integration
    - Video playback
    - Marketplace tasks

    Other nice to have things:
    - Simulate pinch gesture with the scroll wheel, so that I can develop zooming things without a multitouch monitor
    - Trial API
    - Using the webcam as the camera
    - Simulate the accelerometer somehow (right mouse button?)
    - Simulate GPS on a separate map screen
    I know that there are community solutions for the last 3, but they are working through additional layers of abstraction.
  8. Bigsbysays:
    Hi; Pete,

    I've done some playing around with WP7 tools and haven't found any trouble execpt, and the reason I don't spend much time on it now, is the lack of a device to play with.

    It's very well done to release the tools so that, when the devices are finally out, there more apps available but it just waiting is kind frustrating.
  9. Jaysays:
    I am an experienced winforms/webforms programmer and designer, new to Silverlight, WPF, and WP7 development. For MVVM, the View part and XAML was easy - lots of stuff has been available for that.

    However, connecting the view to *real* business data is a completely different story. I understand that the Model and ViewModel have been nearly impossible to find enough info on. Most articles say "You're already familiar with the Model" - but um... no. If you're already a Silverlight/WPF developer maybe, but not without that background. If we're new to all of it where are the resources to learn how to connect our great new UI to data?
  10. Fallon Masseysays:
    I agree, I won't waste too much time on WP7 until I can get my hands on a real device.

    I wonder if they will be priced competitively, and no, that doesn't mean priced like anything Apple sells.
  11. Justin Jamessays:
    All of my pain comes from failure to execute. After PDC, you guys had huge amounts of interest and goodwill in the developer community, but you squandered it. And now your entire launch is jeopardized as a result. It's being revealed that the platform is deeply flawed from a customer standpoint (I'm not going to bother with the details), and because of the missed opportunities on the developer side, you won't have a great launch-time story with apps either.

    All of my problems come from these issues:

    * Lack of information
    * Lack of test devices
    * Failure to reach out to the community *effectively*
    * Lack of documentation
    * Failure to reach out to the media/press
    * Failure to leverage goodwill post-PDC
    * Failure to deliver "gold bits" on tools/documentation in a timely fashion
    * Failure to educate community champions (like MVPs)

    I wanted to try writing WP7 apps, coming from a general .NET background (no Silverlight, no WPF). The information out there is abysmal. Other than the WP7 Firestarter that I had to skip (I was registered, but I couldn't miss work that day), there's been zero real, hands-on outreach being performed. All of the information is for existing Silverlight devs to just get them up-to-speed. Meanwhile, I've seen at least 3 different presentations on WP7 development, and none of them are particularly useful at the "getting started" level. I have limited time to invest in looking into platforms with zero market share, so when my valuable time is being wasted (it's not Microsoft's fault, these were non-Microsoft employees), I can't allocate much more.

    Make matters worse, the finalized tools were not available until a week or two ago.

    There is simply no basic, "how to get started with WP7" resources aimed at someone who doesn't know Silverlight. And frankly, the information on Silverlight is wretched. I'm sick of hearing "MVVM" spewed forth as if someone knows what it means with these idiotic charts showing the relationships (hint: this is the same garbage that makes no sense when looking at ASP.NET). No one I talk to about MVVM can explain it in a way that shows any actual understanding of the topic, merely parroting of some guru's book. So they clearly don't understand it either. In other words, you've built WP7 on a house of cards, documentation-wise. If no one really understands the programming paradigm you're depending on, someone screwed up.

    No devices... not even for someone like me who is an established, respected development author who writes articles to a giant, global audience (I write over at TechRepublic)... Dr. Dobbs couldn't get a test phone either. Seriously, what are you guys thinking? Ina Fried, who know BUPKISS about programming got a test phone (but they were supposed to be for developers only), Ed Bott got one, but a serious programming place like Dr. Dobbs or my space on TechRepublic can't get one? I contacted my PR folks there, your phone giveout program people, and my local developer evangelist. Seriously, you guys murdered my good will around this.

    Microsoft has been great at having their "champions" write blog posts, but you've dropped the ball big time in terms of working with anyone with a non microsoft.com email address. The Firestarter in Charlotte was the ONLY thing to come near this area on WP7 with real information... never mind the number of banks and insurance companies with headquarters in the area (ever hear of "Wachovia" and "Bank of America"?). How many of your events are confined to the Northwest? Hate to break the bubble there, but most developers are too busy working 50 - 70 hours a week to take time off and jet out on their own dime to PDC, MIX, etc. You HAVE to bring the information to us, and you failed to! You and Jeff Blankenburg are the only folks at Microsoft who seems really passionate about getting useful information out on a regular basis (check your pingbacks, I link to you all the time, for good reason).

    Finally, my biggest pain point has been lack of confidence in the platform. I'm seeing too many problems with it. The Kin failure hurt you a lot; while I don't think Kin had real bearing on WP7, too many other devs see it as a sign of things to come and are staying away. I've been studying Appcelerator's surveys of developer interest, and too few people care about WP7, your "out of the gate" story is going to be atrocious and the platform will be in big trouble, because you guys have done such a poor job at reaching out to the community.

    Writing articles about WP7 was a top priority for me at the beginning of the summer. I could *barely* care less about it now. What went wrong? I worked HARD to squeeze information out of Microsoft, but all I got was "umm..." By the time real information was available to anyone who wasn't an MVP or hadn't gone to PDC, too many of the shortcomings were made known. After I sat in on a presentation by an MVP that was mostly about the *lack* of features (No embedded DB? No JSON support? No removable storage? No tethering? "Titles" are not interactive? etc.), what incentive do I have for investing my time in the platform?

    You guys had the chance to sell us on the "developers, developers, developers" story, but the only people who you have put any focus on is the existing Silverlight developers who are a very small (albeit visible, vocal, and "sexy") minority of your developers. Meanwhile, your meat 'n potatoes customers (like myself, ASP.NET and WinForms folks) are left high and dry. Someone made some really bad decisions, and most of the developers I know are pretty upset with you. When some of the biggest Microsoft supporters out there like Deb Shinder (who previously posted a number of positive articles on WP7) are filling Facebook with "I guess I'll just get a Droid now" due to disappointment, you've done something wrong. When someone like me (and a lot of the people I know) who devotes most of their "column inches" to being very positive about your products and your company is in full revolt, you've gone far beyond "done something wrong".

    This post is 3 months late. If it had gone up there, there would have been time to fix things. Now, it is probably too late. I personally am still somewhat open minded, but too many devs I know are fed up with it.

    J.Ja
  12. Gergely Oroszsays:
    @Justin James: wow, what a long post! It's quite interesting to read how you're blaming Microsoft for not educating you on how to go from .Net to Silverlight & WP7, not organizing enough events where you can learn this... it's like you're expecting Microsoft to teach you every bit of this technology.

    It's quite sad how so many MS developers have become so "lazy" over the years relying solely on Microsoft on presenting all the learning material to them, forgetting how to learn new technologies on their own. I think all the material is out there to learn - books, reference documentation and blogs. You do need to do your homework on finding these, as usual with new platforms, I don't see any problem with this.

    If I were you I'd stop waiting for Microsoft to present some official learning guide on going from .Net to WP7 and learn the thing myself. In the time of writing your long comment I'm sure you could've read the Wikipedia article about MVVM to understand what it is.
  13. Justin Jamessays:
    @ Gergely Orosz -

    You're right. I am blaming Microsoft. When I want information on their technology, and they do not make that information readily available, I hold them accountable. As a busy person (think: I have a full time job, I spend a lot of time writing each week, I am starting my own company, AND I am a husband and father), I don't have the luxury you obviously do to slog through a 500 page book about a pre-release technology, hoping that it isn't a waste of my time. Or, in the case of WP7... slogging through a 500 page Silverlight book, a 300 page WCF Data Services book, AND a 400 page WP7 book. Give. Me. A. Break.

    Fact is, when I wanted to learn about PFx, the information was out there. I was using PFx 2 years before its release, and I was up and running in a few hours. Stephen Toub and his team did an awesome job with that release. Even if I wasn't the parallel processing geek I am (it's an area of special interest), it would have been impossible to not learn about it. Microsoft sent the local developer evangelists around with an outstanding presentation, they sent another guy around with a decent presentation, and when I asked questions, people like Stephen Toub personally responded. The information was there, period.

    When ASP.NET MVC came out, same thing. The developer evangelist for my area came by and put on a great presentation. When I had questions, there was information available. The answer was never "go spend $150 on books, 60 hours of time, and hope it wasn't a waste." Period.

    The REALITY here, is that it is Microsoft's job, NOT MINE to provide this information. Yes, I know Wikipedia has an MVVM article. Guess what? It sucks! No one explains MVVM well! Not many people explain MVC well either (that diagram with the three circles is so useless...), which is why you are already seeing so many mangled ASP.NET MVC apps out there which just look like the old CGI model. By the way, that Wikipedia article on MVVM... has the exact same criticism I level: "The first [knock on MVVM heard in the community] is that MVVM currently lacks standardization from Microsoft both in implementation and toolsets." Kind of embarrassing to your point, isn't it?

    Let's look at some more facts:

    A. Microsoft is battling uphill here. They are starting from a userbase (in terms of the handsets, not developers) of precisely 0, not including developers and internal employees who own a phone. This means that the only two motivations for someone to learn WP7 are a) hoping to get onto the ground floor of a great opportunity (like being the first tower defense app with any popularity) or b) personal interest in the platform (it looks cool, plan to buy one when its launched and want to play with it, etc.).

    B. Microsoft is the *only* primary source of information on this device. Anyone writing a book about WP7 has to get their information from Microsoft. Only a very small number of people had a handset long enough to speak authoritatively on the subject, and I'd guess than less than 10 of them don't work for Microsoft or their handset partners (HTC etc.).

    C. The Microsoft development stack is incredibly deep, dense, and complex. The skills needed to code for WP7:
    * Silverlight
    * MVVM
    * WCF Data Services (quite likely)
    * XNA (maybe)
    * .NET Framework
    * C#
    * Whatever is happening server side

    So, let's look at what these irrefutable facts mean.

    A: Microsoft has to work *hard* to keep and retain developers' attention, because right now, there is little motivation to learn WP7. As of a few weeks ago, a recent survey showed a mere 28% of developers as "very interested" in developing for WP7 (https://assets.appcelerator.com.s3.amazonaws.com/docs/Appcelerator-IDC-Q4-Mobile-Developer-Report.pdf). Yikes! 28%?!?! More people were interested in the iPad in *January 2010* when it was a mere RUMOR! Clearly, someone has screwed up BIG TIME, and guess what... telling them to go read 1,200 pages of books to transition from being a standard .NET Dev to a WP7 dev... let's just say it's a slap in the face. It's insulting. Why *should* someone do that? Huh? So they can develop for a device which is sorely lacking in the eyes of buyers (no tethering, no removable storage)? So they can develop for a device which is somewhat lacking in the eyes of developers (no built-in DB?)?

    Yes, there are a few hot shots (like yourself) who have the time to sit around reading countless books and such. The reality is, few developers have this. I know, I've surveyed them and seen the numbers. I hear their feedback all the time: "I don't have time to learn new technologies." I've seen other surveys that show time and time again that developers consider the lack of opportunity to learn new techs as their #1 or #2 challenge.

    But without the MOTIVATION (not just the physical energy, but the, "what's in it for me?" which right now is "not a thing" for most devs), it isn't happening.

    So Microsoft needs to 1) lower the barrier the entry as much as possible and 2) make it more appealing.

    B: This fact means that Microsoft is the sole source of blame here. If the information cannot be found, or if it only exists in a format that is impossible to understand, it is their responsibility to rectify this. Because until the market proves itself and there is more motivation out there (given the number of devs interested in WP7, how many books do you think editors want to green light right now? Not many!), there will be few resources available. And because WP7 is closed source, all of those authors ultimately need to work closely with Microsoft to provide information not available in... the official documentation.

    C: The barriers to entry are FAR too high to overcome the lack of motivation. iOS has a high barrier to entry (learning Objective C, having a Mac to develop on, signing the onerous iPhone SDK agreement, etc.). Android has a very low barrier to entry (know Java, download the free tools to use with Eclipse which works on any computer you own and is free). Right now, the only plus for WP7 development is that folks can leverage their existing .NET Framework (well, kind of... they have to get used to what's not available in the Client Profile) and C# skills. Outside of that, few devs outside of the SL world have worked with SL, WCF Data Services, XNA, etc. That's a LOT of learning that Microsoft is asking us to do, and for what? Where's the market? Where are the users?

    So yes, Microsoft IS to blame. Don't be an apologist for them. Please. I'm one of their biggest supporters out there. Look me up, look at how much space I give them to a massive audience. I spent a year driving all over the place (sometimes as long as 4 hours each way) at my own expense to give presentations on PFx. I help run a .NET user group. I've been a player in putting on Code Camps. And you know what? My experiences with Microsoft have been usually quite positive. I've interviewed I don't know how many folks from there, including C-level executives. Typically, when I want information on a project, I go to the project's site and email the project leader, and without even "name dropping" myself (in other words, I just say, "hey, I've got a question" and don't mention that I do any kind of writing) the project leader gets back quickly (try it some day!). If I want something more substantial, I'll call or email my local developer evangelist (this is their job, after all) or if I need more access, I'll get in touch with a PR contact I have who always gets me talking to the right person.

    But with WP7, there has been a systematic failure within Microsoft. The information just isn't there. The mindset of the staff seems to be the same mindset you have: go learn Silverlight, go learn XNA, go learn this, go learn that, THEN get the WP7 tools and fool around. Hello? Come again? I'm not asking for someone to spoonfeed SL and such, but the fact is, *the stack is too big for WP7*. The barrier to entry is the stack! Developers are running scared of SL. Why? It's a buggy system changing so fast that no one can keep up.

    Jeff Blankenburg is really the BEST author out there on the subject. He's the only one who has been able to reliably explain things in a way that the average C# dev can understand. The MVPs I've spoken to about this, they know their stuff, but they've been SL wonks for so long, they don't know how to explain it to anyone else.

    The point is, when Microsoft is trying to bootstrap and brand new ecosystem, it is THEIR responsibility to provide information and lower the barriers to entry. And they've not done that. You can live in la-la land all you want and try shifting the blame, but it's a simple fact. Google did it right with Android and it is paying off, RIM is *failing* to do it with BlackBerry and it's killing them.

    J.Ja
  14. Frank Rizzosays:
    @Justin James. Knowledge of MVVM is not necessary when writing a WP7 app. I've written 2 so far and using MVVM would have been a massive overkill.

    @Geoff. I used SQLite port to WP7 for a local DB - it was really easy to work with. And it's pretty darn fast too.
    I totally hear you on Azure being too expensive for the small guy. MS should do what Google does with their cloud offering: anything under 2 million hits is free. Works out for everyone.

    As far as my complaint is that the Emulator really does suck. Half the stuff doesn't even work unless you have the latest and greatest DX11 video card.

Comment on this Post

Remember me