Tuesday, July 01, 2008

Windows, C#'s Achilles' heel

Before doing Ruby full time I spent most of my days coding in C#. In those days C# wasn't quite as good as Java, but I did prefer the .net library. Visual Studio crashed, but not very often, and ReSharper made coding much less painful. I was developing on a Windows box, but I had never known any other development environment, so I didn't mind. I was happy.

Then the Ruby hype began. I've never really been a big fan of hype, but I do like trying out new technologies if anyone credible has given it two thumbs up. Ruby had more than enough advocates, so I decided to try it out for a project or two. When I started my second project my Dell windows laptop died, and I took the opportunity to switch to the Mac -- one of the best moves of my development life.

Almost 28 months later, I find myself interested in C# again. The features of C# 3.5 appear interesting, and I've always liked the idea of being skilled in multiple languages. You know, the right tool for the job and all that. There are plenty of situations where C# is the right tool. There's a large install base and a big community also. Being part of that community, using the new version, innovating, that sounds like fun. But, there's one thing that really kills C#, Windows.

Windows really prevents me from diving in head first. I haven't run Windows since I bought my first Mac. The features of C# 3.5 are so appealing that I've been contemplating the idea for awhile now, but the idea of a Windows development environment has held me back from making the switch.

Okay, that's a lie, not having a client doing C# 3.5 is the real reason I haven't crossed over.

But, wouldn't it be nice if you could work with C# on a mac? I'm not talking parallels, I'm talking about full on development in Leopard. Truthfully, switching to Windows wont stop me from giving C# 3.5 a try, but I wonder how many other people are hesitant for the same reason. No matter how beautiful C# becomes, Windows will always be it's Achilles' heel.


  1. I like C# as a language, have mixed feelings about the .NET framework as a whole, and absolutely detest ASP.NET.

    One thing about C# is not only developing on a Windows boxen, but you'd be using the .NET framework, which is built around all the weird stuff on windows. So even if you decide to go Mono, you'd still be stuck with Windows weirdness in .NET.

    So, very mixed feelings, and I don't think I am going back anytime soon.

    Did you read From Win32 to Cocoa: a Windows user's conversion to Mac OS X ?

  2. Amen. I used to be a full time .net developer until I started my own business (and decided to try Ruby On Rails for that purpose). I, too, bought my first Mac shortly after starting out with Ruby, and although I'm up to my eyeballs in Rails at the moment (and not really considering using .net for anything), not being able to use my trusty Mac would certainly be a big barrier to entry for me.

  3. interesting thoughts. I'm a .net dev by day. I remember the .net 1.0 days. Things have changed though and .Net competes with or beats java now.

    I know quite a few .Net devs (many Alt.Net people) who use macbook pros with parrellels or vmware fusion. I was leaning towards getting one earlier this year but have decided against it. I'm a keyboard junkie and the mac keyboard drive me crazy. Also I can't get around the OS as easily or as quickly because things don't make sense to me. I realize this is a learning curve issue. Also it would cost me something like $4500 to get a 17" macbook pro capable enough for the next 3 years. I can get a comparable HP for $2000 and not have teh crazy from getting used to OSX. Also, I'm happy dual booting with Linux which is great for rails work.

    just my opinion though.

  4. Agree that developing on a Windows Desktop is a pain - no matter what you are doing.

    What I would do for a way to be able to develop for Windows without running it!

    Don't we deserve better than this?

    The Schmitzer

  5. Amen. I'm really impressed with the features of C# 3.5. The Castle project are doing some very interesting things, and I could get used to everything having an uppercase leading character.

    What I can't get used to is Windows. It could be so much better, but you know they can't fix things for fear of breaking compatibility.

    When the Mono team implement C# 3.5, I'll be having a look.

  6. I'm in a similar position - except I'm a .NET programmer who just got a Mac this year and haven't been able to cross over. I myself want to be able to find paying clients doing Ruby or other languages I can easily, natively, work with on my Mac.

    I've been doing some .Net 3.5 and frankly, its not all that. Sure, there are some cool features, but there will ALWAYS be cool features. (Grass is always greener, and all that.) My advice would be to just ignore windows, and satisfy your urges with a good AJAX library or AIR or something.

    The minute I can make my $$$ and move OFF of windows and .NET, I will

  7. I agree completely. I work on .Net primarily at the moment, and every time I look into starting a new project openness and cross-platform support become major features for me.

    Which is why I'm using Ruby or Smalltalk, for any new projects that that don't have Windows Forms as the main component.

    I can't really see it changing, but you're correct saying "Windows is C#'s Achilles' heel". It's a really huge barrier when choosing a platform for development.

  8. Good post, Jay. I'm in the same boat with you (once a C# developer, now completely RoR), and I sympathize entirely. C# is a very pleasent language for me to work in, and I like the looks of 3.5 very much, but I'm just not willing to deal with all the baggage that comes a long with it.

  9. Anonymous10:19 PM

    BTW, its C# 3.0, not 3.5. Mono already has support for C# 3.0, so you could try that.

  10. http://www.mono-project.com
    Does most of the new fuzz with msc -langversion:linq
    See Mono CSharp Compiler

  11. Roger Leite8:21 AM

    I agree completely. And one of the things i just changed to Java is the possibility to work (in development) with any OS i want. Today, the linux is my choice, and i know that i can change "any time".
    C# is good, the problem is, who is behind of it.

    Great post !
    Greets from Brazil !

  12. Anonymous8:51 AM

    Hi. I moved from ASP.NET & C# to RoR a while ago. I kept up with the features of c# 2.0 but not so with 3.5. Could someone list what's so attractive about 3.5? Thanks.

  13. Ah sound similar to me. I was using vb, C# in a job a year ago before i bought a Mac and learning Ruby. But then now are looking into developing system for trading software which unfortunately will be Windows based. So I will be picking up C# soon.

  14. I had the same moan (http://jupitermoonbeam.blogspot.com/2008/03/polymonoism-aka-legend-of-cross.html) a few months ago and feel the same.

    I've been playing with Mono on OSX and it's pretty stable, not all the funky new language features are there but it's good enough for a lot of things. It still misses a decent IDE: MonoDevelop can't stop crashing so I am reduced to VIM most of the time.

    The coolest thing I've found is using IronRuby (or IronyPython) on mono to do discovery and spiking on types (by importing the CLR and then the type) which is very cool.

  15. I developed Selenium Ice ( http://code.google.com/p/selenium-ice ) in C# with Visual C# Express and Windows XP via VMWare Fusion on my MacBook. And while my NAnt scripts are running, I'm just a Command-Tab away from going back to Happy Mac Land. Seriously, it's not that hard. :-)

  16. (Disclaimer: I'm an engineer at VMware. I don't work on Fusion, however.)

    Just wanted to add to Jason's comment that with Fusion in "Unity" mode, you can mix Windows and Mac apps.

    So you can stay in the Mac environment and just have Visual Studio in a window like any other. This is how I code C# on my Mac these days.

    Shown here (but consider turning off your speakers...):

  17. Anonymous12:32 PM

    before any body judge java against any language, just remember that it is the most ported lanaguage across the largest no. of devices and platforms out there, chips, cards, mobile phones, PDAs, OSes name it. that is one thing no amount of features packed into C# is ever going to beat

  18. Thanks for an important post which I hope microsoft reads. I too have the same feeling that I like c# and the .net framework. I really like wcf and I think that I will like asp.net mvc when I get to try it. However I'd really like to get of windows somehow.

    I think I will start running visual studio on a windows server that I run a terminal client against from Ubuntu. Anybody tried that? How many clients do you think can use the same windows server for coding at the same time with reasonable performance?

  19. C# is an ECMA standard language and does not belong to Microsoft! Although you can use C# in windows, there is no direct relation between them. They are apples and oranges


Note: Only a member of this blog may post a comment.