Search This Blog


Thursday, April 10, 2008

I Am a .Net Programmer...and Am Proud of It!

So, we have (oops, I mean, had) a self-confessed masochistic .Net programmer by the name of Clinton Forbes who hated Microsoft products. Reading through his post you will find a list of sins Microsoft has committed. These sins irked him so much that he labeled all C# and Vb.Net coders as "cynical and old bastards".

As a C# programmer, I guess I am also one of the cynical and old bastards. But unlike him, I don't think working with Microsoft technologies automatically reduce myIQ by a whopping 20 points or turn me into a dog. Quite the contrary, I believe that I am happier person as a .Net developer than I can otherwise be.

Before I get off to explain why this is so, let's take a look at the sins Microsoft committed that reduce the Forbes to a masochistic being:
  1. Close source libraries
  2. crappy development tools
  3. Stupid marketing material
  4. Stupid Microsoft events

Close source libraries

Forbes lamented that the .Net framework source code are not freely available for browsing. Well, starting with VS 2008 this has changed. Now you can download source code on demand if you really want to see the code.

If you are not working with VS 2008, you can still see the source code by using Reflector. The output of the Reflector is plain C# or VB and you don't need to know assembly language or any other languages in order to decipher the output.

Crappy Development tools

In Forbes' opinion, Microsoft's IDEs sucks. Huh? Excuse me, are you living in the real world? Microsoft's IDEs are the best. The intellisense, the syntax coloring and the ability to insert plug-in are simply unparalleled among IDEs.

Don't believe me? Try using non-Microsoft tools to write a program and then use Visual Studio to do it and compare the results. You will find that Visual Studio IDEs are so much more productive that you are unable to use any other tools else. After working exclusively with Microsoft Visual Studio compilers for a few years, I decided to try something non-Microsoft's. So I picked Python up and only to realize how hard it is to work with other development tools. If Microsoft IDEs are hard to use then maybe there is nothing that is easy.

About the Visual SourceSafe, well, I have no experience with it so can't make any comments. But you don't have to use it if you don't like it. You can choose other source control systems you like. Microsoft, as far as I know, doesn't use SourceSafe either.

Stupid marketing material and events
If you find that the marketing material is stupid then feel free to ignore it. But however stupid or irrelevant the marketing stuff is, the stupidity does not render the tools useless. Hating the tools because the promotional covers suck is tantamount to throwing baby out with water.

Why I am proud of being a .Net programmer
Because I know that I am using great products backed by a giant software vendor who is unlikely to default on their products. This means that whenever I run into problems, there are a large pool of users and a dedicated technical support team to help me out. There are always enough technical documentation, code samples and tips lying around to help me when I get stuck or when I want to self-improve. They remove my development barriers, and make me much more productive as a programmer and I can pass on my productivity gain to my customer.

This is a win-win-win situation.

Paul Graham in his article "The Python Paradox" explained that if a company chooses to write its software in a comparatively esoteric language, they'll be able to attract better talents because they'll attract only those who are cared enough to learn it.

Microsoft tools and the .Net framework are vastly popular because they are easier to learn. It is therefore no suprise that a lot more vocational programmers work with Microsoft tools than with other, harder, less user friendly tools. Some may say that as a consequence of this the average .Net ( or Java) programmers are not as smart as Python or Ruby Programmers. But looking the other way, one can say that .Net is so easy to learn that even the not-so-smart ones can use it and get their job done. In the hands of the smarties, the ease of learning translate into greater productivity gain. The success of the tools should always be inversely propotional to the average user's IQ. So no, Microsoft compilers aren't crappy, they are great.

I am a .Net programmer, and I am proud of it!


Lloyd said...

Over the years Microsoft has come a long way with their development tools and they are an invaluable part of what I do. Let the MS haters bitch and complain, we can talk about them as part of the old business in the new "Cynical Old Bastards" .Net user group meetings.... 8^)

Clinton Forbes said...

Hi Soon,

The library source-code being in Visual Studio 2008 explains why I wasn't aware of it. I stopped paying attention to upcoming .NET features a couple of years ago. In my opinion, this is a great move, and about bloody time!

Yes, Intellisense is awesome. It is better than any other code completion that I have seen in another IDE. But the other features that you mention - syntax highlighting and plugins - are available in pretty much every editor on the market, even console based editors like VIM. Great Intellisense doesn't make up for crap stability. I hope that VS 2008 is a big improvement, but if so it took MS 6 years to get it right.

The crap marketing makes it difficult to get through the hype aimed at managers and get through to the cool features that developers are actually looking for.

Not all .NET coders are cynical and bitter old bastards like me, as you have shown. I am very happy that you can be passionate about using .NET as your development platform of choice.

BlackWasp said...

I am quite happy being a C.O.B. ...and I learned today that I am one!

Ian Joyce said...

I've used both Eclipse and Visual Studio extensively and I'll take Eclipse over Visual Studio any day of the week. And vim over any IDE, but to each there own.

Tony said...

Eclipse/Java > VS/.NET

Tech Per said...

It's is the old debate on .Net vs the world. And of course, you can be a .Net programmer and be proud of it at the same time. After all, that comes down to delivering good software, the the users apreciate.

As a developer who have tried both the .Net development stack and Java stack, I strongly disagree with you on one point: About development tools.

Visual Studio really is NOT that great a product!

You do a really unfair comparison, by just saying you tried Python once and found it hard. Really, you should compare .Net development tools with the counterpart they cloned, Java. Tools like Eclipse and IDEA are superior to Visual Studio at any time. I do not want to start a flame war, but noone that have tried both worlds seriously, will say otherwise.

That, combined with the fact, that you are pretty much tied into using Visual Studio, is a problem, I think.

Still, you will always be able to write good software in .Net stack with Visual Studio, if you are a good programmer.

julian_za said...

Here is my view of situation...

ReverseBlade said...

I am a MONO programmer and proud of it!!!

.net works only on windows. Mono works everywhere, it even runs Java byte code on it. You can run eclipse on mono e.g

Adrian said...

Currently I am working on .Net with Visual Studio but I also work with Eclipse and Netbeans on Java and believe me VS comes last. Intellisense is just a trademark and that's why others don't have it. In the java world it is called code completion and syntax highlighting.

Derik said...


If everything MS does sucks and you hate using their tools, why are you still coding in .Net. Move on, it is clear you don't want to work with MS stuff, and let me say this WE DON'T WANT YOU HERE EITHER.

Move on, take your shitty toys and go home.

Anonymous said...

I have a friend how says he is an asshole and he is proud of it.

So do not worry you are not alone.

By this i do not mean you are asshole or any .Net programmer is an asshole. I am just trying to make an analogy.

Some people just like being .Net programmer and will defend it like they are ..... err...

Anonymous said...

The blog post's author is good example of MS strategy "to rake evrebody over the coals".

Fraaargh said...

It's not very fair to compare C# IDE with Python IDE ! Python being less typed than C#, the IDE has defacto less possibilities for code refactoring, assisting users etc... To be fair, compare VS with Eclipse ;)

mgrouchy said...

I think the 2 posts by the author and the post by clinton forbes are completely innacurate.

For my current day job I program in .net but I also have programmed in many other programming languages and have had jobs as a python and Java programmer.

It seems to me your confusing things, you talk about how great visual studio is and about how it has plugins, syntax highlighting, intellisense(aka code completion). All of these things can be replicated with Eclipse, as well you can also program .net in elicpse(with mono).

Referring to your python post, which was a misrepresentation of how hard it is to get started with python. You can't judge IDE's based on how much trouble you had for finding a python ide, if you had of look hard enough you would have found that eclipse has support for python as well as numerous other great python ides that are out there. The first result in a google search for "python ide" returns
which has a list if python ides and their features.

To address your other points. I can't attest to what point clinton forbes was trying to make but despite of the fact you can see the source for some c# and .net libraries , all of the libraries are still closed source. You are not allowed to modify them, copy code from them, etc. The license prohibits it.

I think its okay to be proud to be a .net programmer, but you should be proud for its own sake. It seems to me you haven't had much experience in recent times with non-microsoft products, so it makes sense that you would skew in that direction however, it seems to me most of your inferences are not matters of fact, but due to a lack of understanding.

Anonymous said...

"I Am a .Net Programmer...and Am Proud of It!"???


Anonymous said...

How much money Mr Balmer give it to you for this article?

I recommended you, that be careful about him, sometimes he drop chair, too. :D

have a happy Micro$oft day. ;-)

Andrew said...

I am proud to be a .Net developer.

I think the .Net IDE is actually pretty good and the .Net language is very powerful.

I found .Net easy to learn but my path to .Net was through Turbo Pascal, C++, Delphi, ASP and a little Java.

I do not think .Net would be easy to learn for a someone starting from scratch or with only a VB6 background.

ASP.NET in particular still seems overly complicated and quirky (VS 2005).

Somedays, I feel that .Net is fighting me every step of the way but it is feels good to have accomplished something.

Does anyone else feel that way?

Soon Hui said...

Hi Andrew, thanks for your comment. is hard to learn because it requires you to know both .Net and HTML. So in this sense, any web programming framework is hard to learn.

Anonymous said...

Even more - eclipse 3.0 released back in 2004 was already better then VS 2008 released recently!

I wish the opposite were true because I personaly like C# more then Java. For me the following relation holds:

C#3 + VS2008 == Java6 + Eclipse3.2

tundranerd said...

The whole premise of the topic is flawed. This reeks of "If I say it enough times I might actually believe it"

In my observation, the vast majority of .Net (and any other platform worshippers) guys feel vastly inadequate, because their hands are tied, on any platform and/or IDE that doesn't complete their thoughts for them. (

I personally get a great deal of satisfaction from using C#, when the work requires it of me. I also get a tremendous amount of satisfaction doing Python GTK apps and Objective-C Cocoa apps.

The point is, as professionals, we have an obligation to learn as many platforms, idioms, languages and concepts, as we possibly can. I bear a tremendous amount of responsibility to those that are paying me to implement a solution for them. How can I objectively walk into a situation and claim that C# is the right choice for all people and all situations.

I stand by the opinion, that nobody is truly a Sr until they have mastery of multiple platforms.

Anon - C#3 + VS2008 == Java6 + Eclipse3.2

If you broadened your skill-set by learning some functional programming idioms. You'd clearly see how ignorant your statement is.

The enhancements made to C# 3.x vastly improve productivity and create a reduction in lines of code by a significant factor. Java 6 does not possess Anonymous types, lamdas or Linq.

Your attitude validates the spirit of my post.