Is there a reason I should not start with C# Is there a reason I should not start with C# ruby ruby

Is there a reason I should not start with C#


This is likely to result in a flamewar but I think C# is a pretty good language to start with for Web Development.

It is a full featured object oriented language and is statically typed and compiled. It's very well documented and has a huge developer community.

If you absolutely have to run on Linux/Apache and do not want to use Mono, that would be a reason not to use C#. Other than that, I don't think there is a compelling reason not to, particularly with ASP.NET MVC, which lets you move away from the WebForms model.

This is not to say that WebForms is necessarily bad but some might object to WebForms as it introduces abstractions that are not inherent in other web development platforms.


If you go with C# for web development, depending on your experience with web technology, I'd heartily recommend starting with ASP.NET MVC before ASP.NET Web Forms.

ASP.NET Web Forms is the original style of building ASP.NET applications, and tries to abstract a lot of the details. It allows you to build applications without realising what's happening under the hood (post data, state management). In my opinion, these abstractions although making things easy at first begin to "leak" when you get into more complicated scenarios (as this tutorial proves).

ASP.NET MVC on the other hand makes it easier to build web sites that are a lot "closer to the metal" while still keeping you productive. If you want absolute control over the resulting HTML and aren't afraid of things like cookies, form tags, post and query string data, then you might enjoy ASP.NET MVC a lot more.

Of course it would be beneficial to know both. But if I was starting now, I'd probably start with MVC and move to Forms (then realise how bad it is and move back :)).


There are no "best language over all". You use one tool for the purpose it has been made, that's why there are several tools.

Since your question is "why not learn C#", I'd say :

  • If you plan to work with other OS then Windows (Mono cannot compare).
  • If work in an env or with people not .net friendly (e.g : bank, scientists)
  • If you work in an env or with people that are expert in another good tech (never underestimate the use of a good master).
  • If you think Free Software matters so much that using a MS product is not worth it.
  • If you don't like MS Visual Studio (working in c# without a good IDE is a pain).
  • If You plan to program something that .net is not suited for (e.g embedded devices, scripting, real-time, fault tolerant system, AI, etc).
  • If you are a web dev and can't afford a Windows Server Licence.
  • If you want to learn programming with the very basics, including simple functions and quick and dirty scripts.

Now, I program in Php, Python, Java and C#. Python is my language of choice, but c# is really the first MS programming tool that seduced me : it's clean and efficient. Really, it's about what you want to do, not a question of religion.

Make YOUR choice.

That's said, C# sucks and Python rocks.