We love .NET
PatternBuilders sells a hosted cross platform streaming analytics platform that large companies use to do complex calculations and business process automation over very large data sets. So it was fascinating to read a recent post/troll from the CEO of a company that is writing yet another web based expense tracking system about how bad our technology and hiring choices were. Since we never like to pass up a good scrap – it seemed like a good time for a guest post from our lead server engineer Tim.
By Tim L.
I don’t really understand why David Barrett wasted time writing his rant on .NET programmers. Doing a minimal amount of research on what .NET is, what you can do with it, and how people use it would have completely invalidated his original premises. He makes a lot of statements regarding how “different” .NET is from everything else, how restrictive it is, and how no programmer with “attitude” would ever use it.
Well, judging by his criteria, I think I am a programmer with attitude. I have been programming since I was 9, starting out with Basic and then moving on to C++ for about 7 years. I don’t know about knife fighting, but I do play guitar in a death metal band on the side. Hopefully those are enough “attitude” credentials for David Barrett. I have tried a whole lot of different tools, and guess what? .NET & C# are my favorite tools for almost any problem. Ironically, the only things I would write using other toolsets would be either very simple/small pieces of code, or big software for companies that force me to use something else (usually Java).
On top of all of the above, I have worked in the industry for eight years, and seven of those have been for companies writing very large scale software (quarter million lines of code and higher) using .NET, all the way from version 2.0. The one year I used other platforms, by the way, was when I was working for a Department of Defense contractor that used Java almost exclusively, but for some of our internal work we used .NET because it was so much faster both in terms of development and execution.
As far as how different .NET is from everything else, that just doesn’t make any sense. Not only is .NET very close to Java in features, functionality, and approach, it is interoperable with just about every library and language in existence. Going native if you need it is fairly easy, and Mono offers pretty great cross-platform support that’s constantly improving. Just do a Google search for .NET design goals and you will get a rough idea of how wrong Mr. Barrett’s statement is.
As far as the assertion that .NET breeds bad habits, stagnates problem solving skills, etc… is very silly and elitist. Just because you know all the quirks of how templates work in C++ (and can “hack” them to your advantage) does not make you a great programmer, nor does it necessarily help your business succeed. I would argue that the programmers that spend all their time writing hardcore language specific performance optimizations are actually stagnating in their ability to design, implement, and deploy enterprise or web-scale software. That said, if you really want to dig deep into some sort of low level or out of the box idea using .NET, just go to Stack Overflow or The Code Project and look at the crazy stuff people are doing with it. As a retort to the original “hides the network stack” argument, here’s a packet sniffer written with .NET.
Ultimately, only complete ignorance can produce an elitist, blanket statement that people who use a particular toolset or platform are inferior. I wouldn’t want to work for a company that has Mr. Barrett as the CEO.