Why I Hate Microsoft Tools

Frangible \Fran"gi*ble\, a. [Cf. F. frangible.]
Capable of being broken; brittle; fragile; easily broken. [1913 Webster]

This precisely sums up why it is I hate developing in .NET. Some people might argue that it is a strength of .NET, but I strongly disagree. It is only when working in .NET that I have had the extreme displeasure of adding the following line to my code:

name = name.Trim()

And go from code that compiles to code that produces beyond the maximum amount of errors. And yes, this is in VB.NET, so I don't need a ;.

This is not the only time that I've had issues with the .NET environment. Just sticking to code, another terribly fantastic example involved binding a property to a DateTimePicker. The property essentially looked like this

ReadOnly Property SomeDate As DateTime
        Return New DateTime(2012, 08, 26)
    End Get
End Property

And guess what error we got?

1900/1/1 is out of range for DateTimePicker

Well. Isn't that just swell. Look - I don't care if that's somehow using it wrong - if I have a property that only returns a DateTime that is well within the range of a DateTimePicker, it should always work. Period. This violates the Principle of Least Astonishment in all kinds of ways. I know that I and at least three other developers were all:

wtf. Seriously

We were all kinds of astonished. So yeah, that was horrible. But that's not my only complaint. Let's take a look at Visual Studio 2010 - our current weapon of choice. But honestly, calling VS a weapon feels like calling a Model-T a race car. Although that's probably the wrong analogy, too. Maybe it's more like if Yugo made big rigs.

Basically, there's entirely too much involved with Visual Studio. I suppose you could chalk it up to preference - I am a huge fan of the Unix philosophy - A tool should do one thing, and do it well. And it should be easy to integrate that tool with other tools. But Visual Studio is this behemoth that is all encompassing even what you don't want it to. Example: Did you know Visual Studio has a built-in web browser? Maybe (probably) it's built on IE - I'm not really sure. But it's got a browser built in. That's cool, right guys? Guys?

(I can hear some of you saying, "But wait, can't you get a web browser in Emacs? And that's a Unix thing, so hah! Run rings round you logically!" Except for one crucial difference. In Emacs you explicitly add things to enable/extend those features. Also if you want to remove them you can.)

And ooh, my favorite - The Designer. Designer mode in Visual Studio is quite possibly the worst thing to ever come out of Redmond. I don't know who does the work on this thing, bug guys, I don't know how to tell you this... but it's not working out so well. Designer produces so much horrible and frangible code that they actually had to put it in a separate file and say 'Here Be Dragons!' Manually editing that file always feels like I'm taking my life into my own hands. Partially because they warn me not to edit the file. And worst case, what could go wrong? Everything.

I can understand that code to design a UI is complicated, but still. Designer is terrible.

Now, I wouldn't be making that big of a deal if it were possible to break pieces out and shift them around the way you want them... well, really just do more Unix-y things with Visual Studio, but that is not possible. Not even close. With Visual Studio it's all or nothin'!

Visual Studio is also prone to breakage. Lots and lots of breakage. As in "I'm sorry, I'm taking up all of your 4GB RAM. Oh wait, not sorry" and then hoses your system sort of breakage. I don't know when the last time (if ever) that I've choked Vim out without doing something silly like trying to do some operation on a 10GB file. But I can't think of a week that's gone by without making Visual Studio crash. Or randomly hang. Or take several seconds(minutes?) to load on a Core i7 with 4 (or later 8) GB RAM. We're in the year 2014 - why in the world does anything have to take up that much memory? I mean, really? My entire code repository is less than half that size - with all of its history. Heck, even my compiled assembly isn't even a quarter of the size. What are you hanging onto, Visual Studio? Is this some sort of nefarious PRISM plot? I don't even know.

Now let's throw in IIS - an abominably difficult to use Web Server. This is mostly a bunch of graphical clicky things - so rather than actually understanding what's more or less going on (at least to the point that you understand what a config file is going to get you), all IIS has for you is a "look at the pretties! You can have all of them! You want to make a few pages, hmmm?? Well, you get to repeat yourself each time, hahahahahaha"

Such an unbelievable pain.

And then throw all of this on top of Windows 7, this sort of "hey guys, Linux is cool, we'll use PowerShell and you can pretend to know what we're doing, never mind the fact that rm and ls are actually aliases for programs that don't actually work anything like the program that you're thinking of, and are in no way POSIX compliant! Muahahahahahaha!" kind of deal.

Totally neat. Totally fantastic. And totally makes me want to gouge my eye out with a dull spoon. No, really - it's that bad.

I've actually started to do enough with Python that I'm getting into the guts of the system and going "Uhh... guys? Not quite so sure about how you wrote that..." But here's the cool part - I'm actually able to get into the guts of the system. If I'm not really enjoying the way something is running, I can go figure out why the heck not.

Same way with the rest of my favorite tools. These are the kinds of weapons that if a spring wears out you don't have to replace the whole tank. Also, want a machine gun instead? Okay, we can do that. Want one in addition to the cannon? Yeah, we can do that too.

Building software with tools like this is so much less of a chore, and so much more enjoyable.