Last week I got a tweet “i am electrical engineer and wanna start a career in windows phone programming. any advice ?! “.
I’ve been thinking about this for a while, and this is my advice, for what it is worth.
Get the Free Tools
Head over to http://create.msdn.com/ and grab the Windows Phone SDK. It is a free download and will give you everything you need to get started.
Get a Windows Phone
You can write programs without needing a real device, but for the proper experience you really need some hardware I’m afraid. The good news is that with all the shiny new Nokia devices coming along, lots of people are moving up in the Windows Phone world and so there is a good supply second hand devices at very good prices. As far as I’m aware, all of the older phones can be upgraded to the latest version of the software and so you can perform Windows Phone development on one of the first generation devices. If you can find a second hand Omnia 7 device that would be a good one to start with.
You might have noticed that Windows Phone 8 is just around the corner, and may be thinking about holding off for this. I’m not sure that this would be a good move though. Whatever you do, there is always another version coming along and the skills that you pick up on Windows 7 will transfer over to Windows 8 when the time comes.
Decide whether you are writing games or applications
If you want to write games you can think about using XNA. Unfortunately the future of this platform is a bit more hazy than I’d like, but as a quick way of getting into writing silly games (like Cheese Lander) then it is very hard to beat. If you are getting started and want to write some useful and fun stuff I think I’d go for the Silverlight approach at the moment. This will make it easy to move into the XAML based environments on Windows Metro and Windows Phone 8. It is also getting increasingly viable as a casual gaming platform.
Get the Free Documents
If you have never programmed before you could read my C# Yellow Book. This will give you a good grounding in programming. You can find out about Windows Phone programming from my Windows Phone Blue Book, which is available from the same place. There is also a ton of free stuff on the http://create.msdn.com/ site that you can use.
Find a Problem to Solve
Coding in a vacuum is very hard. It is much easier to learn how to write a program if you have something specific to achieve. As your background is electronics I’d try to think of a simple problem (for example a resistor colour codes calculator) which you could write a program to solve and then have a go at coding that.
Use the Forums in the Right Way
There are lots of forums out there with people who are more than happy to help. However, they hate it when someone posts a problem like “I’ve got to do X. Where do I start?”. This kind of post sounds like someone is asking the forum to do some work for them. A much better post is something like “I’ve got to do X. Is Y a good approach to do this?” or even better “Why does this code not work?”. This shows that you have thought about the problem and done something before putting it out there. And as soon as you know something, start posting sensible replies to other post questions, so you give back to the system.
Blog what you do
I’m assuming that you are doing this as a way of getting employment. If this is the case (and even if it isn’t) you should start a blog about your progress. In the blog you can put what you learn (so you don’t forget it) and chart your progress. Potential employers are very impressed by people who are constructive and resilient. A regular blog will be something you can point them at to which will show how you have progressed. Keep the focus on the technology you have learned, and how you have applied it. You never know, you might find other people following what you do and learning from you. Regular blogging is also a great way to build your writing skills, which are also very useful for getting work.
Learning to program is hard work. The most important thing about success is persistence. Focus on getting little things to work and then building on them. Don’t have a huge, grand, idea and then get upset with yourself when you can’t realise it. This is the most common reason for people giving up on programming.
If you find yourself getting bogged down or stuck on a problem remember that you can always simplify your solution and just focus on one small part. With a bit of luck you will get a little buzz when you get something to work, and a bigger buzz when someone looks at your program and says “How did you do that?” and that will motivate you to do more. Good luck.