Are .NET Developers the American Tourists of the Software Industry?

In case this post rides a reddit or Dzone wave, let me start out by saying that I am both from the United States and a .NET developer. Now on to my regularly scheduled point…

I’m fairly certain that most people would agree that Microsoft as a company is despised by a sizable segment of the software industry.

Since corporate politics bore me, I’m going to skip the part about why this is the case or whether this view is justified. Instead, I’m going to focus on the following corollary:

The same segment of the software industry that dislikes Microsoft also views developers who use Microsoft tools and languages as inherently less skilled and less capable.

That is a nice way of saying that when the typical Java\Python\Ruby developer conjures up an image of a .NET developer, it probably looks something like my esteemed blog sponsor on the right sidebar. In other words, I believe that the prevailing stereotype about .NET developers is that we wouldn’t know a software best practice or sound computer science principle if it recursively bit us in the arse.

Why does this stereotype exist and is it deserved?

Some harsh reddit feedback on one of my recent blog posts prompted me to seriously ponder this question and after going through various phases of anger, denial, and rationalization, I finally settled on the following theory.

Developers who don’t earn their living from Redmond-based technologies dislike Microsoft developers for some of the same reasons that people from other countries dislike Americans.

For any of my fellow countryman who are surprised by this, it is true. Most people in the world don’t like you. I’m sure books could be written on all of the social, political, economic, and cultural offenses that we unknowingly dole out on a daily basis, but I’m just going to focus on the one psychological offense that I’ve observed first hand numerous times in my travels.

Americans are inherently annoying because we rarely invest any effort into learning anything about the external world.

For example, If you are an American and meet someone who is well educated from another country, then statistically speaking the chances are good that:

  1. You will not speak their language even though they will probably speak English.
  2. You will not be able to locate their country on a map even though they could probably name all 50 states.
  3. You won’t know who their national leader is even though they will not only tell you the name of our President, but also give you a nice summary of his foreign policy exploits over his last two terms in office.

You don’t have to have a political science degree to understand the psychological effects of this interaction. How did you feel the last time someone completely blew you off because you know they didn’t think you were important enough to bother with? Needless to say, it doesn’t help much on the diplomacy front.

I think a similar dynamic occurs with .NET developers who are so busy drinking from the firehose at Microsoft that they forget about the rest of the development world entirely.

The reddit comments that drove this home the most for me was the one said my opinion should be discounted because I “break the programming languages world into “languages by Microsoft” and “other languages”. Not a bad point.

Then there was my favorite wickedly sarcastic comment from Lepton3 (…come on reddit…you really need to de-anonymize this process a little). In response to my stated desire to learn finally learn Python, he quips… “Steady on there tiger! You wouldn’t want to rush in too soon.” A damn good point considering how long Python has been popular.

They both made me realize that despite my great efforts to study software best practices and learn no less than a dozen new Microsoft technologies in the last few years, I was still being pretty myopic in my approach to software development.

So, I hereby relinquish any guilt that I may feel for not keeping up with every new technology coming out of Redmond in the next several years. Instead, I’m going to do the programmer’s equivalent to a little world traveling so I can get better clued into what the rest of the software world has to offer.

I’m sure all the other kids will still make fun of me for feeding at the Microsoft teat, but at least I won’t stand out like a typical American tourist anymore.

Oh, and for all you .NET readers who may get inundated with posts on Ruby, Rails, Python, Django, and MySQL in the near future (at least that’s what I’ve been spending all my free time on in the last few weeks), hang in there. A little foreign culture is good for the programming soul. Also, since there’s no place like home, I’m sure I’ll continue to churn out .NET content as well.

163 Comments so far

  1. joe on February 25th, 2008

    Most people in the world may not like us, but whether they want to admit it or not they are better off because of us. Each time they turn on the TV or a personal computer, surf the net, talk on a telephone, drive a car, fly in an airplane it is a tacit endorsement of American culture.

    I salute your resolution to broaden your technical horizon and wish you the best of luck. I also look forward to reading about it and hope that you will keep the self-loathing anti-American nonsense to a minimum.

  2. Gavin Terrill on February 25th, 2008

    Taking the high road. Good for you! Just remember that when traveling to exotic locations you may encounter customs that are somewhat different than your current norm and you may initially be frustrated. However, if you are open to new experiences there will be pleasant surprises in store for you.

    @joe - I think it goes both ways - many of “you” are also better off because of “them”.

  3. Russell Ball on February 25th, 2008

    @Joe - I’m way too a-political these days to be self-loathing. I was a history major in college in a former life, so I’ve met my share of self-loathing Americans and I agree that it gets old really quickly.

    I was just trying to draw on my past experience to explain why .NET developers get no respect and trying to objectively determine if there was any merit in the critique.

    As in most cases, I believe the truth lies somewhere in between. Most Java/Python/Ruby developers don’t give .NET developers enough credit while most .NET developers are too isolated in their own world to see the true value of other technologies and languages.

    In fact, I’ve met several .NET developers who had no idea that NUnit, Nant, and CruiseControl.NET were direct copies of tools that existed for several years in the Java space or that the new MVC framework is directly inspired by Rails,Django, and probably a dozen Java web frameworks that I have no idea about.

    I can’t control what others think of me, but I can do my part to correct any of my own short-comings.

  4. Russell Ball on February 25th, 2008

    @Gavin - I know, it’s a really strange feeling for me, especially since I’m usually the one making the wickedly sarcastic quips…

  5. […] Are .NET Developers the American Tourists of the Software Industry? - An interesting piece, suggesting that we should all taste some foreign ideas from time to time. […]

  6. olippold on February 27th, 2008

    Brilliantly, the first comment by Joe demonstrates another reason why we find you annoying – because you seem to think that using devices such as the TV (Scottish), WWW (English) and the car (German) are “tacit endorsements of American culture”.

    By the way, I’m English and have found all Americans perfectly charming.

  7. […] Are .NET Developers the American Tourists of the Software Industry? (I can’t believe they used my picture!) […]

  8. Busy MS devs « Smurf on Spreadsheets on February 27th, 2008

    […] Busy MS devs Great post here comparing .net devs to American tourists. […]

  9. […] Are .NET Developers the American Tourists of the Software Industry? | Caffeinated Coder - “Developers who donâ??t earn their living from Redmond-based technologies dislike Microsoft developers for some of the same reasons that people from other countries dislike Americans.” - heh […]

  10. TheGroover on February 28th, 2008

    @Joe:
    “Most people in the world may not like us, but whether they want to admit it or not they are better off because of us. Each time they turn on the TV or a personal computer, surf the net, talk on a telephone, drive a car, fly in an airplane it is a tacit endorsement of American culture.”

    QED

  11. engtech on March 5th, 2008

    Well, you have at least one new reader because of your desire to boldly explore new languages.

  12. Russell Ball on March 6th, 2008

    @Engtech - Glad to hear it. By the way, I just visited internetDuckTape.com for the first time and was duly impressed. Very interesting bio on the blog. I hope I can have as much success with caffeinatedCoder some day. Cheers!

  13. […] [CODE] Are .NET Developers the American Tourists of the Software Industry?, caffeinatedcoder.com, via:raganwald.com […]

  14. Null on March 10th, 2008

    I’m guilty of looking down on .NET developers myself.

    But for me it’s from the experience of 3 years as a .NET developer. I won’t say anything about my previous coworkers except their left hands have to be hurting from all the Ctrl-C/Ctrl-V. I finally got so sick of the culture and mindset and the complete distrust of anything not a Microsoft approved best practice/strategy when there are better alternatives.

    So I quit my daytime and went to work for myself doing python development and enjoying the hell out of it.

    I apologize in advance for not being terribly eloquent in my comment.

  15. Adrian on March 10th, 2008

    I’ve been a .NET developer for 5 years, and then I switched to do other things like wxWidgets, Linux, Rails, Django, etc. I’ve seen the same ratio of sound/noise in both sides when it comes to loathing and bashing against “the other side”, but I must say that I’ve found much smarter people in the open source world than in the M$ one. To summarize, I’m not looking back. But I follow what’s being done in .NET anyway.

    Of course this is a personal opinion, based on my own limited experience, in some places of the world like Argentina and Switzerland.

  16. Jorge De Castro on March 10th, 2008

    “Most people in the world may not like us, but whether they want to admit it or not they are better off because of us. Each time they turn on the TV or a personal computer, surf the net, talk on a telephone, drive a car, fly in an airplane it is a tacit endorsement of American culture.”

    Only one technology listed is an undisputed American invention.
    Many TV shows shown in the US (e.g.: American Idol) are franchises created elsewhere.

    A year ago I learned C# to take part in a big .NET project (my background is python & java) and initially was indeed somewhat surprised by the community’s isolation.
    But then again, how many Java devs admit JSP is *at best inspired* by ASP?

    j

  17. some guy form Europe... on March 10th, 2008

    Well, if I can add my 2c or (2p as am based in UK…) I think an important point of .NET vs rest of programming world has been ommitted - .NET has been designed as a powerful RAD platform and therefore differnet approach is taken while using it. In business devel time is money (as you should all know); and most people using open/alterantive techs tend to be more of idealists (therefore lose time on pointless tekkie undertakings). (Well, there is also the problem of corporate environments prefering properitary tech for reasons of servicing etc, a bit unfounded in my view) My brother is using .NET on everyday basis and amount of time he saves is just incredible. (Mind you he is an experienced developer - who started of years ago with pascal, asm, and C, went through Clipper (anyone remember that?) moved to delphi, and the MS Visuals). Ergo - yes I do think that .NET developers might come across as conceited, but think this way - why lose your time when you are paid for devel work, and the tools are there?! It’s not 1980s where you had to do some nifty code crunching. Or, maybe some of you guys still think that 640k should be enough for everyone? ;)
    As for American tourists, well, I’ve come across some v. positive examples and some very bad ones, it’s a matter what kind of person you meet. (although american intelectual average seems to be much lower than that for most of europe, sadly, and gushed with a hefty dose of ignorance…) Mind you most of American students that come over here for exchange, come across as positively naive about the world. I’d almost say - sweet.
    Just to clarify - I am quite fond of the US, and love to live in California or Florida (never mind the policing restictions…)

    and @ previous commentators - with regard to US of A providing rest of the world with oh so many inventions and techs - please check surnames and countries of origin of most of the scientists/developers (bet most of them are Jewish/Russian/East European,German or Japanese) - it’s money that talks and USA is still one of the best environments to do research/devel.

    BTW @olipollod - I thought that web was developed in France (or Belgium) and then scrapped, even prior DARPA doing any serious devel on hypertext. Or am I wrong?

  18. Tzury Bar Yochay on March 10th, 2008

    I did that on the switch from .NET 1.1 to .NET 2.0.

    I got infected and since I prefer open/free platform over Windows based platforms.

    As a previous .net developer I felt as a tourist when visited the wonderful world of open/free software. Ever since, whenever I come across ex-Microsoft developer I try to ease the process for him/her as much as I can.

  19. vilaca on March 10th, 2008

    i bet there are .net developers who can kick some pretentious python/whatever programmers arse (including me, who does c exclusively).

    arent we old enough for “my language is better than yours”?

  20. ryan on March 10th, 2008

    @joe:

    Shocking that you prove the point of this article. The telephone was invented by a British citizen while living in Canada.

    Similarly, the television wasn’t invented in the US either.

    Neither was basketball. OMG! Get over yourself.

  21. Kl on March 10th, 2008

    Hah, again “most tv shows” comment. Where I live, (sadly) most are Brazillian, there are plenty of local ones and some British pearls.

  22. she on March 10th, 2008

    Very much a generalization …

    You should differ.

    - Microsoft is the company that is very much disliked here in the first case. Compare this to google, google is accepted much more everywhere compared to Microsoft.

    - As for politics, it is viewed that your politicans are very corrupt and militaristic. US society has been brainwashed to accept military as central aspect of their life. There is more than one way to view something, but this is also rather separate from the typical “US programmer”

    Now to the question about .net

    I am not entirely sure what .net makes so radically new. It just seems like an improved java… you still have to go to huge lengths while creating repetitious boilerplate code.

    The “smart” people are that
    - find solutions
    - with as few lines of code as needed
    - have this elegant

    etc.. etc..

    It doesnt matter if they are in the .NET world or outside, but for now the the .NET world needs to persuade the non-Microsoft world that it is actually able to do something better.

    You see we all need to strive for new ideas, and companies tend to keep good ideas away if it cannibalizes on their income. See SUN as an example and how long it took them to open Java …

  23. Mark on March 10th, 2008

    I am in the same boat, I have been doing .NET for the past few years, but I recently switched all of my home computers over to Linux (with a VM for MS dev), and have been diving into the wonderful world of Python these last few weeks. I’m mostly trying to gain a little perspective, but it’s also nice to have another tool under my belt to use when needed.

    I will be watching your blog with interest to see how things work out for you.

    Thanks
    Mark

  24. Peter J. Schoenster on March 10th, 2008

    First I disagree with your premise. I’ve had 2 businesses in 2 different foreign countries as well as simply working in 2 others. The “dislike” is always espoused by a certain type of author/journalist and intellectual. The average joe in all the countries (more than those 4) I’ve been to really do like Americans and the U.S. That said … I’ve often been in a group of non-Americans and run into groups of Americans who invariable make themselves known by their very loud behavior. Yet I’ll never forget the Brit who found me and a fellow American in North Thailand with a group of Thais and he said finally he found some blokes doing things. Americans do have an often naive confidence which leads them to do things people from other cultures would not.

    I do agree about the disdain for those using MS technologies. I personally use and appreciate MS although I also use unix/linux and much prefer it. Have you ever seen someone from unix culture use a computer compared to someone from the MS culture? I have and it’s not pretty. Invariably the MS citizen uses his mouse for the most basic operation and most would actually use notepad, wordpad or even word to view and edit files even though much better and free tools exist even for windows. Succinctly I’d say MS citizens on average have a much lower computer IQ and much less imgaination that citizens of unix/linux.

  25. Laith on March 10th, 2008

    I have to disagree with you,
    Anti Microsoft is more like anti american than anything else, many people judge Microsoft based on its name than on the quality of there product. same like people who are did not read enough about America. there is always a ligitimate critisism spot for both.

    that is said, I think the words that most people hate American is words from the mouth of politicians who only want to scare the public and make them vote there own way. Many people disagree with some aspect of American policies, but that dose not mean that other people dont like Americans.

  26. bilbo on March 10th, 2008

    Your analogy only partially works because while it’s true .net developers and Americans are hated in their respective communities, you don’t have a choice if you are born in America but *choosing* the .net platform is your own pathetic fault and just shows those that choose .net have no personal integrity or even care about the future of the industry as a whole.

  27. numerodix on March 10th, 2008

    Very well put, sir. Personally I take opinions on technical matters much more seriously from people who are somewhat well rounded in their world view, whatever their current affiliation may be.

  28. Matt on March 10th, 2008

    Let me start with a little ad hominem - you are an idiot…

    You are making sweeping generalities based on little empirical evidence.

    In regard to non-U.S. based feelings toward Americans: even the uneducated peasants of Nicaragua are sophisticated enough to recognize the separation of the U.S. citizenry from its government. There is strong disdain and hatred of the our government and its policies (rightfully so, I might add), but feelings for an individual U.S. citizen are mostly dependent on that person’s attitude and behavior.

    In regard to .NET developers: The skill levels of any subset of developers will widely vary. Languages, platforms, and toolkits can be thought of construction tools (hammers, saws, bulldozers, etc.). The topic of your discussion points to your general naivete about software development and building construction. You are saying something akin to - if you use a makita powersaw versus a dewault powersaw, you must be less competent… There are plenty of idiots who use .NET and there are plenty of idiots who use LAMP. Likewise, there are plenty of excellent developers who use .NET and plenty of excellent developers who use LAMP.

    Another point about your ignorance… There is a notion in software development called - abstraction. This principal has many corollaries, one of which is that it is good to black box things so that the consumer of an object/service doesn’t need to know a whole lot about the object/service in order to use it. Microsoft has done an excellent job of black boxing their sdk so that the developer doesn’t need to know a whole lot about the internal workings to get started. A developer who does know the innards of how .NET works will likely write better code, but one who doesn’t can still do a decent job. A new developer who tries to use LAMP will be frustrated by the disparate products they have to deal with to just get set-up. LAMP requires considerably more ramp-up time. .NET is a great way for newbs to get there feet wet and start learning how to write software.

    And finally… software developers can use the principals of software design in LAMP or .NET. Anyone who is minimally adept at coding recognizes that the tools do not determine the quality of the builder.

  29. Steve Cooper on March 10th, 2008

    Useful to consider the two types of US tourist — one, the loud brash imbecile, and the other the receptive, polite sightseer. When someone *notices* an “American tourist”, it’s because they’re bellowing “Look, dear! Lie-chester Square!” on the tube, or talking slowly and condescendingly to foreigners. It’s the fact that this guy is loud and stupid that makes him visible.

    What I think people probably see from the .Net side is the equivalent; developers with one language under their belt, without a decent educational background, wwithout exposure to other technologies and therefore unable to compare.

    On the other hand, do those great C# and VB programmers get much credit? When the C# language team members gush about continuations and monads and immutable B-trees, does anyone recognise the fact that C# seems to be able to handle these things nicely? What about Simon Peyton-jones, who’s been developing the glasgow haskell compiler on Microsoft money, and whose work has clearly and massively influenced C# and the .Net framework. Or Anders Hejlsberg’s achievements with the Linq architecture?

    Also, the worlds are probably not as polar as people assume. Microsoft has compilers for python, ruby, c , haskell and ocaml (F#). The only decent compiler they’re missing is lisp. But then, who isn’t? ;)

  30. numerodix on March 10th, 2008

    “Anyone who is minimally adept at coding recognizes that the tools do not determine the quality of the builder.”

    Of course they do. Not determine precisely, but they do say something about you. For one thing. more sophisticated tools require a deeper understanding of the issue and thus users of those tools (if they know how to use them) are bound to be more sophisticated in the field. Secondly, if you’re writing your desktop applications in assembler you may be a very good coder, but most people will think there’s something wrong with you, because a sensible developer would use more powerful/efficient tools.

  31. robotninja on March 10th, 2008

    “Ruby, Rails, Python, Django, and MySQL in the near future”

    What, no PHP anywhere? If you’re going travelling, I’d highly recommend a stop at this classic (and, thanks to frameworks like CakePHP and Symfony), still relevant part of the programming world.

  32. bungle on March 10th, 2008

    Hi, I work currently as a .NET developer. I have also been on the other side of the “fence”, and I have to say that .NET/MS citizens are actually less skilled compared to *nix/mobile/embedded fellows. I have no numbers or anything to back up that claim, it’s just a gut feeling.

    Why I feel like this? MS platform is all about narrowing choices (and there is rarely open discussion/research about anything), at least that’s how it is at corporate world. *nix world on the other hand is all about the choices and open discussion and research. And the implementations are usually open sourced. MS developers/companies seem to have this strange attitude that if it’s not from MS it’s not worth to investigate. The same thing goes with all those fancy administration GUIs that you have on Windows platform. You can master the GUIs even if you don’t understand anything thats going around beneath.

  33. Sea Man on March 10th, 2008

    Who the hell claims they’re from the US and then uses “arse”. I call BS.

  34. Freelancer on March 10th, 2008

    It’s like you just woke up. MS sucks THE BIG WAY. But millions of stupid people like it for its primitiveness. So now you have to follow whatever MS says… unless you are not in MS camp :)

    BTW, .NET is just a joke. As someone said, it is a way (not great) for newbies to start learning how to write software. I would say go with Turbo Pascal for a start and then keep away from MS as long as possible.

  35. jc on March 10th, 2008

    A little traveling is dangerous. As a C#/Asp.net developer since 2001, I decided to do a couple projects in Rails last year and now have switched to it fulltime.

  36. jc on March 10th, 2008

    Visiting PHP is like visiting Sub-Saharan Africa. Really makes you appreciate what you have.

  37. Robert on March 10th, 2008

    eh, been there done that. I’ll stick with Microsoft technologies please. A) Most companies pay a good percentage more for .net technologies and as a contractor, i’ve never had problems finding a new client. There’s that pressure to just make sure I can put food on the table. B) My career path followed the many perl/python/java *nux varieties and I said enough, and went on to windows. I even gave Rails a try when the kool-aid was the strongest. What I notices is failed patterns everywhere, when I was using perl, there were security holes in PM’s everywhere. EJB’s are terrible and terrible for programming. Rails, well, it’s cute, there are so many fundamental pieces missing from the language to truly be productive. I’d say it’s still 2 years out.

    BTW: Fortran, LISP has been popular longer, and it doesn’t mean it’s a good language.

  38. Dave on March 10th, 2008

    No one ever got fired for choosing Microsoft.

    I relate it to the Ivy league syndrome….

    You have two resumes in front of you. One’s for a guy who graduated from Harvard, and one’s from a guy who graduated from Nowhere U.

    The NU guy has the stronger resume and interviewed better. But if you champion him to the boss, give him the job, and he fails, it will be your fault for picking a guy from NU.

    Pick the guy from Harvard however, and you can fall back on “Sheesh Boss, I figured he could do the job. He graduated from Harvard ferchrissakes!”

    Viola. Not your fault anymore.

  39. Fletch on March 10th, 2008

    @Matt

    Following the form, here’s the ad hominem: “You’re clearly a misinformed isolationist with the reading comprehension of a 10 year old. And not the smart kind either”.

    The post was clearly generalising about both Americans abroad and the .NET language. Generalisations that I believe hold up quite well but as with all generalisations will have exceptions.

    To your point about the “uneducated peasants of Nicaragua”, you’ve just generalised yourself. On top of that, I’ll show you a great many cultures that sadly do not distinguish between actions of the American government and those of its people. Not that that was even the point of the discussion. What the post was talking about was that many Americans are ill informed about the rest of the world. I’ll provide citations if you’d like.

    As to your next point, again you’ve got it completely mixed up. Is this a case of “methinks the lady doth protest too much”? Nowhere is it implied that .NET developers are idiots, merely that they can be isolationist. If, on the other hand you are a .NET developer, we have clear evidence that at least one .NET developer is an idiot.

    Your next point about abstraction is so irrelevant to the discussion it’s almost not worth discecting it. Yes abstraction exists, yes .NET may be less intimidating to some as an entry point to programming than LAMP. What is your point? How does this speak to .NET developers being isolationist? I’m tempted to ask you not to respond just because I don’t think you’ll be capable of reading through this comment and providing related responses.

    And on to your final point. Again, yup, tools do not the developer make. The sky is blue. I like cheese. What on earth is your point?

    Matt, your insecurity is evident. Is it because you don’t understand technologies outside of Microsoft? Is it deeper than that? How can we, the nebulous internet community, provide some support for you. Your post is clearly a cry for help.

  40. Tom A on March 10th, 2008

    .NET really isn’t all that new. It’s based on Delphi, which has been around since 1995, and created by some of the original Delphi architects who left Borland to join Microsoft.

    Summarised from Wikipedia:
    The original chief architect behind Delphi, Anders Hejlsberg, moved to Microsoft in 1996, and was a key participant in the creation of the Microsoft .NET Framework, becoming the chief designer of C#. Chuck Jazdzewski, who was chief scientist and architect of Delphi left Borland and joined Microsoft in 2004.

  41. Me on March 10th, 2008

    Don’t waste your time trying to please trolls on reddit. Instead, follow your “geek conscience” and investigate these other things for the pure love of it instead.

    And, yes, you’re missing out if you haven’t tried Python. Simple as that.

  42. liquid on March 10th, 2008

    If you categorize yourself as a “.NET developer” or a “JAVA” developer then you are starting out in the negative. We don’t have a ton of languages because they each perform well in all areas, it is like saying you prefer the hammer over a screwdriver, they are totally different!

  43. sango on March 10th, 2008

    I think you shouldn’t divide the language world in “MS languages” and “the rest”. Thats totally unnecessary. I am a computer science student, i know a whole lot of languages. I choose the language depending on the project i want to do. And i like C# for windows. Why should i try fitting a project to windows if i can do it the easy way?
    Real programmers and developers should be language independent i think.

    The point with american tourists is btw. true. You can spot them miles away. Loud and mostly uncivilized. As if everyone should obey their manly power.

  44. Suraj on March 10th, 2008

    Best wishes & good luck for your travels!

    Just remember that everybody does the same thing differently! And don’t forget to upload pictures of yourself at exotic locations.

  45. Matt on March 10th, 2008

    @Fletch

    re: Uneducated peasants in Nicaragua
    I was a peace corp volunteer in Nicaragua and worked with them for over two years. I was amazed at how they were not angry about what Ronald Reagan did to them. I traveled throughout Central America (and Africa and Europe) and my experience has been that almost everyone I’ve met understood the distinction between a people and their government.

    re: ill informed about the world…
    Lots of people are ill informed about alot of things. There are plenty of LAMP developers who know nothing about .NET just as there are plenty of .NET developers who know nothing about LAMP. The point is that it is stupid to cry foul on the .NET people. I’d like to see someone who uses Eclipse use VS 2005/2008 and make a comparison. The VS suite is orders of magnitude better than anything LAMP has.

    re: no where is it implied…
    “In other words, I believe that the prevailing stereotype about .NET developers is that we wouldn’t know a software best practice or sound computer science principle if it recursively bit us in the arse.” My reading comprehension is at least that of a 13 year old…

    re: abstraction is irrelevant…
    see the above comment that was made in the original article.

    re: my point
    I happen to be working with .NET right now. There are a lot of great things about it and there are some things I find flawed. I had the same experience with LAMP (I actually taught OOAD). I had the same experience with COBOL/MF. I had the same experience with lots of different tools. The point is that as developers we should be focus on learning design patterns and principals and whatever we happen to implement them in doesn’t matter. If the business requirements ask you to use .NET/LAMP/COBOL/whatever, you should be flexible and be adept at whatever you need to be.

    re: ad homimen
    So… I’m a mid 30s, self taught developer who has a hot wife, beautiful children, and am a self-made millionaire. You really couldn’t say anything to hurt my feelings… btw - You’re mother is a fat, ugly ho who is sorely disappointed in her offspring…

    re: Microsoft
    Lots of people hate Microsoft. Some of their products suck (Vista), some of their products are great (Visual Studio). I personally choose to purchase Microsoft products whenever there is a reasonable choice because I admire the work of the Gates Foundation. Larry Ellison buys jet fighters with his money; I’m not sure what the *NIX millionaires (if there are any) do with their wealth - prolly try to get girlfriends…; but Bill Gates has personally improved the lives of millions of people with his Microsoft riches. So, I will support MSFT when it’s possible.

    re: cry for help…
    I provide consulting services and am booked solid for an indefinite period of time. I will be hiring .NET developers in the following weeks to help with my services and product offerings. My cry for help is that I be able to take a vacation this year because demand for my services is too high…

    re: the stupidity of your argument about isolationism…
    Yeah - that’s why when people hire builders to construct their homes, they ask to ensure that the laborers know how to use the home depot screw driver, the lowes screw driver, the ace hardware screw driver, and the craftsmen screw driver. Just the other day, I heard a contractor lost business because his people didn’t know how to use the Makita power drill - they only knew how to use the Dewault… You are right, just because someone is good at .NET development and is making a good living from it and is quite competent at software design, they should spend their free time learning 15 minutes of popularity technologies like python, ruby, php, lisp, etc. because the people who know that stuff are so cool… I’m sure all the paying customers care so much that you use lisp to develop their products and services. I’m sure we will read the article in businessweek that the corporate decision makers and end use customers have decided that everything must be done with ruby on rails from now on… I’ll have to eat my humble pie then for not taking the advice of the ruby on rails advocates… Or will it be lisp…

  46. vilaca on March 10th, 2008

    agreed

    when there’s a equivalente linux IDE for C , as free as VC Express, i’ll switch to linux

  47. Ben on March 10th, 2008

    Great article, I couldn’t agree more with both your description of how American tourists can be percieved (I’m from the UK) and .NET developers.

    I’m an avid Linux user and developer, but I’ve recently joined a company that is very Microsoft focused. I find it really hard to understand why they use inferior MS products such as source safe when there are technically superior products available for free, such as SVN.

    I wish you luck on your journey, and I’m sure you’ll LOVE python!

  48. Super Mike on March 10th, 2008

    tl;dr

  49. p on March 10th, 2008

    Great analogy. MSFT-bubble programmers are like tourists who only want to go to AmericaTown Burger Joint when there is healthier, cheaper, and more exciting food at the local eateries.

  50. Paul on March 10th, 2008

    Well as one of those Ruby\Python\Mysql types I am going to be taking the opposite approach and checking out some .NET tech a bit more deeply.

    I’ll trade you passports :)

  51. miguel rodriguez on March 10th, 2008

    to joe
    “Most people in the world may not like us, but whether they want to admit it or not they are better off because of us. Each time they turn on the TV or a personal computer, surf the net, talk on a telephone, drive a car, fly in an airplane it is a tacit endorsement of American culture.”

    thats true but, most of all those things are done by people from that other countries and leave in america.

  52. Ingas on March 10th, 2008

    I can agree with everything if I make just one tiny replacement : your_text.replace(’.NET’, ‘Java’)

    Ryby, Python - OK.

    Why Java???
    Java is worse than C# (It’s not so bad. It’s just like C# 0.8)
    JVM is worse than .NET (Ever tried to compare speed of Jython vs IronPython?)

    When I read interviews with Gosling I do not know what I must do : cry or laugh or seek my AK.

    Everything in Java is to make simple things complicated.

    “We do not plan to add this feature, because MS added this feature. Even if it makes life easier it’s wrong to copy MS’

  53. Anti Hasty Generalist on March 10th, 2008

    The usual generalizations of the uninformed. Having traveled a fair bit of Europe and having several traveling friends, one thing we have all found is how misinformed the “everyone hates Americans” comment is. Typically the negatives standout in most anything - and know one doubts there are “bad” tourists from this country. Nor any other for that matter. Of course the news about the US in foreign countries tends to use half-truths and a definite bias in its reporting.
    As for MS vs not MS tools - use the right tool for the job. Anything past that is based on emotion, not intellect.

  54. Kevin on March 10th, 2008

    There’s no arrogance quite like programmer arrogance. Suggesting that a .net developer is lesser than a developer of any other language is as unfounded as suggesting every American is as stupid as our current President.

    There are advantages and disadvantages to many different development environments. The nice thing about .net is you don’t need to have 10 years experience as a Unix admin just to get your code to compile.

    The Ruby/Python people need to get off their soap box. You aren’t a better person for coding in Ruby any more than a German is better than an American for speaking German. All it really means is your code will take more effort to run on a Windows machine which, like it or not, is still the OS of choice for most of the world.

  55. p on March 10th, 2008

    The nice thing about .net is you don’t need to have 10 years experience as a Unix admin just to get your code to compile.

    No, you just have to remember which 10-level deep graphical sub-menu the relevant option is on, and spend 15 minutes hunting through them with your mouse, rather than a grep and a text edit in a flat config file.

    (Really, any developer who can’t command-line compile their own code does not have enough experience.)

    All it really means is your code will take more effort to run on a Windows machine which, like it or not, is still the OS of choice for most of the world.

    Never been a problem for me, with GNU toolchain, cross-platform comes for free.

  56. Matt on March 10th, 2008

    Um p…

    Lots of us .NET people don’t use the GUI wizards… Also, there is a config file and an easy way to access it in .NET.

    I’m not sure if you’ve ever used VS, but the autocomplete and debugging on it are amazing.

    re: compiler…
    Yeah - there is a geekier dork out there who says anyone who can’t write their own compiler doesn’t have enough experience…

    If you understood object-oriented theories, you’d get the point that black boxing things can be very nice…. In this case, clicking a button that says build/compile is nicer than opening up a command prompt, figuring out your package directory structure, figuring out your compiler options, etc… It gives .NET developers more time to eat donuts - that’s why we’re fatter…

    Please give the .NET guys a break - not all of us can grow pony tails and memorize comic book series and recite all the episodes of the simpsons… we’re too busy making money…

  57. Rasmus on March 10th, 2008

    Oh that’s just too bad.

    Americans are a really nice guy. Eats burger and fights terrorists all the time.

  58. The Guy on March 10th, 2008

    My two cents, although I think you’ve hit the nail pretty much head on.

    The issue that most people resent about american is exemplified clearly in the first post of this blog. And that is the fact that (lay-) Americans generally get most, if not all, their information through propaganda and rarely through personal research. The fact that said “Joe” thinks all those things are American is nothing more than a propagation of the “spreading democracy and freedom” standard that has been erected at the spear-tip of the empire.

    Now all politics aside, I think this is exactly the case with Microsoft developers. The word propaganda may have fallen out of usage back in the WWII era because it was being used by the Germans - but there was a new term coined to replace it: Public Relations.

    Now think about it, how much information about Microsoft comes through PR, and how much of it comes through *real* word of mouth and real world experience. And conversely, how much information about debian’s apt-get comes through PR and how much of it comes through real world experience.

    I myself have coded mostly on Windows platform throughout my career, but have done so as a mercenary: ie because I was paid to do so. But I’ll tell you this, there’s nothing that irks me more than some guy I have to work with (at any level), that just hashes out something can/can’t be done when I know their only source of information is MS PR.

    This was especially true when .NET first came to be, and it was touted by anyone in upper management as the solution to every problem ever conceivable by the human race. Right up there along with XML. A PR dream come true.

  59. bobv on March 10th, 2008

    Same reasoning goes for New York City btw. People hate NY for the same cluster of reasons they hate MS and hate the US. NY is both dominant and insular, like MS and like the US.

  60. Unknown Developer on March 10th, 2008

    Hi, all code is the same, different syntax, different purposes. Shut the fuck up already. You nerdy bitches.

  61. planetmcd on March 10th, 2008

    Someone up there was way off base. Basketball was invented in the United States (admittedly by a Canadian).

  62. […] post is making the rounds: Are .NET developers the American tourists of the software industry? Some random […]

  63. Steve Cooper on March 10th, 2008

    Strange attitude about MS. It’s difficult to see why people are so down; there’s a strange disconnect between the way people judge MS products vs the way they judge non-MS tools. A bug in the .Net framework gets a lot more stick than one in the Matz Ruby Interpreter.

    The MS world is pretty damn flexible, and technically very competent; it’s easy to put together a lot of different software easily, the languages are interoperable, and it’s all just *there* and ready to use.

  64. Tony on March 10th, 2008

    First, people around the world learn English as their second language. It in their best interest to know English. As an American, what language should I learn? I know Spanish, so should I only vacation in Spanish speaking countries? Truth be told, if there was ONE other language that was predominantly spoken throughout the world, I would learn it.

    Second, people around the world learn about the US. Its a facination. Its a necessity. If I go to Argentina, they may know all sorts of things about the USA. But I bet you they know just as little about Luxembourg, Estonia, or Mali as any American. People learn about the US because its policies affect the world.

    Third, Americans learn world history, but in the long run, tell me one thing that Nambaryn Enkhbayar, president of Mongolia, or King Carl of Sweden has done to effect the world in the same manner of George Bush, Bill Clinton, or even Jimmy Carter? The American foriegn policy, good or bad, changes the world. Many foriegners know who is running for president in 2008. Can they tell me who is the President of Mexico? or Peru?

    Now for .NET, C# is about the 15th language or so I have learned over the last 25 years of writting code. It is the easiest one for me to rapidly develop any type of application. I have written web apps, windows apps, windows services, mobile apps, and Lego Mind Storm apps. Windows is everywhere, as a result .NET is everywhere.

    If my dad calls me and asks me to write a little program to manage his NRA database, I can do it. If my mom calls and asks for a program to parse HL7 2.4 messages for her EHR system, I can do it. My brother’s rock band needs to update their web site, I can do it. I need to auto-publish 1000 PDF legal documents out to a website, no problem. If I need to create an app to resize/rename pictures and publish them to my wife’s web site, I can do that. Employers can hire me to write custom solutions to pretty much any problem and they pay me well. I can do it all with one technology, one language. Why learn something else?

  65. The Guy on March 10th, 2008

    Steve Cooper:

    I think you’re a bit biased. When sony installed a rootkit it got skewered… Sun’s keeping of Java non open, IBM’s mere existence, Diebold’s stuff… even Apple has a bunch of bad rep (for example with DTrace) - the only thing holding it back from the feeding fenzy being the low number of users…

    Microsoft is held to the same standard, if not lower (think IE).

    Your last paragraph btw, is the reason this blog post exists. What you label as being “all just there” has been just there for 3 decades in unix. Seriously. Get a clue. I’m not denying Microsoft has done good things for research, but holy batman… what you think they’ve done, doesn’t even come close to what is actually available. You should for example check out OSX’s development environment. For free, it does pretty much all of what MSDEV studio does, and then throws in bonus (industrial grade) material like DTrace and “Shark”… I remember dishing out 3k license fees for Boundschecker…

    And, no. They’re not interoperable. C for Microsoft compilers is highly proprietary. I doubt it would even compile on gcc…

    Sigh. I’m wasting my breath. What I meant to say was: you are fractaly wrong.

  66. Meneer R on March 10th, 2008

    >Most people in the world may not like us, but whether they want to admit it or not they are better off because of us. Each time they turn on the TV or a personal computer, surf the net, talk on a telephone, drive a car, fly in an airplane it is a tacit endorsement of American culture.

    Wow. You were the guys that invented airplanes? Cars? Telephones?

    Wow. Newsflash: the US invented none of those things.

    So, our culture integrates ideas from America, sure; i’ll give you that. We eat hamburgers. You eat pizza’s. Its called an exchange of ideas.

    It is however _stereotypical_ that an american would confuse globalization with ‘the world is becoming more like America’.

    You are definately a worthy troll.

    Now about .NET

    I am a developper, but I develop for an IT job agency. So i’m supposed to keep up and experiment with a lot of technology.

    .NET is really not that bad. It has much less design mistakes from its epoch than Java. Then again, they were pretty on par at any given date, with the edge of elegence in the favor of .NET

    Nevertheless, it is not hackable; much like Java. Which means it scales badly if you want to depend on existing tools or infrastructures. The thing about .NET is that its a platform that expects windows, which makes it pretty useless by default.

    Mono solves some of these problems, still doesn’t really provide the native integration into linux you would hope for. For 80% of all purposes .NET would do fine and i have no doubt you can work around the other 20% by just developping more yourself or throwing more money at the hardware. Nevertheless its going to be hard to built say a youtube competitor on MS’ software stack, or something like gmail. It really is not so much a restriction of .NET itself, as well as a default restriction on any self-contained framework. But defaulting it to Windows makes matters much worse.

    Off course none of this makes .NET an ugly or bad framework. It still is elegantly designed. It is the ´closed’ environment and contained ‘framework’ that makes it a bad fit for the real world, where it’s just much faster and much more scalable to use a hybrid selection of tools, that can be ported to any hardware platform, and can be glued together by (shell) scripting languages.

    Off course for the small companies, that just develop databases and front-ends, who cares? They should be choosing frameworks based on time * salary. In which case .NET developpers are as cheap as you can get them, right after Java. It’s also well suited for medicocre programmers, something the non-enterprise setups do not take into account (with PHP being the big exception).

  67. nachokb on March 10th, 2008

    New subscriber here!

    I think Microsoft seduced a certain segment (read, “I only know to drag and drop and I want to do this programming thingy”) fifteen years ago and is now trying to play catch up with the “wise folks”, but always fearing losing its loyal base of not-so-bright developers…

    There are some cool things in .NET. But they are all either copies of others’ technologies (the VM per se, say), some really interesting mashups (the way the DLR integrates dynamic languages into the VM, much better than Sun’s efforts, for example), and a sparse few own additions (delegates is my favorite, adding a little closure-like functionality to a rigidly typed language). So, from Microsoft’s part, I see some smart engineering going on (most of them in labs not products).

    Still, I don’t know if it’s the tools, the environment or the culture around it, but it keeps fostering new not-so-bright developers. It’s just that the devs seemingly aren’t smart enough (and some of them even lose some of their potential… I’ve seen it). Many even lose curiosity in technology (which is fatal in this industry).

    So, I don’t really know what MS should be doing. On one hand, someone should focus on that segment… on the other, the world needs better coders and fast…

    In the end, the blame lies in the one who doesn’t aim to perfect him/herself in what he/she makes for a living, and not in a vendor which just took and opportunity…

    nachokb

  68. Matt on March 10th, 2008

    @The Guy

    Man… I’m sounding like a MSFT fanboy here when I’m really neutral and technology independent.

    I’ve used all the *nix stuff. Grep sucks, vi sucks, php sucks. To those that claim it works for them, great. I hope they are happy. I’m sure they use notepad instead of word and use their own custom spreadsheet software instead of excel. I’m sure they even read their news in binary…

    I’ve supported millions of lines of COBOL, tens of thousands of lines of Java and have used all the tools you guys are talking about. I’ve earned about 60% of my money with non-Microsoft technologies and about 30% with Microsoft technologies. Microsoft is a great copier of good things. They notice the cool stuff that esoteric small companies build and then they either buy that company if they are really good, or they steal the technology and implement in their own products. But you know what… all good companies look at what their competitors do and try to emulate the good parts.

    Getting setup and maintaining a LAMP development environment can be a nightmare. You are looking at 8-20 different product lines from different organizations that have different levels of compatibility with eachother. I love MySQL - i used to use them quite a bit, until MSFT noticed that they needed to keep marketshare by implementing their own free version of SQL Server. BTW - SQL Server Express is FREE and orders of magnitude easier to maintain than MySQL. I have a production app that used to be hooked up to MySQL, but migrated to SQL Server Express and it runs 120% faster on SQL Server Express (the migration was seamless and painless because I used DAO Factories and used MVC architecture in C#) I’m sure if I spent time learning how to be a MySQL guru, I could have tuned it to the same level if not better, but the point is, I don’t want to spend that time. I’d rather get it out of the box.

    Anyone who talks about the usefulness Java platform independence has never actually done it… While this notion is theoretically possible, I’ve never heard of or experienced a seemless transition of a significant application from one platform to another. All software is proprietary… Just look at how MySQL is now a bunch of money grubbing fools with their licensing and ‘enterprise’ versions…

    To whomever wrote the original article - please honestly post the amount of time and effort required to setup a simple gridview type page without using MSFT.

    From personal experience, it took me 2 and a half days to learn and setup a simple Java web service. It took about 2 hours to learn and implement a more complex web service using VS 2003…

    Also from personal experience, languages like python and lisp are much more elegant than C# and much much more elegant than VB. I’d even agree that they are technically superior to the MSFT languages. But in the end C# and ASP.NET are my tools of choice to tackle just about anything because of the libraries I’ve built for them, the ease of implementing solutions, and the amount of support and materials available about them.

    Italian is a much more beautiful language than English, Swiss-German is probably a much more concise language than English, but I’ll stick to using English in my day to day life…

  69. mike on March 10th, 2008

    Utterly ridiculous. There is a group of people that avoid Microsoft tools simply because they’re Microsoft tools. These people have been very good at spreading propaganda that they’re somehow better programmers and you’re buying into this nonsense.

    Some of us choose tools based on rational and not emotive reasons. Used properly, .Net provides a comprehensive, productive and elegent foundation for building applications. This drag and drop crap has never been used by good programmers in substantial applications.

    Many of the languages and frameworks used by the anti-microsoft crowd are horribly bodged together hackjobs that religously avoid best practices.

    In my experience there are plenty of programmers on either side of the fence can’t code to save themselves, and produce unmaintainable crap. However, one group is arguably inexperienced, the other is willfully stupid and delusional.

  70. Meneer R on March 10th, 2008

    >Used properly, .Net provides a comprehensive, productive and elegent foundation for building applications

    That was exactly what i called it: ELEGANT.

    >Many of the languages and frameworks used by the anti-microsoft crowd are horribly bodged together hackjobs that religously avoid best practices.

    But they get jobs done quickly that are simply impossible with any of the frameworks(Java or .NET)

    Also, it really is just a matter of perspective. You think of .net as a platform that has a specific version (that relates to the version of its libraries). Those ‘hackjobs’ think of unix as the platform and a distrobution as a specific version (that relates to the version of its tools and libraries).

    Also, the majority of these tools only break api on new major versions. However, installing different major versions of say MyS

  71. fm on March 10th, 2008

    Old VB6 developers are the problem with .NET, not the tools.

    Microsoft has solid tools with no integration troubles, compared to any current or past Java-based stack.
    For example, debugging ASP.Net in IIS has been relatively painless from day one.

    The problem is that there still are hordes of 40 year old VB6 programmers with no intention to do anything else but write their crappy VB6-style programs again and again with ASP.Net. And these people are likely to be your bosses in the MS world! I mean, you can’t trust anything until you see the code.

    You can write FORTRAN with any language, and that goes with .NET too.

  72. Meneer R on March 10th, 2008

    ..
    Also, the majority of these tools only break api on new major versions. However, installing different major versions of say MySQL side by side is _not_ a problem at all.

    Par example:

    sudo aptitude install mysql-5
    sudo aptitude install mysql-4

    The point is: Microsoft sells great cars and great trucks. But linux allows you to replace the tiers, open up the hood of the car and replace the engine, change the oil, etc.

    If all i ever need is a car, than microsoft-ecosystem will serve me much better. Faster, hell even cheaper. (esspecially since its easier to maintain and use => lower pay-grade)

    If I need a caravan however, Microsoft is simply not supplying me; but I can built one using linux parts is a small amount of time. Is that a hackjob? Well, that totally depends on your discipline .. how well do you document what you do, how well do think it through?

    That is why everything from YouTube to NASA, to Google to DoD runs on linux. That is why all ISP’s run on linux. Why all the majority of the infrastructure of the internet runs on linux.

    Because they can start building it _now_. They don’t have to wait until Microsoft sells a prefab setup.

    Seriously, LAMP vs .NET for a simple website, .NET has an edge. But there is a reason why so many complicated things run on linux. It’s the only way to setup it up. Microsoft isn’t even trying to compete in these markets.

    And I am the first one to admit, that the unix side of things lack the simplicity or the ‘elegance’ of these contained frameworks and controlled eco-systems. .NET is much more fool-proof.

    But when your not a fool, that really doesn’t give it any edge. It just means less freedom, more restrictions, more dependence on some vendor.

    Also, i would like to point out, that this is not MS-bashing. MS really is only a big player on the consumer side of things. On the average desktop.

    They are not the major platform for serious enterprise development. I’m sorry. I wish it was, nothing wrong with some good competition. And as said before: the tend to steal the good ideas and integrate it nicely.

    But they need to start with a real shell and some real shell access to system configuration and maintaince.

    .NET is like lego. Any one can built a house with lego. It’s really cheap as well! But you can’t built ANY house with lego; only lego-houses. You can’t install a fireplace until microsoft develops fire-proof lego-blocks.

    All of these .net evangalists seem to assume that the majority of development is what they do. But it’s not. And what you guys are using .NET for, its is problely perfect for that!

    But there is so much more.. can we port a .net app to a low-energy low-cpu piece of hardware? Is it even supported on any non-i368 family of chips? Can i use a real filesystem with real user-management and hard-links and soft-links? Can I plug a virtual distribution networking file-system in between? Can i setup a simple replication of data-sources? Can I easily convert say a movie to a flash-file? Can I easily create a thumbnail of a movie? Can I influence the scheduler?

    All the restriction lead to elegance, but they are still restrictions. It’s great that we
    tools that mediocre programmers can _also_ use (not claiming that all or even the majority of .net programmeers are mediocre!). If I were to outsource development I would problely use Java or .NET as well. Because they allow for much less abuse and bad behavior. That’s a FEATURE.

    But that’s also where the disdain comes from I think.

  73. Steve Cooper on March 10th, 2008

    > What you label as being “all just there” has been just there for 3 decades in unix.

    I’m not quite sure quite what you’re suggesting — what existed in 1978?

    > I’m not denying Microsoft has done good things for research, but holy batman… what you think they’ve done, doesn’t even come close to what is actually available.

    Happy to be proved wrong — what sort of things are we talking about?

    > And, no. They’re not interoperable. C for Microsoft compilers is highly proprietary.

    By this, I meant that the .net languages are interoperable with each other. It is possible to get one free IDE and to write a multi-tiered app with SQL backend, C support libraries, an OCAML business layer, a python web front end, and a C# forms front end, all within the same IDE and which share modules and classes. Throw in a debugger that’ll step all the way through the lot, a massive help system, built-in TDD, and intellisense, and you’ve got something pretty good, actually. It’s a bit slower than C, but it’s a lot faster than python. Meh.

    > Seriously. Get a clue.

    Offer a clue. What am I missing? I’m playing in C# daily using Haskell-style static type inference, ruby-style code block passing, lisp-style lambdas, ruby mixins. Programming this way feels pretty good, but maybe I really am missing features, and I’m interested to know what they are.

    —-
    > There are some cool things in .NET. But they are all either copies of others’ technologies (the VM per se, say)

    The JVM is a fairly old concept, and predated by the Visual Basic p-code interpreter, which did roughly the same thing. Of course, p-code is a Pascal invention, but the point is, the JVM wasn’t the source.

  74. Meneer R on March 10th, 2008

    >I’m playing in C# daily using Haskell-style static type inference, ruby-style code block passing, lisp-style lambdas, ruby mixins. Programming this way feels pretty good, but maybe I really am missing features, and I’m interested to know what they are.

    From a language design point you are not missing anything.

    But you are missing UNIX in your eco-system. Thats a big no no for me. I know about Mono, but the libraries are not designed for UNIX. Like Java it doesn’t really integrate well. Nut Java integrates _nowhere_. At least with .net you feel a first class citizen on windows. But windows is just too limiting for a lot of my development work.

    Disregarding my hatred for the whole windows desktop interface and system configuration. I could develop on linux and just mount a windows-server or something. But how do I integrate the system with my application? Can i make a live-cd that just rolls out or boots my application? Is that even legal?

    Where’s my terminal, where’s my virtual desktops, where is my expose, where is my cron, where is my bash, where is my apt, where is my bash completition, where is my native subversion, where is my native ssh, where is my x-forwarding) and they way they try to patch that by redo-ing what the desktop environment should have offered in the IDE. (which they do pretty well, but again not easily customizable)

  75. Steve Cooper on March 10th, 2008

    > But you are missing UNIX in your eco-system.

    We’re not discussing unix vs windows here — we’re discussing .net languages vs other languages like python, java, and ruby.

    UNIX has it’s place, certainly. I don’t have a job in that place. I develop Windows desktop, server, and web software. The question is, can you convince me, with evidence, that there are better ways to develop these windows products?

  76. Sebastian on March 10th, 2008

    I’m CTO of an start up. One of our hiring practices is to ignore any resumes that mention ASP or .NET.

  77. Kent on March 10th, 2008

    Have you guys heard that Bill G is a fag???

  78. Steve Cooper on March 10th, 2008

    > I’m CTO of an start up. One of our hiring practices is to ignore any resumes that mention ASP or .NET.

    Can you explain why? And how is it working out for you?

  79. aApe on March 10th, 2008

    gaaaa. people talk about their choice of languages like they’re talking about their wives.

    i write code so i can pay my rent, feed my family, pay my student loans, &c.

    i’ve written in (i’m having to think now, b/c it’s really not that important to me), C, MVS Assembler, ASM, C++, COBOL, EZT+, SAS, powerbuilder, the .nets, and VB5 and 6.

    i don’t care what language i’m using, so long as the checks come, and at the end of the day, i can leave the office, and go do something i actually enjoy - be with my wife, go skating, play frisbee with the dog, read a book and eat snacks…

    christ, get a grip. you’re telling little switches to turn on and off. you’re moving data around, and adding up numbers. you’re not changing the world, you’re not rescuing people from burning buildings. arguing about which language and its practitioners are more k-rad is like arguing about who’s better - ford mechanics or toyota mechanics.

    get some perspective.

  80. thricer on March 10th, 2008

    There’s good reason developers in other camps hate MS; it’s because MS promotes a mono, homogeneous culture. And by using .NET you promote it as well. If it’s not from MS, don’t use it. That’s the guidance MS perpetuates. Just look at their new MVC web framework. A little late to that party, eh? Castle already filled that void years ago, but MS, as they do with most .NET open-source efforts, chose to build their own. They could have just supported the efforts of the open-source community, but that’s not their MO.

    So, after 4 years of .NET development, I quit. I’m sick of the bullshit. Why fight that culture when there are great tools available in other environments? Without ALL the MS bs.

    I switched to Grails, the best damned MVC framework I’ve ever used, and I won’t be looking back. Good riddance.

  81. DotNetKicks.com on March 10th, 2008

    Are .NET Developers the American Tourists of the Software Industry?…

    You’ve been kicked (a good thing) - Trackback from DotNetKicks.com…

  82. Karl on March 10th, 2008

    @Sebastian
    A victim of the same ignorance you likely despise.

    @Author
    The irony of your ignorance in referring to us as “Americans” is killing me.

    @Everyone Else
    After living in both camps for many years, I’d say that Microsoft is a dangerous game because it’s an ecosystem of its own. When it comes to productivity, this could be described as living in a grocery store. Why go next door to get milk?

    A computer scientist has a responsibility to uphold/earn the title “scientist” –which in my own words would be to regularly research, challenge and disrupt “authorities.”

    It’s harder to get away with being passive in the open source world because the ecosystem is democratized and inherently dynamic. Microsoft on the other hand will present one, and only one solution, leaving the decision to challenge that solution up to you.

    Obviously, being forced to look at many alternatives will in turn force a decision that is best *for you*.

    But please be realistic. There are plenty of shitty open source projects to weed through, which can be frustrating. So, while the topic of this article is a very stimulating topic, it’s not fair to generalize without saying something to the effect of…

    “.NET developers are tourists from the United States. Open source developers are the French.”

  83. rektide on March 10th, 2008

    “Steady on there tiger! You wouldn’t want to rush in too soon.”

    Take it easy and learn Boo, its a wrist friendly python inspired CLR language with metaprogramming.

  84. Sebastian on March 10th, 2008

    @Karl, @Steve Cooper

    Ignoring all ASP/.NET people helped us out get rid of nearly 50% - ` of unreliable candidates and about 80% of the offshore web development spam. We might be missing out the opportunity to hire that 1% percent that would be worth hiring that has ASP or .NET in their resumes but well.. we are all about efficiency and that’s a good price to pay.

  85. Meneer R on March 10th, 2008

    >We’re not discussing unix vs windows here — we’re discussing .net languages vs other languages like python, java, and ruby

    You can’t separate that discussion. Its like arguing wether a normal or a philips screwdriver is better. It really depends on the type of screws you want to screw.

    I’ve already stated that .NET is an elegant, relatively speaking minimal, mix of language design features.

    But it is a monolithic system. What it can’t do, it can’t do. And for a developpers tool, that’s simply not acceptable. I want open standards, neutral api’s, choice of IDE’s, etc. The integration of everything is as much a feature as its biggest downfall. The control Microsoft has over the api’s is a _problem_. The lack of freedom in IDE’s and source-control is a _problem_, the lack of a path of portability is a _problem.

    >The question is, can you convince me, with evidence, that there are better ways to develop these windows products?

    Well, no, on windows whatever microsoft is supplying by default is superior. Not because their choices are always superior, or because they have better programmers, but they can always ‘push’ their solution better, ‘integrate’ it better, etc. You wouldn’t get the same kind of integration with the system if was from any other vendor.

    That’s the reason you don’t see any big vendors other than microsoft in the windows-ecosystem. Players like Adobe and Valve are reconsidering their loyalty in their mexican stand-off with microsoft. I have no doubt they have their linux versions ready, just in case. But they won’t deploy them because the obvious answer of Microsoft would be to compete with them. On the other hand if Microsoft choses to make the first move, they have no choice but to spread their wings. And microsoft is tipping its toe in the water. (Games for Windows, Silverlight)

    Getting your company in that situation in the first place is bad management. Making really big bucks in the win-ecosystem is just dangerous. You are not competing on quality, you are competing on control of the users, but the house always wins.

    Why do think companies like Nokia invest so much to bring linux to the mobiles?

    That is why Microsoft’s ecosystem consists mostly of small players or big players in very specific areas.

    So, irregardless of the fact that the technical limitations of windows as a platform and thereby .net there are also strategic reasons why .net is out of the question for a lot of companies.

    And i’m not even touching the fact that it’s insane to write an app in a framework that makes porting pretty much impossible. Can you really predict the future demands _that_ well?

    Always go with a language and libraries that at least offer some path of portability. It might take work, but can you really afford the risk? I don’t think any professional would.

    When you start any project from scratch you try to maximilize freedom. The fewer dependencies on other companies, the better.

    If your amazon and you need to create a virtual super-server, one that automatically clusters and distributes cpu, memory and storage. Linux did not offer it, but it offered enough to create it. With windows its just not possible until microsoft decides it is. And at that point, you are likely going to compete with them.

  86. Mike on March 10th, 2008

    @Matt
    “re: ill informed about the world…
    Lots of people are ill informed about alot of things. There are plenty of LAMP developers who know nothing about .NET just as there are plenty of .NET developers who know nothing about LAMP. The point is that it is stupid to cry foul on the .NET people. I’d like to see someone who uses Eclipse use VS 2005/2008 and make a comparison. The VS suite is orders of magnitude better than anything LAMP has.”

    I have used both Eclipse and MS 2005 (not 2008 though), and I have to say I hands down like Eclipse far more, and VS is definitely NOT orders of magnitude better. Eclipse has plenty of the same features VS does, such as auto complete, a nice debugger to breakpoint and view the stack and heap and view variable values and whatnot. Eclipse refactoring is just as good if not better (and I think came before VS adopted it).

    The key things I like most about Eclipse that I have not seen in VS (maybe I don’t know the right option, or they added it to 2008), is automatic incremental building and organize imports.

    With automatic incremental building, Eclipse builds my code with every change, so I always have a working set of .class files that I could run externally from Eclipse, or internally within Eclipse. The biggest benefit of this is that compile time errors are marked automatically as you are typing them. Yes VS does similar highlighting, but it is not based on full compilation, as there are some compiler errors (pretty much anything that is not simple syntactic errors) that will not show up until you build. For example, try creating a valid statement with an object type that is completely made up. You will not get a highlighted error until you build (at least in VS 2005).

    Organize imports is the other feature I have not seen in VS that I really like in Eclipse (perhaps this exists, but I haven’t found it yet). One quick keystroke will import everything that needs to be imported, ask me for things that cannot be resolved automatically, AND organize the imports in a nice visual way (grouping similar packages together and enforcing a certain alphabetical sorting).

    Sure VS can get the job done, but I would say Eclipse is just as rich if not more so than VS, and the final benefit that you just cannot compare to VS is that it is free. Why pay $100-$1000 for a product that I can get for free? Obviously this doesn’t hold if you absolutely must use a .NET language. But anyways, it comes down to preference, and my personal preference is Java Eclipse.

    Furthermore, besides liking Java more than C# (despite using C# exclusively at work), I think they both pale compared to Ruby. I have been using Ruby for the last 3 months for personal, for fun, side projects, and I have to say the thrill of the language beats both hands down, no contest, not even in the same ballpark. There may not be as rich a toolset, but programming for the sake of enjoying programming… I will pick Ruby hands down over any other language I’ve tried (and I have Java, C, C , PHP, Haskell, C#, and Jython under my belt). Furthermore, with JRuby, I get a nice integration with my previous favorite language, and the richness of the Java API to fall back on, with the enjoyment of my new favorite language. Again, personal preference though.

    As for the content of the original article, I salute you Russell. I think your article is dead on from my (albeit minimal) experience, and I wish you the best of luck in your excursion!

  87. QS on March 10th, 2008

    One thing that always bugged me about .net and visual basic developers is: why not just program directly in C to the platform sdk? Thats essentially how the bulk of GNU/Linux developers work. Just look at all the GPL free software out there. Warren Buffet talks about having a moat around your business and thats essentially what .net and visual basic represents to microsoft; by developing for these languages, you add to the proprietary microsoft moat protecting and surrounding their core platform sdk.

  88. Matt on March 10th, 2008

    @Sebastian

    Yeah - you’re a great CTO. Why don’t you have one of your techs grep the resumes with artifical intelligence to find your perfect matches. Hell, you and your people can probably write magic ware that just scans the resumes and finds people perfect for your organization. You wouldn’t even need to interview them.

    Say, we’re going to be hiring people soon too. Do you think I can use your ingenius resume grepping ai to weed out women and minorities? Perhaps it could have a Blazing Saddles mode - “We’ll take the niggas and the chinks, but not the Irish…”

    If you are going to make up a job title and role for yourself, can’t you do better than CTO of a startup? If by some small chance, you really are the CTO of a startup - can you let me know what startup so I can short it?

  89. Kiwi on March 10th, 2008

    I just remember being in LA, and being asked where I was from (New Zealand). The American in question then went on to tell me how good my English language use was, and asked if I learned it at school. They were even more impressed when I told them that my parents had taught it to me since I was a baby.

    (I didn’t have the heart to tell them that English is the primary language of New Zealand.)

  90. Matt on March 10th, 2008

    @Mike

    LOL - there is no way you have compiled even a moderately sized app in Eclipse. Eclipse can take upwards of 3-5 minutes to build a moderately sized app. Perhaps the incremental build “feature” was implemented to address this issue, but I imagine a full build would still be painfully slow.

    Also - I say shenanigans on your claims about Eclipse being better at catching issues. First of all, builds take very little time in VS 2005 or 2008 - it is not a big deal to rebuild your app every 5 minutes since the build takes less than 20 seconds. Second, there is no way that a sdk can protect developers from all run time errors. You can just as easily Reflect invalid classes in Eclipse or in .NET and neither error would be apparent during a build.

    There are free versions of visual studio and free versions of sql server (this shows you really don’t know much about the product lines). However, I’m happy to pay 1k, 2k, even 5k for the product. The price is small compared to the productivity I get. If you were a successful developer, 5k would be a neglible amount to pay for a decent sdk.

    For all the people in love with the boutique languages - please look into the fate of smalltalk… A vastly superior language well ahead of its time… Now go look to see how many job reqs there are for knowing smalltalk syntax.

  91. Russell Ball on March 10th, 2008

    Message to all:

    I’m glad my post sparked so much debate.

    I obviously don’t scale well as a blogger since I am just now sitting down to read and try to respond to some of these comments.

    Rather than trying to respond to everyone, I’ll probably compile my responses into a follow-up post.

    Continue on,
    Russell Ball (caffeinated coder)

  92. Kent on March 10th, 2008

    Say NO to FAGS!

  93. Lee on March 10th, 2008

    It’s not about the language. It’s about the user experience. The tool/language/scripting is rarely relevent.

  94. […] it for the comments: Are .NET Developers the American Tourists of the Software Industry? Also check out the Reddit comments. Article by Russell […]

  95. Sebastian on March 10th, 2008

    @Matt

    Sent your resume we might give you a call if it does not include the words ASP or ASP.NET ;)
    We are based in Miami, FL but do offer a nice relocation assistance package.

    http://miami.craigslist.org/eng/602312054.html

    No AI skills needed.

  96. […] and blog posts show that prejudices exist on the web about programmers who use certain languages, or how a certain […]

  97. Bob on March 11th, 2008

    You’re a knob because you use backslashes instead of forward slashes.

  98. Steve Cooper on March 11th, 2008

    > Ignoring all ASP/.NET people helped us out get rid of nearly 50% - ` of unreliable candidates and about 80% of the offshore web development spam.

    Sounds relatively sensible, then, as a timesaver. Just sounded a little provocative in the context of the debate.

  99. Mike on March 11th, 2008

    @Matt

    Actually, I have compiled rather large applications in Eclipse, big fat enterprisy applications (I know, sad, but a job is a job, at least until I get a better job). I would argue it is no better, no worse, than Eclipse as far as compilation.

    Which brings me to your next point… shenanigans eh? 20 seconds to build eh? Looks like YOU’VE never built a decent sized application in YOUR IDE of choice. That fat Java enterprisy app I mentioned? We have a C# client front end for it, and that client is just as fat and enterprisy… well maybe not quite so much so, but Visual Studio chokes on it just the same. The build takes no less than 10 minutes. Probably more like 15-20. I have a batch file to compile it from within visual studio command prompt (because it is comprised of about 4 solution files, each with a rather large amount of projects), and this still takes 10-15 minutes, even without the heavy Visual Studio GUI loaded. This isn’t on an ancient machine either, before you try to claim so.

    Also, I was not trying to imply that Eclipse finds more bugs, I was merely pointing out the feature that Eclipse gives you quicker feedback for compile time errors. It is a simple feature, but it has proven effective to me. How can it hurt to show compile time errors as they are written? The organize imports is just as cool a feature too, and I noticed you didn’t comment on it so I will assume Visual Studio has no similar feature.

    I had read there were free versions of Visual Studio, but I suspect they are rather gimped in some way to provide incentives to buy the full version. So again, why pay money when I can get a similar product for free? I work for a company, so I’m not the one buying the product, but at home for my own programming time… I will stick with the free tools that I perceive as better. And anyways, in a company… it’s not a 1-shot cost… you gotta think about licenses per employee, and upgrades in the future. For a small (20 person?) company, how much will that run you, even with discounts, for the full version? $15,000 if you are lucky? $20,000? How much does it have to be before a free and more or less equivalent tool starts to look more appetizing?

    I would like to posit based on your comments that you haven’t touched Eclipse in a long time. How can you try to claim Visual Studio is orders of magnitude better than a product you clearly haven’t touched in so long? At best they are about equal in terms of functionality and power, though I would argue Eclipse has a SIGNIFICANTLY more rich plugin community than Visual Studio, due to its openness.

    I think you have proved once more that you are exactly the kind of developer that Russel speaks of in this article. You seem to blindly adore the Microsoft products without really giving the others a chance, or perhaps you just have die hard preference for those tools… but I don’t think you should be trying to make false claims about their products compared to the competitors. I have used both Eclipse and Visual Studio (VS daily, and Eclipse whenever I work in Java in an extended period of time). My preference is Eclipse because of the features I mentioned before, but they are about equal in power, and I think anyone who really has tried both can’t argue more than “I like this feature more than what the other provides.” What ACTUAL features do you like about Visual Studio over Eclipse? All I have heard thus far is your false claims of productivity and imagined better performance. What causes an order of magnitude increase over Eclipse? Keep in mind order of magnitude is AT LEAST 10x improvement… which is a pretty damned big claim if you seriously believe it.

    Ever read Frederick Brooks? The Mythical Man-Month? No Silver Bullet? Well, if there is a Silver Bullet, Visual Studio sure as hell isn’t it.

    As for these “boutique languages,” I think it is safe to program in an language you want if it is for fun, which is why I pick the language I have the most fun in. I am not trying to make big bucks when I program for fun, just merely to pass the time with some interesting problems of my choosing. Why use a language that DOESN’T maximize my enjoyment? The goal is not a job. Though, I would like to make the guess that static typed languages like Java and C# will be replaced eventually, and the most likely next step is dynamic, powerful, high level languages like Ruby (notice LIKE Ruby, I am NOT trying to claim it WILL be Ruby). I have already read of C# starting to add dynamic features to version 3, though I haven’t looked into them… this is a start, but I doubt it is the end. Just look at the history of languages… machine code abstracted to assembly language, abstracted to higher level with control structures, abstracted by procedural languages to encapsulate functions, abstracted by objects to group functions with their data type, made easier with “managed code”… surely that’s not the end? It may not happen immediately, but I think the Next Big Thing will be when someone or some company takes a dynamic language with closures and other goodies to the masses.

  100. Matt on March 11th, 2008

    @Sebastian

    OK, perhaps you are legit. Also, if the product is already in RoR, and doesn’t require .NET at all, then I guess it might make sense to screen out certain things. I think you will find that screening to find things might be a better way of finding good developers. I’m not sure you can get anything more than a newb or college grad for 60-80K. Most of the specialists I hire go for $75 to $150 an hour depending on whether they are ui, app, or db. For permanent hires, we’ve budgeted 60-80k for our desktop support techs and 80-120k for our app developers. Also - I keep tabs on all the competent people I’ve worked with - it’s usually pretty easy to fill spots when you’re continually gauging people you work with who don’t realize they are being measured.

    The original point I was trying to make is that the platform/tool someone has experience in is irrelevant. You could ask someone a few simple questions to figure out if they understand application development. Personally, I don’t care what tool they have experience in, the good developers understand OO and can implement it in any language or platform.

    I’m not exactly sure what Russell’s intention was in writing this article. If he thinks that learning new languages is fun and he is doing it recreationally, that is fine and good. If he thinks that learning new languages will make him a better developer, he is mistaken…

    If you’re a mediocre essayist in English, your essays will still be mediocre (or worse) if you learn to write in Spanish or French or Chinese…

  101. Steve Cooper on March 11th, 2008

    @Mike

    > I would like to make the guess that static typed languages like Java and C# will be replaced eventually, and the most likely next step is dynamic, powerful, high level languages like Ruby

    I suspect static typing will remain popular, especially as features like static type inference come in. C#3 definitely has a ruby-like flavour now.

    Compare this ruby code;

    # filepaths of all files with the right extension
    arr = Dir.
    entries(folder).
    select { |f| f[-3..-1] == extension }.
    map { |f| folder “\\” f }

    with the equivalent C# 3

    // full filepaths of all files with the right extension
    var arr = Directory.
    GetFiles(folder).ToList().
    FindAll ( f => f.EndsWith(extension) ).
    ConvertAll( f => folder “\\” f);

    (If that code got mangled, see it at http://www.stevecooper.org/doc.....deruby.txt)

    I’m not claiming the code is the right way to solve a problem, only that the code samples look extremely similar. And the C# is typesafe, and runs at C#/java speed, not ruby speed. The pissing about declaring types is heavily reduced, but the benefits (compile-time type checking, intellisense, intelligent help, etc) remain.

    > I have already read of C# starting to add dynamic features to version 3, though I haven’t looked into them.

    Very much worth it. C# is now an amalgam of basically three approaches — a java-like base syntax, with haskell typ