Two More Reasons To Use F#

On March 1st, James McCaffrey posted a blog article about why he doesn’t like FSharp found here. Being that it took 3 weeks for anyone to notice is revealing in of itself, but the post is probably important being that McCaffrey writes monthly in MSDN on machine learning/scientific computing so he has a certain amount of visibility. To his credit, McCaffrey did try and use F# in one of his articles when FSharp first came out –> unfortunately, he wrote the code in an imperative style so he pretty much missed the point and benefit of using F#. Interestingly, he also writes his C# without using the important OO concepts that would make his code much more usable to the larger community (especially polymorphic dispatch).

In any event, the responses from the FSharp community were what you would pretty much expect, with two very good responses here and here (and probably more to come). I had posed this similar question to the FSharp Google group a while back with even more reasons why people don’t use FSharp and some good responses why they use it. Recently, Eric Sink also wrote a good article on FSharp adoption found here.

For the last year, I have had the opportunity to work with a couple of startups in Raleigh, NC that are using FSharp and have a couple of observations that haven’t been mentioned so far (I think) in response to McCaffrey :

CTOs in FSharp shops don’t want you to learn FSharp. They view using FSharp as a competitive advantage and hope that their .NET competitors continue to use C# exclusively. Their rational is less to do with the language itself (C# is a great language), but the folks who can’t go between the two languages (or see how learning FSharp makes you a better C# coder and vice-versa) are not the developers they want on their team. The FSharp shops I know about have no problem attracting top-flight talent –> no recruiter, no posts on dice, no resumes, no interviews. Interestingly, the rock star .NET developers have already left their C# comfort zone. A majority of these developers are webevs so they have been using javascript for least a couple of years. For many, it was their first foray out of the C# bubble and they hated it. But like most worthwhile things, they stuck with it and now are proficient and may even enjoy it. In any event, McCaffrey also doesn’t like HTML/Javascript/CSS (7:45 here) so I guess those developers are in the same boat.

You don’t want any of the the 100,000 jobs on Stack Overflow that McCaffrey talks about. My instinct is that those jobs are targeted to the 50% of the C# developers still don’t use linq and/or lambda expressions. Those are the companies that view developers as a commodity. This is not where you want to be because:

They are wrong. The world is not flat. Never has been. CMMI, six-sigma process improvement, and other such things do not work in software engineering. The problem for those companies is that they have lots of architects that don’t write production code, project managers that are second-careering into technology, and off-shore development managers who have no idea about the domain they are managing. All of these people all have mortgages, colleges to pay for etc… so this self-protecting bureaucracy will be slow to die. Therefore, they will continue to try and attract coders that don’t want to think outside their comfort zone

It sucks working there – because you are just a cog in their machine. You will probably be maintaining post-back websites or fat-client applications. Who needs Xamerian anyway? And be happy with that 2% raise. But they do have a startup culture.

In any event, I hope to meet McCaffery at //Build later this month. My guess is that since his mind is made up, nothing I say will change his opinion. But, it should be interesting to talk with him and I really do enjoy his article’s on MSDN – so we have that common ground.