Why are companies going to .NET and C#?

I just attended a campus job fair. About 6 employers seeking coders were present. All of them wanted C# and/or Java developers. Two firms were converting their “legacy” codebases written in Java to C#.

Now, as I understand it, Microsoft has made colossal mistake after mistake recently. Furthermore, their software has always been infamous for being proprietary and breaking backwards compatibility.

Why would companies be doubling down with microsoft? One firm proudly mentioned going from a codebase in some older version of C# to the latest .NET framework.

This forces them to use Windows, as I understand it, I don’t think mono is compatible with the latest whiz bang .NET framework.

I thought the new thing was to use open systems based on decades old Unix standards that don’t change. That GCC and ICC and other high end compilers are fast and reliable. That using open standards means that a manufacturer can’t “end of life” your toolchain on a whim and stop fixing critical bugs - you can just pay someone to make patches to the open sourced code.

So, uh, what gives? Given that facebook and google and amazon, all heavyweights, seem to be supporting open standards, where are all these consulting firms that want to use this C# stuff getting their clients?

Because a lot of the bad press about Microsoft is just that, bad press. I’m not saying they’ve never made a mistake, but their developer tools and coding environments work fine. C# is a really well-designed language that is continually being updated, and .NET works as well as anything as far as the actual framework goes. It’s not going anywhere, and regardless of what a lot of people will tell you, it’s being used in the real world quite a bit. It doesn’t have the market share that the various *nix stacks do, but it has a respectable amount. You can build a large, stable application using the Microsoft stack.

Disclaimer: I’m a C#/.NET developer, but I’ve also done my share of Java in the past.

I’m curious what “colossal mistake after mistake” you think Microsoft has made? Keeping in mind that the success (or failure) of products like Surface and Windows 8 have little bearing on the success of other products like SharePoint, .NET and C#. Not to mention enterprise staples like Microsoft Office, Internet Explorer and Exchange / Outlook.

As a project manager in a consulting firm with a lot of Microsoft clients, I can tell you that one of the main places we get clients is Microsoft.

For large enterprises, it is less important to have the “latest and greatest” technology as it is to have a stable technology platform provided by an established industry leader who will guarantee to provide long-term support into the foreseeable future.

But isn’t a superior solution based on technology you have control over better than something that Microsoft controls?

How much “control” do you think you really have over open source stuff? Put it this way: if there’s a Big Bad Bug somewhere deep in whatever stack you’re using, chances are you’re not going to fix it yourself. Organizations are concerned with their own code, and are not going to spend the considerable time and effort it takes to fix complex and difficult issues deep in their stack or a tool/application they’re using themselves. They’re going to rely on whatever community and/or company supports the product to track it down and fix it.

With .NET, you’re relying on Microsoft to fix it. It’s not all that different. Microsoft has a good track record of keeping their stack and dev tools working; their products are as reliable as anyone’s, and that’s not going to change anytime soon.

Also, just because it’s C# and .NET does not mean “no opensource.” Nor does a *nix/Java shop mean “all opensource.” There’s plenty of components and tools on both sides of the fence for both stacks.

Truly, you seem to be searching for a reason that *nix is superior to MS, and it’s not. Nor is MS superior to the many excellent *nix products out there. Both sides have their pros and cons. Even financially, they tend to be comparable - with MS products, you pay for them up front and it’s expensive; with open source products, you don’t pay up front, but you pay for expertise to set them up and keep them going, and that’s expensive.

It depends on your point of view. Some people who have to use development tools like C# and .Net run into limitations and confusion that are arguably mistakes. Those things have no bearing on the success of their products, and often are just about personal preferences. Throughout their product line there are similar complaints. In reality few of them could be considered colossal, and they are typical of the complaints people have about all software. I make those kinds of complaints about Microsoft, and just about every software product. As usual the biggest target gets hit with the most arrows.

Or to put it a slightly different way, there are half a dozen reasons that *nix is superior to MS, and half a dozen reasons that MS is superior to *nix. :smiley: Make your choice based on which of the reasons is most important to you.

Different languages have different strengths. If you’re developing for the consumer web, you:

a) Don’t have any control over the end user’s operating environment
b) Can’t predict demand effectively
c) Are optimizing for a cheap to build v1 since you don’t know if it’ll be successful or not.

In such cases, you want to deploy to the web, use an open source OS so you can scale horizontally and use interpreted languages that are slow but powerful.

If you’re building custom enterprise line of business apps, you

a) Have a lot more control over the deployed environment
b) Know fairly accurately what the demand is going to be
c) Care more about ease of maintenance over a potentially multi decade lifespan
d) By a workforce that’s decidedly average.

People who are used to working in one environment often deride decisions made in the other because they fail to understand the requirements. C# is a great choice for enterprise apps because it fits the requirements of the enterprise better than Ruby or Erlang or Go.