Should I learn .NET and C# before learning ASP.NET and Sharepoint?

This really deserves something more than "Should you walk before you can run?", which was my first thought :)

With 30 odd years of experience (I assume programming experience), you should not really learn the basics, you need to get in depth understanding of the C# developement environment, IIS, SQL Server and SharePoint (in roughly that order). To be efficient, you need to compare these technologies and see how they are different from what you are used to rather than reading yet another book that starts with variable declaration syntax.

I personally would get more from time spent with an expert, but that is not usually an option. Fortunately many of these people blog and those can be really illuminating. (see Eric Lippert)

When reading the detail, you will most likely be able to understand how the details operate without needing a full chapter.

Small snippets of information are going to be more useful to you than large amounts of basic knowledge. E.g. I assume that a snippet of information such as "SharePoint stores all the documents for a Site Collection as a binary field in a single table." will provide you with more information than a several thousand word overview of SharePoint site collections.


As with any language, you will need something to do while learning C#. While you can do sample projects as shown in the books, as an experienced developer, I would personally recommend learning by doing an ASP.NET project (you don't need to write a lot of "this is a function" type exercises as C# functions are pretty much the same as any c-style functions).

In short, I would put off Sharepoint development due to its very specific nature, but not ASP.NET development.

Update: One other thing...Visual Studio makes web development quite straightforward. It is not as if Windows development is so much simpler than Web Development that it makes it easier to focus on the C#. It is more the case that each environment (Winforms versus Web) provides a different context within which C# is used. Thus, you may as well learn C# within the Web context since that will be your long-term focus.

One other thing: you may want to see this answer that I offered to an earlier question about getting started with .NET.


I suggest you start learning from a book that will introduce you both to .NET and C#. When you will understand .NET world, you can go further to ASP.NET. Since you come from *nix world, you should learn how different .NET world is from your previous experiences, and even from Windows itself. I spent some time reading Andrew Troelsen’s book, and I think they are quite ok to start, and then move to ASP.NET. From the list above I have heard, that Liberty’s book is quite ok.

Troelsen: http://www.amazon.com/2008-NET-Platform-Fourth-Windows-Net/dp/1590598849/ref=sr_1_1?ie=UTF8&s=books&qid=1247572543&sr=1-1