F# Development Series

Published on Thursday, April 23, 2020

F# Development Series

Bear with me. This is going to be along work in progress.

The medical industry has an interesting concept for learning: see one, do one, teach one. The idea is that to master a topic you have to go through three phases. First, your “shown”/told/etc. how to do something by an instructor/mentor/ect. This is the first phase of learning. You start to get a surface level understanding of the topic here. Next, you actually apply what you've learned. Until you've done this there are things you don't really understand. It's here that you get a deeper understanding of the topic. That final phase, though, that's where you can claim to have a mastered the topic. If you can't explain the conpcepts you've learned in a way that others can understand it, you're still learning yourself.

This philosophy is one of the bigger reasons I've always blogged. It's not just so I can help others, it's so that I can gain mastery of a topic myself. It's part of my learning experience.

Recently I've been learning F# development. I feel I'm past the first phase, and partially through the second. I'm struggling with the second phase, though, because I find that the existing resources (that I can find anyway) just don't do a good enough job in assisting me with actually “doing it”. There's plenty of resources out there that help me to learn the language, but next to none, especially of quality, that help me to learn the tooling. I can understand the language fine, but if I can't work with the tooling then getting beyond the "hello world" stage is going to elude me a bit.

Well, if the resources don't exist, I'm just going to have to learn by creating those resources myself. Because I'll be circumventing some of the stages here and mostly going straight to “teach one” it's going to be a bumpy ride. So bear with me. You can learn with me as I go, and in the end I can hopefully clean up what I get wrong initially.

So, the goal in this new series of blog posts is to teach you (i.e. me) how to work with the tooling to produce more complicated F# projects than just hello world or other such samples. As a .NET language, you'd think that if you knew C# this would be easy, but my experience so far says it's not. There's a whole world of tooling that the F# developer uses that the C# developer does not, and if you're going to be productive and master F# development, you're going to have become comfortable with this tooling.


As I go, this is going to be a very rough draft. I'm not going to polish the posts, they may be a bit scattered, and I will get things wrong. So if you're following allong, please, provide me with feedback in the comments. Over time I'll refine the posts, and end the end they'll hopefully be of good enough quality to be useful in helping others.

comments powered by Disqus