Learning C# from scratch outside of a Windows environment… what are you missing?

I have a little over 15 years experience with Java development, and am interested in learning C# in light of the recent changes around Microsoft and openness.

However, the only machines I have at work are Macs, and the only machines I have at home run Linux. I don't mean to troll, but I simply have no interest in dealing with Windows, even in a VM or dual-boot manner. I understand that true cross-platform support is coming eventually… but if I were to study C# today it would be via Mono, and using some IDE other than Visual Studio (e.g. MonoDevelop?).

So with those constraints, what exactly WOULD I be missing out on? I hear that Mono's support for ASP.NET has quirks, but is it basically up to date with the "real" CLR? I'm less interested in desktop app development, but does Mono basically support whatever is the currently preferred way to write Windows apps? How does MonoDevelop (or any other cross-platform IDE you might recommend) compare against Visual Studio, or for that matter against IntelliJ or even Eclipse in the Java world?

Bugs or missing features aside, how much of the C# "way of doing things" would you miss out on by learning from scratch using Mono? At the beginner's hello-world level, I imagine that the core language is the core language. However, I know that if someone learned Java from scratch without using Maven or Gradle… then if they found a job working with it professionally, they would have a TON to learn about the fundamentals of structuring a project and approaching development in an idiomatic way. If 100% of your C# experience is in Mono, then how lost would you be if you ever HAD to work in a Windows / Visual Studio setting later?

by BadMoonRosin via /r/csharp

Leave a Reply