I recently moved off .net after 3 years. Now I am working in the wonderful world of linux (more on it in another post). Looking back and reflecting on .Net and windows, I feel windows is a pretty decent desktop OS (nobody else can beat it’s driver support). I still use it for my personal computing needs like browsing the net, paying bills, watching movies online (netflix runs on silverlight). However I am sure there are more Microsoft haters than lovers. You see for me being on the .Net and windows platform in general has been like being put on an island with only one woman. She has a lot of idiosyncrasies and you have no other choice but to compromise. But eventually you start loving her. Linux on the other hand is like a being in a casual relationship, if you hate a tool or application, there is always another choice for you. There are certain things that MS should do serious introspection on
1. Stop building and encouraging TFS: I am sure it is the one of the worst (if not the worst) source control systems available. When I went on a project with TFS, I went with an open mind thinking that it might not be that bad. But boy does it suck. If you think that it is a source control system with good visual studio integration, it is actually more of a good visual studio plugin which pretends to be a source control system. The merge tool sucks (don’t get me started on the auto merges). Checkouts say that they’ve checked out, but they haven’t. If you don’t use visual studio for editing, then the readonly flag is set on every file by default. The list goes on. It is a tailor made solution which sells itself well to non-technical top bosses. It promises to do everything from source control to project management to continuous integration. It sucks in all of those categories. CVS is probably 20 years old and is ages ahead of TFS. I’ll stop the TFS rant, there is enough of it already on the internet.
2. Think seriously about deployment tools: Contrary to what most redmondites might tell you, MSBuild is a bad imitation of ant (which itself is obsolete) and powershell is powerful but is like perl on .net steriods and can be abused very easily. And you know what in the age of continous delivery and automation, visual studio integration is the not first thing you should support. Msdeploy or web deploy advertises a tutorial which tells you how to use it from IIS and Visual studio. Who deploys a production build from visual studio ? There is some hope though in the form of nuget (‘inspired’ by ruby gems)
3. Catchup fast or kill Internet explorer: Microsoft might have won the First Browser war, but has lost subsequent battles to Chrome, firefox and Safari. Every release since IE7 has been a catchup game, with the target always being further away. Start using webkit at least and stop reinventing the wheel.
Having ranted about all the bad stuff, there are a few silver linings in the MS enterprise juggernaut. Nuget is a breath of fresh air in the package management area. .Net MVC is a very powerful and easy to get up and running (though inspired by rails). A successful platform is always built on the scaffolds of developer friendly apis and ecosystems. The app store has shown us that. Without the 3rd party apps, the iOS wouldn’t be as popular as it is today. Microsoft has to learn this. It seems to have started though. The metro apps look stunning and so does the new outlook email service (feels much more fluid and usable than gmail). Looks like the elephant has joined the gym.