Are .NET developers the American tourists of the software industry?
caffeinatedcoder.com
caffeinatedcoder.com
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.
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.
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!"
In 1995, Java was a fun language. Since then, the fun has been squeezed out of it and it has become more akin to accountancy.
Those economists in management surely don't wake up one day and announce : "We will use C#".
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.
At least part of it is that in many cases it's not their chosen toolset; it's what they were given.
> From a knowledge point of view .net requries a lot more traditional programming skills than ruby ever does.
How so?
read my post I already said that.
> How so? You can figure this out yourself by comparing C# to ruby
I was hoping for more specific examples, as I gathered the parent was. It's still not clear to me what "more traditional programming skills" means, or why it's a good thing, or why (C# - Ruby) yields traditional programming, while (Ruby - C#) should be... non-traditional programming?
I guess it's heritage is smalltalk which I did enjoy when I studied.
Don't get me wrong it has its place but I think of it as a language that is like basic used to be. extremely easy to program in but if you learn just ruby you would have a hard time jumping to another programming langunage than if you had come from C#, C/C++ etc
no flames please :p
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.)
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... ), 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.
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).
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.
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.
(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.)
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.
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.
Is this an example of thinking in Blub?
From the article: drinking from the Redman firehose
Surely, that should be Redmond?
If you say it loud enough, the words will magically translate themselves.