Learn Dynamics CRM development with these great resources

A regular question I get asked is: I'm new to Dynamics CRM development, what training materials you would recommend?
Training materials
Of course there's no one-size-fits-all answer to this, it all depends on your background in software development. The following resources are a great place to get started:
- Pluralsight - Dynamics CRM Developer by David Yack. This multi-part course, while released in 2013 is a great head-start.
- MSDN - Tutorials and resources for learning about development for Microsoft Dynamics CRM - does what it says on the tin.
- Microsoft Dynamics Developer Center - a lot of excellent content to take in.
- CRM Online - create a free trial, learn by doing. Try and solve a problem (i.e. build an actual solution). Use the Self-Start trial and you'll be up and running in minutes.
- YouTube - the official Dynamics CRM channel has a lot of great content, while geared more towards end users these videos will help you understand the features of some of the out of the box entities.
- CRM Help & Training - great training material for Users & Admins, includes training and adoption kits that can be used in the rollout of CRM within your organisation.
- The CRM SDK (2013 / 2015 / 2016). I wouldn't start here, it's pretty dense. But learn to navigate the documentation for the APIs, and get familiar with the tools that come with this. However the SDKs also come with sample code which is always a great learning resource.
- Dynamics CRM Roadmap - helpful if you're trying to understand what's coming next, but also what's online vs on-premise
- Exams and Exam Guides - a lot of great materials linked from these exam pages.
- Microsoft Dynamics Learning Portal - this is further down the list, because not everybody has access to it. If you work for a Microsoft partner, get into it.
Tools
What tools do you need? To get started all you need is a web browser and a CRM Online trial. If you're going to write server-side code you'll need Visual Studio and the SDK Plugin Registration tool. Of course Visual Studio makes it easier to write JavaScript and other web resources. You don't need to go to the trouble of setting up virtual machines and all that jazz straight away, however be mindful of you're destination environment - for example, targetting CRM 2013? Probably want to go the VM approach rather than using CRM Online for your development environment.
Community developed tools you'll want to get familiar with:
- XrmToolbox - invaluable for SiteMap editing, the other modules are all excellent bonuses.
- Ribbon Workbench - much better than editing the XML by hand!
- Dynamics XRM Tools - a pretty handy set of tools in a managed solution you can install into your CRM Organization
- Dynamics CRM Developer Extensions are a community alternative to the SDK tools for Visual Studio. If you're starting out, probably best to stick with the SDK tools because a lot of the guidance and instructions are for those tools - then when you know what you're doing check these out.
Blogs
Blogs can be hard work for people new to Dynamics CRM, because often the content is for other experienced developers. However, Surviving CRM often covers great in-depth reviews of CRM functionality and minimal-code how-tos for solving problems. Hosk is also a pretty prolific Dynamics CRM blogger with good content for developers.
A great index of other Dynamics CRM blogs is found at the Dynamics Community site.
Community
- The Dynamics CRM Community Forums are a great place to ask questions, and also find answers for questions that have been asked before.
- CRM User Groups - find out if there's a CRM User Group near year, and find virtual events if you can't make it in person.
- Facebook - there's a Dynamics CRM group on Facebook with plenty of clever people as members if you want to ask questions
Other tips
The other bit I would add to this for .NET Developers getting in to Dynamics CRM: do you really need to write code at all? Of course this is counter-intuitive, as a developer you'll naturally want to write code. But often this ignores the powerful functionality you get out of the box with Dynamics CRM. With the rapid pace of releases for Dynamics CRM, there are more and more features out of the box that can solve your problem without having to code. Also, this rapid pace of releases means more upgrades and regression testing of configured functionality. The less code you write, the smaller the target for regression testing when upgrades come along.
One other bit of guidance - learn about the out of the box entities. Some of the out of the box entities have special features / functionality / magic that you you do not get with custom entities. So when configuring a solution, it sometimes makes more sense to reuse an existing entity - either "as is", or rename it and repurpose it for your solution.
Don't reinvent the wheel. Check out the Dynamics CRM marketplace for solutions to your existing problems. Check CRM Tip Of The Day. Reuse existing solutions for auto-number generation, workflow extensions and other common problems.
Part of the return on investment for using Dynamics CRM as a business platform is being able to rapidly configure it to meet your business needs. If you try and solve everything by reinventing the wheel and writing code that's been solved hundreds of times before you'll undermine that. As a developer you exist to solve business problems. If that means reusing an existing solution is the most effective way to do that, then swallow your ego and install that solution. Stand on the shoulders of giants mentality here, business users don't care if the way you'd code that solution is different to the way the 3rd party solution is written - they care about the system assisting and empowering them to go about their daily business. If you can get them results quicker with someone else's code, then do it. /rant.
I hope you find this helpful, let me know in the comments if there's other things you'd recommend.