

Are .NET developers the American tourists of the software industry? - bdfh42
http://www.caffeinatedcoder.com/are-net-developers-the-american-tourists-of-the-software-industry/

======
nkohari
As a .NET developer, I can confirm that the grand majority of .NET developers
are ignorant of anything that doesn't come from the mouths of Microsoft
evangelists.

I think the difference is between people who consider themselves "Microsoft
developers" and those who consider themselves ".NET developers". I never quite
understood the former; it's sort of like Java developers calling themselves
"Sun developers". Microsoft developers don't bother to learn anything unless
it's branded with the Microsoft logo, whereas .NET developers recognize that
the .NET framework and the associated languages are simply tools in the
toolbox. Sometimes it's the right tool for the job, sometimes not.

There is a small but growing minority of .NET developers that are interested
in open source. In fact, I've now incorporated questions about open source
into my questioning when we interview new developers. Just because someone has
an MCPD doesn't mean they can code their way out of a paper bag. A bunch of
commits to an open source project does, though.

~~~
DarrenStuart
being a .net contractor myself I have to agree and then disagree.

The most day coders I have come across are in the .net field but as I work in
this field I don't know if this is true. I suspect java has its fair share of
day coders.

However I have met a lot of really good coders who use .net as a tool that has
been given to them to use.

I don't want to get into a flamewar but the article did make me wonder if most
developers view .net developers as lesser developers because of their chosen
toolset. Does this have more to do with the hate of MS or do they really
believe it.

From a knowledge point of view .net requries a lot more traditional
programming skills than ruby ever does. I bet .net developers don't look down
on ruby developers in the same way.

~~~
jcromartie
My vote goes to most day coders being Java people.

My coworker across the hall can't see why anybody would write Python if Java
is an option. "Ooh yeah, let me at it in Java... I'll have a
JSR-4567-compliant Bean to drop into a custom container in no time!"

~~~
jan_g
You have to ask ask yourself, "why's that so" ? Why the so called day coders
do Java, C# or COBOL and not Smalltalk, LISP or Ruby ? There's a reason for
everything and in programming the reason to use language a instead of language
b in a software "factory" is definitely effectivity. That is, how fast a
product can be done using Java/C# or lisp ? How much is it gonna cost to
maintain that product and add features ? How much is it going to cost to train
new people ? And so on.

Those economists in management surely don't wake up one day and announce : "We
will use C#".

~~~
pchristensen
The day coders pick Java/C#/Cobol because that's where the jobs are. Companies
might have chosen them for sound technical reasons (or not), but day coders
won't learn languages/tools that don't pay the bills.

For reference, a Monster search for .net jobs in Chicago gives 266 results.
Java gives 403. Lisp gives 22 _for the entire country_. Not something to learn
if you just want a job to fund your real life.

------
Xichekolas
The fact that he grouped Java with Ruby/Python shows how much he has to learn.
If anything I regard Java and C#(.NET) as roughly equivalent in my mind. Both
can be used by good programmers to do neat things, but the vast majority of
the time they are by-words for overly specified inflexible crap code.

I don't think it's necessarily the language (although both seem way too
verbose for my tastes --- and a little too focused on nouns), but more a
factor of industry acceptance. As soon as Java became the industry standard
successor to Cobol, they started tacking on all this formal-robust-enterprisey
crap that just made the code require a heavy duty IDE to deal with. It stopped
looking elegant and fun and started looking like the schematic to build the
HVAC system for a skyscraper. Ditto for C#.

I would argue the main problem with the Microsoft ecosystem in general is that
everything costs money. Development tools cost money, libraries cost money,
even the freaking support of experts-exchange costs money. Why pay for all
this stuff when the rest of the programming world already thrives on freely
exchanging information. It makes learning cheaper and faster, and probably
leads to more rapid development, since new stuff is easier to learn about.
When I wanted to figure out how bittorrent works, I just went and read the
spec published by Bram Cohen. I didn't have to call up his company and ask for
a Certified Bittorrent Engineer to come out and train me onsite in a three day
session that costs $8000. The whole ecosystem is focused on making a buck off
the developer, instead of helping the developer make a buck off his customers.
(That said, the .NET ecosystem seems moderately better about this, from my
limited experience with it.)

~~~
palish
Hoo, boy. Where to begin?

 _C#(.NET)_

Convoluting C# and .NET is a bad idea. C# is a programming language and .NET
is a platform. If someone writes a compiler that translates your favorite
language into CIL, your language can then be used to create .NET assemblies
(modules) and interface with every other .NET assembly. In other words, write
your program using any syntax you like and use any library you want. Someone
even wrote a LOLCode .NET compiler ( <http://code.google.com/p/lolcode-dot-
net/> ).

 _It stopped looking elegant and fun and started looking like the schematic to
build the HVAC system for a skyscraper. Ditto for C#._

Are you referring to the C# programming language or the .NET platform? C# 3.0
includes implicit typing and lambda functions (
[http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4...](http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4b09-8912-69f6c38d3a56/LanguageEnhancements.wmv)
), which are both elegant and fun. .NET 3.0 still includes every bit of
functionality from .NET 1.1, so at what point did the platform become
inelegant?

 _When I wanted to figure out how bittorrent works, I just went and read the
spec published by Bram Cohen. I didn't have to call up his company and ask for
a Certified Bittorrent Engineer to come out and train me onsite in a three day
session that costs $8000._

When I wanted to figure out how .NET worked, I just read its free and
extremely comprehensive documentation ( <http://msdn2.microsoft.com/en-
us/library/a4t23ktk.aspx> ). Also, high-quality documentation is one area
where Microsoft whips almost everyone in, and documentation is _really_
important for popularity. Apple has also nailed it with their iPhone SDK docs
( <http://developer.apple.com/iphone/> ). If you're trying to grow a platform,
you'll want to take notes.

Let's also not forget the extremely powerful WYSIWYG GUI editor (
<http://dl.getdropbox.com/u/315/designer.PNG> ).

Garbage collected languages can sometimes outperform other languages (read:
C++) because of the design of a moving garbage collector. Every .NET language
uses a moving garbage collector.

That said, it does have many flaws. The biggest one is probably the Windows
lock-in. Mono is nice, but not quite complete.

~~~
Xichekolas
I specifically used C# so as not to convolute things. I couldn't very well
compare .NET with Java/Ruby/Python, since that would be like comparing 'car'
to 'blue/red/orange'. I put .NET in parens next to it so someone that didn't
know the distinction would realize why the heck I was suddenly talking about
C#, when the article had .NET in the title.

I honestly can't speak to C# 3.0, because the little bit I did with C# was at
an old job and we were using 2.0. I guess I would clarify that coming from
C++, Java once seemed elegant and fun, but no longer does. C# never seemed
elegant or fun to me, because I had already worked in a dozen other languages
by the time I got to it, and frankly, it (2.0) seemed like a Java wannabe.
(And I'm not exactly a Java fan either.)

As for garbage collection... not even sure what in my post made you mention
that, but I wouldn't exactly consider a garbage collector to be an earth
shattering feature. Many languages have had them for years.

I can't claim to be a .NET expert by any means, and, as I pointed out in my
last sentence (and you pointed out with your links), the .NET ecosystem seems
better than one would expect. I _was_ trying to point out the problems as I
saw them in the traditional _Microsoft_ ecosystem (and the modern day Java
one)... namely, the accumulation of cruft (Java) and the cost of
tools/libraries/software (MS).

~~~
palish
I had a relatively strong reaction to you grouping C# (and .NET) with Java
(and Java's libraries). :)

Why did you say that it costs $8,000 to be trained in... something? (A
language feature? A library? A development tool?) Anything you need to learn
can be found in the free MSDN docs or by using Google. A developer that needs
an $8,000 training session may not be worth his $60k salary.

~~~
Xichekolas
_Why did you say that it costs $8,000 to be trained in... something?_

Haha, at my last job, when the company decided to switch to .NET and C#, they
ordered this hilarious three day training course that ended up costing about
$30k (four people went). The guy doing the training knew his stuff, but I
don't think I'm alone thinking this a bit ridiculous. Obviously this isn't
.NET's fault, or C#'s, or even Microsoft's. It just comes to mind when I hear
the term 'dot net' ... as it was a major sign that I should be leaving that
job soon (which I did).

 _A developer that needs an $8,000 training session may not be worth his $60k
salary._

100% agree. Like I said in my OP, I think C# (and .NET) and Java (with it's
libraries) can be used for wonderful things by wonderful people... the problem
is, being the industry standard, there are a lot of very unwonderful people in
the way.

------
snorkel
I just feel sorry for Microsoft developers. As a Windows app developer I felt
Microsoft was deliberately trying to waste my time. Rather than adding useful
functionality to their frameworks that would make it easier to do the common
tasks that most apps need, such as better rich edit controls, syntax
highlighting, and practical APIs to manipulate images, videos, and mp3, etc.
There are plenty of individual 3rd parties libraries that do these things, if
you want to spend the money to license each one and they will only work in
Windows version X and Y but not version XY. Why the hell can't Microsoft
invest some time into making exciting and useful features built into their
framework? Developers would flock to Windows development if it were actually
easy to do cool things, but it's not. Instead Microsoft pushes all Windows
developers to waste time adding support for their new pet features of the
season that no one asked for. I got tired of it and finally realized web
applications are much easier to develop and have a much greater growth
potential than Windows apps.

------
hernan7
The MS-centric press does seem a little insular sometimes -- more Mount Athos
than United States in some occasions. All the recent Silverlight hype ("the
Internet has just been rebooted by Microsoft!"). Or the articles trying to
convince people to upgrade their PCs to MS's latest OS -- I have been reading
those since Windows 95.

(I'm sure there were magazine articles pushing DOS v5.1 back in the day, but I
didn't have money to buy computer magazines at the time.)

~~~
meatpeople
I'd agree about the insularity of the press and community around the MS
ecosystem.

I got a job programming blub in VB.Net straight out of college and am writing
C# at the moment. I don't have anything to back it up but I have always found
a general suspicion of anything that didn't come from MS or an related source.
The obvious example would be formerly non-mainstream programming features
which are now getting very popular with C# 3.

It reminds me of Joel Spolskys' idea about the 'Five Worlds' - MS stuff, Java
stuff, Unix etc - that they all come with fairly distinct cultures.

------
tx
So true, it made me smile because just recently I had a great discussion with
a very smart .NET programmer who truly believed that Microsoft's LINQ is a
revolution in programming languages. When I explained to him that a similarly
weak DSL serves as an example in the introductory chapter to Lisp macros
(Practical Common Lisp), he looked at me like I was an idiot, and when I
showed him traditional Rubbyish 2.times { puts "Hello" } he said _"yes, but
where is the IDE? where is an integrated debugger and MSDN-like 2GB of
documentation?"_

Funny thing is that he DID find a Lisp book (which one he did not explain) and
proclaimed that there is nothing in Lisp that beats C# 3.0, and "3.0" part was
dropped with an authoritarian tone.

He hasn't programmed in anything but "Visual Blah" since college graduation in
98.

------
xirium
From the article: Microsoft ... Java\Python\Ruby

Is this an example of thinking in Blub?

From the article: drinking from the Redman firehose

Surely, that should be Redmond?

~~~
mdemare
Or Redcode?

------
pg
Do they talk louder than other programmers? I never noticed that.

~~~
Xichekolas
Only when faced with jargon from non-Microsoft devs that isn't on the
Microsoft Certified Terminology sheet they got in their last overpriced
training session.

If you say it loud enough, the words will magically translate themselves.

------
dejb
It is just me or has the discussion of this article has strayed from the more
interesting and fun angle - America bashing.

------
iamelgringo
Yes

------
agentbleu
lol

