This will probably surprise some people, but I got my start in the computer industry writing code. In fact, my original intention was to pursue a career as a developer, and I spent several years learning various programming languages and object oriented programming paradigms. And several of my first books were about development topics, including titles on Visual Basic, Borland Delphi/Object Pascal, VBScript, Active Server Pages (ASP), SQL Server, and Visual InterDev.
As often happens, however, life took me in a different direction. But my background in development has allowed to me engage in discussions with various Microsoft representatives over the years in a way that is likely a bit lower-level than that of most of my tech reporter contemporaries. And in case it's not obvious, one great way to figure out what's really going on with new Microsoft platforms--Windows 7, for example, or Internet Explorer (IE) 9--is to study the software development kits (SDKs) and other developer-oriented documentation that ships with these products. Knowing what goes on under the hood is the key to being better informed.
With that in mind, I've been thinking about Windows Phone, a lot. And that's been true, really, since the product was first introduced in February 2010. At that time, I contacted my publisher and expressed my desire to document this wonderful new platform, and the result, of course, was the book Windows Phone 7 Secrets. But even while researching and writing that book, I had this idea in the back of my head that the advent mobile platforms generally and Windows Phone specifically could mark my reentry into software development. And now, finally, I'm doing something about it.
I won't be writing the next great Windows Phone app any time soon, probably. I look at this in the same way as I view my on-again off-again attempts at learning French, an ongoing effort to keep engaged and keep learning. But the reason I'm writing about this here is that you may be unaware of the sheer amount of documentation that is available out there--not just on web sites, but in free eBooks, video training series, and more--all aimed at helping new and existing developers wrap their minds around the unique new capabilities in Windows Phone.
And it's not just that: Windows Phone is also an ideal way to learn programming skills, since it is a simple, new platform that features a modern and logical SDK. So if you want to pick up programming for the first time, this is a far better place to start than, say, Windows, the Mac, or the iPhone. The tools are awesome, and free. And if you do ever get the bug and want to publish an app to the public Windows Phone Marketplace, that's inexpensive ($99 a year) and simple as well.
But let's not get ahead of ourselves. If you're just starting out, here are some great resources I've collected during my own journey.
The first and most important thing you need to know is that the Windows Phone 7 developer tools are free, absolutely free, and available to anyone. Simply browse on over to the Microsoft App Hub (formerly the Windows Phone Developer site) and click the "Download the free tools" link. This will bring you to the Getting Started page, where you can grab a single installer for an impressive set of tools and technologies, including:
Visual Studio 2010 Express for Windows Phone. A free version of Microsoft's powerful yet accessible integrated development environment (IDE), in this case nicely customized for phone development.
Expression Blend 4 for Windows Phone. A free version of Microsoft's user interface design tool, customized specifically for Windows Phone.
Windows Phone emulator. A pretty full-featured Windows Phone emulator that you can use to test your applications. (You can also test against physical Windows Phones as well, but this requires joining the Windows Phone developer program, which costs $99 per year.)
XNA Game Studio 4.0. The Windows Phone development environment for games makers also supports cross-platform development for Xbox 360 and Windows PCs. This environment includes the XNA Framework APIs, documentation, and more.
Silverlight 3 for Windows Phone and .NET Framework 4. The Windows Phone development environment for application developers includes Silverlight 3 for Windows Phone and the .NET Framework 4 managed code libraries as well as documentation and more.
Aside from the core developer tools download and install, you will also want to download and install the following two updates in this order:
Windows Phone Developer Tools January 2011 Update. This supersedes an earlier, October 2010, update and adds copy and paste support, a Windows Phone capability detection tool, a Windows Phone connect tool, and an updated Bing Maps control. Download here.
Windows Phone Developer Tools Fix. This update allows developers to deploy XAP ("zap") files (essentially Windows Phone application packages in a ZIP file format) that are over 64 MB in size. Download here.
Optionally, you may also want to download and install the Visual Basic for Windows Phone Developer Tools, which enables Visual Basic developers to create Silverlight applications for Windows Phone 7 using the final version of the Windows Phone Developer Tools. Note that Visual Basic is simpler and easier to understand than C#, the mainstream Windows Phone development language. But it's also less common, and much of the existing documentation out there assumes C#, not VB. Unless you're a VB guy, I recommend going with C#. It's a better language, and as noted before, better documented, especially for phone developers.
OK, getting and installing the developer tools is straightforward enough. Now what? If you're new to software development, you're going to have to start from the beginning. And while there are plenty of books out there, here are some free resources that provide a better (and cheaper) approach.
The first is Rob Tabor's excellent video series, Windows Phone 7 Development for Absolute Beginners, which assumes absolutely no prior programming experience (and thus may be slightly less enticing to actual developers, at least at first). Spread out over approximately 50 videos, ranging in length from roughly 3 to 25 minutes each, this series is a must for any budding phone developer. Rob's style is professional and unassuming, and just right for anyone worried about getting buried in the technical stuff.
For the more advanced set, check out Windows Phone MVPs Rob Miles and Andy Wigley in their also excellent Windows Phone 7 Jump Start video series. This consists of 19 episodes, each of which are about 50 minutes in length.
Part traditional tutorial and part video series, Microsoft's Windows Phone 7 Developer Training Kit is geared towards beginners and existing programmers alike, and offers three units: Getting Started with Windows Phone, Silverlight for Windows Phone, and Windows Phone 7 Developer Training Kit.
Finally, Microsoft representatives have discussed Windows Phone development in specific sessions at various conferences and trade shows over the past year. And there are videos available of these talks. Some notable examples include:
MIX'10. All of the keynote and session content from Microsoft's annual web and mobile developer conference is available online. And MIX'10 featured a number of important and useful Windows Phone talks, including Changing our Game – an Introduction to Windows Phone 7 Series by Joe Belfiore, Overview of the Windows Phone 7 Series Application Platform by Charlie Kindel, Windows Phone UI and Design Language by Chad Roberts, Michael Smuga, and Albert Shum, and much more.
TechEd 2010. While TechEd is mainly about IT pros and system administration, there's been a lot of developer information at the show for years as well. And the 2010 edition of Tech Ed featured some great Windows Phone content for developers, including sessions like Windows Phone 7 Architecture Deep Dive, Microsoft Silverlight Performance on Windows Phone, Building Windows Phone Games with Microsoft XNA Game Studio, and more.
Windows Phone Design Days. These videos chronicle a one and a half day deep-dive into Windows Phone inspiration, philosophy, goals, and more, along with very specific developer topics such as Windows Phone application deconstruction and a look at the designer resources.
If video isn't your thing, there are more traditional forms of developer resources available as well, including several free books (in PDF/eBook formats) and a wealth of developer documentation. Somed resources I recommend include:
Charles Petzold. The godfather of Windows programming has embraced Windows Phone with a number of useful (and free) resources, including the excellent Programming Windows Phone 7 (a 1000-page PDF book). If you need a free primer on C# and .NET, you should also check out Petzold's .NET Book Zero: What the C or C++ Programmer Needs to Know about C# and the .NET Framework (267 pages). It's not free, but Petzold has also written a gentle introduction to C# development in Programming in the Key of C#: A Primer for Aspiring Programmers. (It's $23 on Amazon.com.)
Windows Phone Programming in C# (also known as the Windows Phone Blue Book) by Rob Miles (160 pages) is available for free from his web site. Miles offers other useful and related (and free) books as well, including some titles on the C# programming language. And you can download a full set of course materials for Windows Phone programming, based on this book, from the Microsoft web site.
Silverlight for Windows Phone: Learn & Practice by Puja Pramudya (157 pages) from Microsoft Innovation Center in Indonesia is another free eBook. You can download the book in PDF format from Pramudya's SkyDrive site.
Aside from these resources, Microsoft does of course offer free online documentation for Windows Phone developers, and as anyone who has used the company's online developer documentation can tell you, it's quite good. It's broken down into sections on Windows Phone Development, Silverlight for Windows Phone, XNA Game Studio 4.0, Expression Blend SDK for Windows Phone, Visual Basic and C#, and Using the Visual Studio IDE for Windows Phone projects.
Aside from the videos and other content listed above, there are a ton of other community resources out there, including tons of blogs, podcasts, and other sources of information about Windows Phone development. This list is by no means exhaustive, but it should get you started.
Community Resources at Microsoft's App Hub site - links to blogs, community sites, user groups, and more.
Windows Phone 7 Community Forums on MSDN - Active peer-to-peer discussions about various Windows Phone development topics, including the tools, how-to's, in-app advertising, and more.
Are there any awesome and unique Windows Phone developer blogs, podcasts, or other resources I've missed? Please drop me a note and let me know; I'll update this article with any applicable resources.