views:

269

answers:

6

Hi,

I am new here and new to windows mobile development. But I have seen and experienced, for new developers having no trainers or experienced people around windows mobile development is like a hell shaking one. In complex topics you are going to find help from nowhere except you are lucky.

So my question is how should I gain expertise in windows mobile without having any trainer. The thing that i only know is C# and have a rough experience of one and a half months in windows mobile development

+4  A: 

If I understand your question....

If you have c# experience, you will not really need a trainer.

Building on Windows Mobile is very straight forward and easy if you know .net.

If you have Visual Studio (I think any edition apart from express), it is simply a matter of starting a new project and selecting mobile device.

I honestly love it! I build small applications all the time for my phone... little calculators for when I go shopping, programs that fire off a trigger and get a response from a web service and more... basically to make my phone do what I want (and no one else would be interested in).

I go by the method of simply writing an application the way I want and then if a feature is not supported by the cut down .net compact framework, I try and search for an alternative method that is - however, I have found little that doesn't work.

Wil
Hi Wil thanks for sharing your experience but please can you help me out how to play streaming audios and videos in windows mobile.
Madhup
I thought I answered your question! Please edit it as I am not sure what you want now!
Wil
Ya thanks, I got it.
Madhup
I'm going to go out on a limb and say writing for Windows Mobilie is *not* straightforward nor easy, and if you don't know how to read C++ it's even more difficult.
ctacke
This advice is fine for utils and little apps. Scale that up to large apps and it becomes the worst advice ever i'm afraid. This advice is the reason I get contracted out at silly rates is because desktop devs just assume it will "be fine" on mobile. I started this way too.... it's not true! Mobile and Desktop are _very_ different platforms and Desktop is _very_ forgiving whereas Mobile will bite you.
Quibblesome
+6  A: 

Learning to write actual maintainable, saleable and usable applications for the Compact Framework is difficult. The CF is way, way scaled down, so there is a lot that a desktop developer will not have that they are used to. I'd been developing CF applications since before the CF existed and I still find many things difficult (just try getting a control with transparency drawn into a container on a form with a background image and doing it without looking at the code in Project Resistance).

In my opinion, there really are 2 things that are essential.

  1. You must be able to read and understand C/C++. All of the SDK docs are in C and a large amount of samples for using anything useful on the device tend to be in native code. If you can't translate that, you're at a serious disadvantage and you have to hope someone else has already done the work. Even if they have, they you have to rely on them having done it right.
  2. You need CF experience. Desktop experience is largely worthless in the CF environment once you get past syntax. Laziness like data binding, using Data Sets, not cleaning up objects and all of those things that desktop developers do every day will kill a CF app. You need to throw out what you think you know and start re-learning. You do that by simply writing code every day.

Don't expect miracles either. I've been writing code for Windows CE for over a decade now and the amount of things I don't know about the platform still far outweighs the things that I do know.

ctacke
thanks for this motivation ;)
Madhup
XmlDocument too. They should have never ported that memory gourging object into NETCF.
Quibblesome
+3  A: 

Developing in the CF can be challenging. Knowing C# is important before moving forward with the Compact Framework - to which you have. I would suggest that you start with smaller applications. Once you get the feel of Visual Studio and working with the emulator, I would suggest that you play around with a setup project. Once you get an idea on the flow of CF development, deployment will probably be your next step.

One area that I find that I spend time on is Designer support. If you are writing controls for other developers - design time support is crucial. Checkout the article at http://www.mooseworkssoftware.com/VS2005%20Control.htm for more information (I know its for VS2005, but it really helped our development).

As you move forward, create small projects in different areas and learn the pitfalls to each. An example would be GUI and dealing with different screen resolutions that are supported by different devices. Next, maybe DB support. After you get comfortable with a couple of areas, bring them together in a project and build from there.

Give it time - sometimes it will be painful, but the possiblities are endless in writing applications for the CF and what the market is calling for.

  • Craig
cbuck12000
A: 

Hi Madhup, I believe that following article gives quite a good overview of the most common bad practices many developer do when turning to mobile development:

http://www.codeproject.com/KB/showcase/CF%5FDevelopment.aspx

After realizing the basic mobile limitations (small display, HW performance limitations, limited input capabilities), the windows mobile development will become just a question of smart app design.

Ivan
+8  A: 

Yea.... it's quite a step to be honest. It's evil as well because at first glace it looks to be so very simple but then it turns around and bites you.

I speak from experience as I made this journey starting in 2003. Oh, I had no trainer either so I just learnt via bitter experience.

Know your limitations

I remember the first ever CF application. I was such an idiot..... I wasn't much good at developing back then either. First mistake I made was overestimating CF 1.0. I couldn't possibly imagine that the CF didn't have a read-write datagrid so I specced it...... then found out that oh yes, there wasn't one. So I had to write one myself (and remember I was rubbish at this time too). I hacked one into the existing datagrid (although tbh I should have just started from scratch). I remember that the "delete" function where I had to remove a row and then select the "now currently selected row" was hellish because it would go up or down depending on how many items were in the collection and where the scrollbar was.

There are many times that my desktop development buddies will categorise me as mad when I tell them what i'm working on.

"You're doing manual Xml Parsing? Are you crazy?"
"Ewwww code gen?"
"You.... re-use your windows forms?"

Yes, working on CF will make you look crazy to outsiders.

Performance

This can be taken to extremes but every little does help. If your building a big flexible application then think very carefully about perf. Consider replacing Reflection with codegen. Consider using an XmlReader instead of an XmlDocument. Sure this advice might be crazy in most cases for desktop but for CF it is sensible.

Know your PInvokes

In desktop land you can live in pure managed. No chance of that happening on CF. Some of the simplest things (playing a sound, setting the time, changing the volume, networking, etc etc) still only exist in the unmanaged world in Mobile. OpenNETCF have done an awesome job in exposing some of these but you will always stumble into one or two where you will need to write your own.

There is true, there is false but there is also FILE-NOT-FOUND

PowerManagement, how I love thee. In a usual C# app code goes the way of the logic (like a fork with an IF), perhaps an exception will be thrown and perhaps there will be many threads treading the path of the code. This is already complex. Add into the mix the idea that the power might vanish at any point. That's right, the using statement you were relying on to call Dispose might never call dispose because the device was turned off and then it ran out of power.

Device specific fun

Another big difference in desktop/mobile world is hardware and manufacturers. On the PC you can generally assume that the hardware will be okay and firmware updates should do the job. In CF a firmware update may well kill your code. Some hardware might sorta, kinda work if you bash it round the head in a certain way. Basically your device integration can (worst case) be a big black hole of time. Remember to work this into your estimates.

Quibblesome
I should note that playing a sound can now be done via the managed object SoundPlayer available in CF 3.5
Quibblesome
+2  A: 

To answer your question, Windows Mobile is like paradise for new developers. You use the same tools and languages you are used to from the desktop world and essential things like in device debugging and emulators are just there for you. You can build simple applications with no training, just by following one of the many beginners tutorials available.

After that, there are of course many complicated and difficult issues to overcome, but in my opinion the fact that you will be able to start quickly is very important.

Also, you need to also need to compare Windows Mobile with other mobile platforms. Compared to platforms like Symbian, Brew and J2ME Windows Mobile is much more advantageous for new developers. I don't have experience with iPhone and can't comment about it, but comparing to everything else, Windows Mobile is easier.

kgiannakakis
Oops, I got the experience in iPhone development and thats y I think, windows mobile is like devil for the experienced ones also, If I give equal amount of time and effort to both the platforms and have the same knowledge in both fields I think I can do 10 times better in iPhone and other people do here in my organisation
Madhup
I hear from people that program for the iPhone that the UI is definitely easier. All needed widgets are there for you, fancy effects are easier and you don't need to fight with different screen resolutions. The same isn't necessarily true for background tasks. And C# is easier than Objective-C for a beginner. Windows Mobile have a lot of disadvantages, but hard to learn is not one of them.
kgiannakakis