Wow, I have to pipe up here. The commenters so far are completely missing the point of this article. The author is making two observations, both of which are quite correct in my experience. First, the mainstream MS developer universe -- the overwhelming majority of it -- is parochial. People learn new things when MS release some new technology and not before. (I'm talking about the smart ones here. The mediocre ones don't bother learning.) Back when I was an MS programmer, the place to learn new things was MSDN Magazine. There is very little interest in looking outside the village gates; in fact it tags you as a little weird. This phenomenon is so well-established that I'm surprised anyone would deny it. I've commented about it on HN many times myself.<p>The second and main point is that since this large programmer population receives its knowledge almost exclusively from MS, it's a really good thing that MS have started teaching functional programming. It's probably the best chance FP has ever had to break into the mainstream. Even if it takes over just a corner of the MS world, that corner is probably larger than the rest of FP put together. This is a really good thing, and it massively kicks the ass of the crap that MS used to feed their "Elvises" and probably still do.<p>I'll add a third point. We know why this is happening. It's because a little less than 15 years ago, MS changed their direction, acquired some top-notch people (starting with Hejlsberg), and started moving in a direction more informed by CS and PL theory. This process is slow, but good. One can finally see it yield real fruit in the form of F# and the recent enhancements to C#. People like Meijer are having a very real influence. Come to think of it, that's probably why people like Meijer went to MS to begin with.
It is an arsurd article. I can point you to web devs on LAMP from the same era that were equally ignorant of other languages or paradigms. The real question for developers isn't, "what things, do I consider important, do you know?", but rather "what have you shipped?" If the only language you know is C++, but you're the lead dev for the Halo series, that gives me a lot more respect than if you know 20 languages and your great contribution is a website where you criticize what other people don't know.<p>And I think he doesn't understand the difference between language features making it to your production language and the feature existing elsewhere (especially if elsewhere is an obscure academic language). I can be sincerely interested about lazy evaluation showing up in language -- but that doesn't mean that I hadn't used it for the past 20 years in toy projects.
Through "<i>the impact it’s currently having on making functional programming, or at least some degree of it, more mainstream.</i>"<p>Go, Microsoft! ^_^
The other day I was browsing through computer books. One, on LINQ for VB, seemed very enthusiastic on this radical new technology Microsoft had brought out -- and the example they used to illustrate this was something Smalltalk had 30 years ago.<p>Incidently, Smalltalk isn't normally considered a functional programming language (do doubt because object orientation overshadowed it) but with its closures (called blocks) and select:, collect:, reject:, inject: etc methods it seems (to me) as much so as Scheme.
I am not sure I can agree with the article. By hiding so many aspects of what a program is made of, Microsoft did a disservice to C programmers. Visual Studio programmers that can write a makefile are not many and, by hiding the gory details inside an IDE, Microsoft created - and enjoyed - a good excuse for, if not creating gory details, at least allowing them to exist and thrive. The recent "embrace" of functional programming is too little, too late.<p>Plus, I have a personal feeling those gory details are there by design - Microsoft has every incentive to make it hard to port Microsoft code to any other platform and no incentive to play nice with code that will run elsewhere.<p>I cannot imagine going back to a career limited to a fully-Microsoft stack. There is just too much missing.
Watch various SPJ lecture videos for a take from the inside. He'll sometimes talk about working with collegues at MS to add things from FP to these mainstream languages.
The 'Dick' he writes about didn't know functional programming concepts in early 2000s. If HN existed at that time, you probably could have said that about the HN readers. OOP was the big deal then and the majority of non-MS programmers didn't grasp functional style either.<p>I sure didn't in 2001. The author is an idiot.
Blah - this is just trying to hide an anti MS screed by wrapping it in an article about functional programming. You'll find good and bad developers that use any language. A few anecdotes about how well he knows Dick (this name choice backfires on the author more than once) isn't really going to persuade me that most MS devs are clueless. Functional programming is new to MOST devs regardless of their preferred platform I would imagine. MS may not be as innovating as it once was but at least it isn't stagnating.
I think the accessibility of any language nowadays has the potential to create many more dicks than microsoft ever did. I also think Microsoft go to more effort to teach good programming practices than they are given credit for. I also don't subscribe to the view that I have to learn everything in order to pick up new tricks. I learn the languages, platform and tools which enable me to ship my chosen products in my chosen markets. I think too many assumptions are being made about microsoft programmers.
This article is terribly bitter, with a contrived, unsupported sense of superiority.<p>I'm a pretty well-rounded developer, but I know there are innumerable things that I don't know. I also know that I research enough that the things I'm not comfortable with aren't particularly important for me or my projects.<p>I've never developed anything real in a functional language, for instance, aside from doing some tutorial tests and realizing that the friction (with coworkers trying to maintain, for instance) overwhelmingly demolished any potential advantage.<p>I will say one thing though -- the most mediocre developers I've ever worked with tended to have the widest "range" of "skills".<p>It's a way to compensate for never being able to provide solutions. Instead they always weaved, always sure that if you just embraced the latest thing and did things entirely differently it would be so much better (which they never actually <i>do</i> themselves because their role is more "OMG, you don't know about {X}? OMG!")
This article reeks of bitterness.<p>I find it curious that he seems to knock 'Dick' for not being well-rounded enough for his tastes. If his company doesn't pay him to develop Linux products, why on earth would he learn about developing for Linux? Or other languages. Or tools.<p>I'm all for picking up new languages (learning PHP changed some of my approaches to C++), but there's a lot to be said for sticking to your tools and learning them thoroughly. I can either be highly productive in C++ or flail around in a functional language/new platform. I'll stick with the productive one until someone wants to pay me to flail.