I've dabbed with various languages but C# is my first serious one,
I've read "Head First C#" and created a few projects. But after
reading the post above I've found it a bit disheartening that I may be
going about it all wrong, obviously I respect Joel's opinion which is
what has thrown me a bit.
I respect Joel's opinions too, but they are just that: opinions. There's absolutely nothing wrong with using C# as a starting language.
The biggest advice I can give you, or anyone doing any programming (even if they're starting in vanilla C!) is to not be stagnant, and don't be religious. I don't care what programming language you're starting with, or how pure or righteous that language is - in this day and age you cannot afford to sit in only world of programming.
For example, I started programming with PHP3 back when I was a teenager. I built some small web apps and a few web sites with it; I thought that I was a genius programmer and that I could do anything with PHP3, and frowned on people who were all about ASP or BASIC. Boy, was I wrong.
Now, don't misunderstand me here - I'm not advocating that you try to be a Jack of All Trades. At heart, and in trade, I'm still a PHP programmer. PHP is my bread and butter, and I know it inside and out. However, my PHP skills didn't become what they were just doing PHP. Here are some highly important concepts that I didn't grasp from PHP, despite working in it professionaly.
- jQuery (yes, separate): the DOM and Ajax
- Visual Basic: Objected-oriented programming
- C#: Generics and closures
- Ruby (on Rails): The power of MVC design
I could go on, and so could many others on this site as well, for days. Even though I'm a PHP programmer I was able to bring all of these other wonderful concepts back with me into the work I do every day.
What's my point? Learn C#. Become a master of C# - you'll have a long, successful career and you'll probably accomplish some amazing things. But don't pigeon-hole yourself. Journey, and taste other languages and environments and concepts.