At work I have been doing quite a few hand held device projects. Although these project are fun, since they are different from the ordinary, however having to work with the Compact Framework (CF) is challenging.
The CF is really a subset of the .Net framework. What make it tough is the fact that things you expect to be in the framework are sometime missing. The example that took me by surprise was the Threading package. If you look at the two packages, you will notice the threading in the CF is rather lite. Some methods one would expect to find are missing, causing the developer (me) to have to find new ways to do tasks.
I don't want this to sound like the CF is crap, because it isn't. I am sure the reason the CF scales down is because of the devices it has to run on. Hand held devices have limited memory resources and processor speed. These limitations are what causes the CF to be scaled from the regular framework.
There are other things that cause this type of development to be challenging, but I think I will save those for another day.