The end of .NET? I can't wait.
Ok, I admit, that title is a bit over the edge, but still that is how I feel. Developing for .NET is increasingly becoming not fun and far too expensive. The only reason to do it is because customers expect products for .NET, but under slowly increasing pressure from developers, that is going to change. It may take a while, but it will happen. There are a number of reasons for this.
.NET development is single platform. Admittedly the largest platform, but a platform that is increasingly having to share the market with other platforms. And already, according to some, there's more sales potential for small developers in the OSX market than in the Windows market, due to a number of factors like customers that are more willing to buy and to pay for software, less competition in each market segment, etc.
.NET development is also entirely dependent on Microsoft's development tools and those are increasingly expensive. For reasonable development, you need an IDE, a good compiler, version control, bug handler, coverage analysis, profiling, and a few more. We used to have most of that in the regular Visual Studio, but recently MS has removed all the goodies and plugged them into the Team system only, which carries an obscene pricetag (in Sweden around USD 13,000 + VAT for the first year…). This means that a regular one-man development shop can barely afford the crippled Visual Studio Professional at USD 1,500 for the first year. Sadly, there aren't even any decent and affordable third party products to complement the VS Pro so it becomes a "real" development suite. And with every version of Visual Studio this only gets worse. More and more features are added to the Team suite and removed from the Pro. This is not the way to breed a happy following.
Meanwhile, OSX comes with XCode, which is almost as good as Visual Studio Pro, and is free. Objective-C is also a much more modern language with more depth than any .NET language, even though it is actually older. But, sadly, it's not cross platform either and I don't see how you can get the Windows fanboys of the Scandiavian healthcare scene to even consider another platform. Same probably goes for most other industries.
I'm no fan of Java, but on the other hand I've never worked much with it so that opinion doesn't count. Eclipse, the IDE often used for Java development, is cross platform, very capable, and open for other languages such as Python, Flex, and many more. Yes, I know, in theory so is Visual Studio, but how many real languages do you have there? You've got one: Basic, masquerading as C#, J#, and, um, Basic.
Using Eclipse on any platform, you've got a real good chance of covering the line of tools you need, profilers, coverage, version control, without much pain and without breaking the bank. And you can write crossplatform integrated larger systems.
So, I guess it's time to bite the bullet. I really like XCode and OSX, I really know C# and .NET, but I really only believe in Java, Flex, Python, Perl, C++ under Eclipse for enterprise development in vertical markets. And in XCode under OSX for regular shrinkwrapped desktop apps.
Not even Silverlight is very attractive and that is largely due to the marketing and pricing of the tools for it. A small developer organisation can't afford it. Flex and AIR looks like serious contenders, though.
1. Suggest listening to customers instead of pressuring.
2. You might want to consider mono, which runs fine on OSX, and has a pretty good ide called monodevelop (free). Also, there's a plugin for eclipse which supports C#. Also, there are options for running java under .NET (ikvm, ja.NET, etc).
1. You misunderstand me. I'm not recommending pressuring customers, I'm saying that this is what happened on a large scale 25 years ago and caused the switch from mainframes and minis to the microcomputer. And the same phenomenon is starting now, causing a switch from Microsoft to a freedom of choice. No, not to OSX, but OSX leads the way showing that other systems actually work.
2. Mono: ok, that's a very good suggestion, thanks. Just tried it, but ran aground on DevExpress components, since they use some pinvoke calls that Mono doesn't support. Hopefully either Mono or DevExpress fix this, else I'll have to wait until another project to try this for real.
Next Next post: A feature?