Having finally given up with dasBlog, and decided to join the rest of the world using WordPress, I was left with the painful job of transferring all my old blog posts across. One advantage this gave was the opportunity to re-read some of my old posts, and see how much (or not) my opinions have changed.
One of my older posts was written when I first started learning F#, and was hugely frustrated at the blatant lies told by a lot of the community in an attempt to convince C# developers to use F#. Whilst I was enjoying F#, and felt it had something fresh to offer, I was (and still am) really annoyed at some of the rubbish being written.
Well, it’s now over two years later, and not much has changed. Due to lack of time, I took a break from learning F#, but have recently come back to it. Not that I have more time, I just stopped doing some of the things I was supposed to be doing!
As our company has an account with Pluralsight, I decided to see what they had to offer in the way of F# videos. I watched them all, and was surprised at the variation in quality. On the one hand, you have a very clear and well-designed course by Tomas Petricek, who not only explained the material well, but seemed to understand that you have to use the right tool for the right job. Part of the course involved building a web site that allowed you to see movie reviews, and used F# type providers to supply the data. Instead of jumping through hoops to create an F# ASP.NET web site, he pragmatically used a C# web project, and referenced an F# library to do all the real work. This meant that he had the web site up in seconds, and could concentrate on the business logic in F#.
This was in stark contrast to another course there, where the author insisted on building a UI in F#, requiring him to hack around with a project file, and write the F# code to build the UI manually. All this was so that “you don’t have to look at any C#.” This comment struck me as being stupendously pathetic. For whatever reason, we don’t have the same quality of UI tooling for F# (well, we don’t actually have any to be honest) as we do for C#, so why not use the right tool for the job? Why pretend that you should do everything in F#, just because it’s F#.
If all you have is a hammer, everything looks like a nail.
Another course annoyed me even more. Apart from being disorganised, and with a sample project that required you to understand a whole load of maths that wasn’t explained (and was clearly above the level of your average software developer), the author was of the opinion that “F# is better than C# because F# has functions.” Even typing those words gets me annoyed. It’s such a stupid comment, and completely misses the true reasons to use F#.
So, in two years, very little has changed. F# gets better and better, although in fairness, so does C#. I’m still learning F#, and have decided to ignore the rubbish people write about it, and just get on and learn it. Sadly, the lies and exaggerations that are still being thrown around are putting off a huge number of C# developers who would probably enjoy F# if they gave it a chance. Unfortunately, they never will, because the idiots who try and sell it lie so much that the very people they are trying to convince click away in disgust.