Six years ago, I started working with Phil Trelford on an F# course that eventually became FastTrack to F#. We first ran the course at SkillsMatter in London on October 27-28 in 2011. To celebrate the anniversary, we partnered with SkillsMatter to offer 25% off the upcoming course on October 16-17 in London. Just use the F#-OCT2017 code when registering via the course page at SkillsMatter. However, I also wanted to use this opportunity to reflect on how our approach to teaching F# has evolved.

The course has always been focused on people who want to gain practical experience so that they can get started with using F# in practice. However, we keep improving and adapting the course almost every time we run it and so the last six years provide an interesting insight into the F# ecosystem, community and also our ideas about best ways of teaching F# and where F# can make the largest difference in practice.

There are a few interesting trends over the last 6 years that are reflected by the course contents:

From functional to functional-first. We started with a lot of emphasis on functional programming concepts. Over time, the F# style evolved to something the community now calls functional-first and so we focus less on some traditional functional concepts and more on mixing them with other important (non-functional) aspects of F# programming.

New cool libraries. There are always some cool new things that appear with a lot of noise (and get their own section in the course) and eventually become yet another, occasionally useful, tool (few slides in other sections). For example, LINQ, Task Parallel Library and Reactive Extensions all still get some space, but much less than when they first appeared.

Microsoft and F# ecosystem. When F# appeared, we focused on using F# with other .NET technologies coming from Microsoft. This is still important as the .NET interoperability gives you access to a large number of fantastic libraries, but the F# ecosystem became a lot richer, and so the course now mentions many libraries that are F#-specific including type providers (F# Data), web servers (Suave) and build system (FAKE).

In the rest of the article, I will write about how the course evolved and look at some of the notable changes (as well as things that have not changed) in more detail.

Brief history of our F# courses

The course keeps evolving pretty much every time we run it, but I split the history into three major versions. The early days is from around 2011, the second iteration from late 2013 and the modern times from 2016 onwards.

Early days: Functional programming