<story><title>The Problem with F# Evangelism</title><url>https://thomasbandt.com/the-problem-with-fsharp-evangelism</url></story><parent_chain><item><author>phillipcarter</author><text>I actually work on F# at Microsoft.  I&amp;#x27;ve had success and some failures when it comes to evangelizing F# through Microsoft (but mostly success if my measures are accurate).  I strongly believe that it can be boiled down to one major thing:&lt;p&gt;Programmers learn how to program with C-style languages.  C, C++, Java, C#, JavaScript, Python (sorta) . . . they&amp;#x27;re all in the same family.  People, especially while learning, associate &lt;i&gt;programming&lt;/i&gt; with specific constructs and idioms of C-style languages.  It&amp;#x27;s incredibly difficult to break that barrier.&lt;p&gt;I think that functional programming is on the rise, and that more and more developers are starting to realize that the types of bugs that hold them back can be reduced by using a more powerful language.  But it&amp;#x27;s got a very long way to go, because there is a lot of unlearning to do.  The article alludes to this a bit.  For example, immutability is one of the key concepts in nearly every FP language.  Functional programmers take it for granted, but it&amp;#x27;s transformational and completely changes the way you have to solve a problem.  This hump is often too big for many people to get over, at least in their first trial with a functional programming language.  It&amp;#x27;s hard to solve a task you know how to solve when you now need to re-think your approach because the language doesn&amp;#x27;t let you change &lt;i&gt;x&lt;/i&gt; in-place.&lt;p&gt;Additionally, I believe that many programmers aren&amp;#x27;t necessarily aware of all of the problems they&amp;#x27;re having.  The next time you hear someone say, &amp;quot;and make sure to check for null here&amp;quot;, watch them to see if they&amp;#x27;re seeing that as a general problem hurting their ability to get bits out the door or not.  In my experience, it&amp;#x27;s not usually viewed that way.  Yes, null is a necessary evil in many environments, but it&amp;#x27;s one that can be tamed, and different languages have already figured out how to do that.  But unless it&amp;#x27;s seen as a &lt;i&gt;problem&lt;/i&gt; by people at large, they won&amp;#x27;t see that as a carrot when you wave things like Optional types in front of them.&lt;p&gt;Overall, I&amp;#x27;m still excited.  Jet.com is a billion-dollar company that built their stuff with F#.  There are similar stories of companies successful with F# (and other functional programming languages), and it feels as though this is happening more often.  And as the mainstream (read: C-style languages) adopt more functional programming techniques, I think this will only get better.  I think that people will see the value, then see a language which does it better, and give it a try.</text></item></parent_chain><comment><author>runT1ME</author><text>My previous job was working for a .NET shop that powered tons of automotive search engines etc. across the web.  We moved to more and more functional concepts using C# as the team learned about them and had a lot of success with them.  At a certain point, we explored using F#, but the lack of type classes &amp;amp; HKTs meant we kept having to repeat ourselves.&lt;p&gt;We ended up choosing Scala for some new projects &lt;i&gt;despite&lt;/i&gt; having an inferior IDE experience and being unable to use some of our other libraries.  I don&amp;#x27;t think I can emphasize how much not having type classes and HKTs hurts productivity once you buy into the fully functional mindset.  We were &lt;i&gt;extremely&lt;/i&gt; productive in Scala because the language was a bit more powerful.&lt;p&gt;I would love to use F# again, but not until the language adds those features.</text></comment>
<story><title>The Problem with F# Evangelism</title><url>https://thomasbandt.com/the-problem-with-fsharp-evangelism</url></story><parent_chain><item><author>phillipcarter</author><text>I actually work on F# at Microsoft.  I&amp;#x27;ve had success and some failures when it comes to evangelizing F# through Microsoft (but mostly success if my measures are accurate).  I strongly believe that it can be boiled down to one major thing:&lt;p&gt;Programmers learn how to program with C-style languages.  C, C++, Java, C#, JavaScript, Python (sorta) . . . they&amp;#x27;re all in the same family.  People, especially while learning, associate &lt;i&gt;programming&lt;/i&gt; with specific constructs and idioms of C-style languages.  It&amp;#x27;s incredibly difficult to break that barrier.&lt;p&gt;I think that functional programming is on the rise, and that more and more developers are starting to realize that the types of bugs that hold them back can be reduced by using a more powerful language.  But it&amp;#x27;s got a very long way to go, because there is a lot of unlearning to do.  The article alludes to this a bit.  For example, immutability is one of the key concepts in nearly every FP language.  Functional programmers take it for granted, but it&amp;#x27;s transformational and completely changes the way you have to solve a problem.  This hump is often too big for many people to get over, at least in their first trial with a functional programming language.  It&amp;#x27;s hard to solve a task you know how to solve when you now need to re-think your approach because the language doesn&amp;#x27;t let you change &lt;i&gt;x&lt;/i&gt; in-place.&lt;p&gt;Additionally, I believe that many programmers aren&amp;#x27;t necessarily aware of all of the problems they&amp;#x27;re having.  The next time you hear someone say, &amp;quot;and make sure to check for null here&amp;quot;, watch them to see if they&amp;#x27;re seeing that as a general problem hurting their ability to get bits out the door or not.  In my experience, it&amp;#x27;s not usually viewed that way.  Yes, null is a necessary evil in many environments, but it&amp;#x27;s one that can be tamed, and different languages have already figured out how to do that.  But unless it&amp;#x27;s seen as a &lt;i&gt;problem&lt;/i&gt; by people at large, they won&amp;#x27;t see that as a carrot when you wave things like Optional types in front of them.&lt;p&gt;Overall, I&amp;#x27;m still excited.  Jet.com is a billion-dollar company that built their stuff with F#.  There are similar stories of companies successful with F# (and other functional programming languages), and it feels as though this is happening more often.  And as the mainstream (read: C-style languages) adopt more functional programming techniques, I think this will only get better.  I think that people will see the value, then see a language which does it better, and give it a try.</text></item></parent_chain><comment><author>GiorgioG</author><text>I&amp;#x27;ll get excited when the Visual Studio team actually holds up a release because something is horribly broken in its F# support.  So basically...never.</text></comment>