views:

629

answers:

7

For a .net developer, what's the learning curve to get into mobile development?

How many different operating systems are there that run .net?

Is windows mobile that same as windows ce?

+17  A: 

Learning Curve

I hate to say "it depends" but it really does, and on several factors. What is your ".NET development" experience? Keep in mind that the CF supports C# and VB.NET, so if you're a COBOL.NET guy, it's going to be steeper than if you're a C# guy. If you do primarily ASP.NET on the desktop, it's going to be steeper than if you do WinForms. If you know nothing about occasionally connected scenarios and nothing about embedded systems it's going to be steeper than if you do.

Moving from desktop to mobile is fairly straightforward , but the Compact Framework contains a subset of the full framework, but it's not a pure subset. It also contains several things that simply don't exist on the desktop. So there are some things to learn.

Bigger than that, however, is that you often need a different mindset. You don't have swap files. You have limited memory and storage. You have sleep/wake. You have smaller resolutions and dynamic resolution and aspect changes. Desktop developers rarely think of these things.

Operating Systems

This is more straightforward. Only Windows CE platforms (see the next answer for more clarification) support the Compact Framework. There's also the Micro Framework, but I'd call it more "embedded" than "mobile" so it's likely not something you're considering (correct me if I'm wrong there).

CE versus WinMo

This is a major confusion point for lots of beginners. Unlike XP (exclude XPe for the sake of this discussion) or Vista, Windows CE is a modular OS. That means the device OEM can choose to include or exclude just about any feature in the OS. That means there is no one "Windows CE". Think of Windows Mobile and a Windows CE customer. They take CE and select a specific subset of available features. They then add their own pieces to it (like the WinMo shell, several APIs, etc). This means that a vanilla CE device can (and often will) have stuff that a Windows Mobile device doesn't. It also means that all Windows Mobile devices contain pieces that no vanilla CE device can. To make it even more fun, the WinMo OEM can then add even their own stuff, so one WinMo device may have stuff that another doesn't.

This doesn't even get into the differences between the WinMo platforms themselves (Professional, Standard, Smartphone, Phone Edition, etc).

Other Relevant SO Questions

You might want to look at these:

ctacke
Great links! Thanks! Also, I'm glad I'm not the only one having trouble with OS versions!
Doug L.
I think this became available after you posted this answer, but Red5 Labs has a component to allow Series 60 devices to run .Net CF applications on Series 60/Symbian. Of course if those applications use P/Invoke, the State and Notifications Broker, or other features that are Windows Mobile specific then they won't work.Given that the component must be licensed I wouldn't look at this as something a casual developer would use though.
Joel
I just found this: "We regret to announce that Red Five Labs has ceased its business activities as of 18th January 2010." http://www.redfivelabs.com/ so there must have been an issue with professional developers using the component also.
Larry Smithmier
A: 

I think the curve may depend a bit on what kind of .Net world you come from as well as what kind of mobile development you want to get into. For example, if you are a web developer and want to build a site using the Mobile controls within the compact .Net framework this may not be as difficult as say a web developer trying to write a stand alone application where there is a change in how things should flow. There is also the question of what do you want to call mobile development as there is the iPhone, Blackberries, Treo smartphones and a few other environments that may carry different capabilities to some extent.

Which .Net do you mean: There are different version numbers as well as the original and compact differences.

I think there was another answer addressing your last question well.

JB King
+2  A: 

A big issue is how to design the UI. WinCE seems to still assume the desktop 3-handed user operation (left, right, and mouse), and the event-driven architecture that enables (requires) the user to initiate everything amodally. This often doesn't work very well on a cell phone. Forget pull-down menus. Multipanel windows are not very useful. etc. etc. So many of your fundamental design assumptions and patterns need to be unlearned.

le dorfier
A: 

I think a background in .NET development definitely helps. There are some differences between the two platforms, the biggest being that the Compact Framework only provides a subset of the .NET Framework. This can prove difficult when transitioning from the desktop environment when some functionality your familiar with isn't implemented on the CF.

A few other things to be aware of when developing for Windows Mobile devices:

  • Catering to the multitude of screen orientations, sizes, and resolutions
  • Processor speed limitations
  • Memory constraints/management
  • UI Design (You just don't have the same screen estate as on the desktop)
  • Data input (Stylus/Soft Input Panel)
Phaedrus
+1  A: 

Can't add a great deal to what is already here but I will say you'll be surprised in a lot of places if you've only used the Full Framework.

  • There is true, false and power off, remember this when writing code that touches system resources.
  • Performance - OMG, things are slow, probably much slower than you would expect in some places.
  • Missing bits and pieces - You will have to re-write the wheel on a few occasions as some stuff hasn't been ported due to space. Did I mention Decimal.Round() only supports banker's rounding?
  • Keys... there are limited keys. Sometimes you might want keys to do different things, then you will remember that WinForm widgets intercept keys and do pre-programmed things. Oh noes!
  • P/Invoke. Some of the things you are used to getting for free will require P/Invokes.
  • The GC is different. Might be worth reading up on it if you want to create a large app.
  • Not all devices are the same like PCs are the same.
Quibblesome
A: 

In addition to comments from ctacka about the confusion caused by various OC versions, I would mention my initial difficulty with the sheer number of CAB options for frameworks, SDKs, and especially SQL Server engines and clients. The options seem to be changing all the time and I'm still trying to sort it all out. My steepest part of the learning curve to Mobile Development was getting the development and runtime environments and install processes working properly.

Doug L.
A: 

As far as I am concerned, there's lots of really experienced and excellent desktop developers that run into mobile environment. The problem usually is that they are not aware of the differences between desktops and mobile devices. The biggest differences are especially in hardware limitations — slower CPU, smaller memory, screen size... The next thing to consider is the way how current mobile devices are used. The modern way of operation has an important condition: touch control. Of course there are many other aspects to consider. From my experience, these relatively known conditions are often overlooked when changing from desktop development to mobile.

Ivan