I don’t normally do retrospectives but this year has been extraordinary for a number of reasons with soaring highs and deep lows. We’ve also had a long period of enforced isolation due to COVID Restrictions that adversely affected me more than I realised at the time.

I’ve been writing code professionally for over 25 years, but have been wondering for a while if there are other things that I could/should do instead. I enjoy solving problems but have found that I’m having to deal with more and more bureaucracy in software development through the standardisation of Scrum and Jira in the workplace.

Mentoring in F#

I’ve been offering free one-to-one remote mentoring to folks wanting to learn F# since the start of 2021. I limit the numbers to three at most running in parallel. Whilst I like reading, I learn so much faster by doing, and having a dedicated mentor has to be the ultimate approach. YMMV. The cadence for the sessions was one blog post/book chapter per week for the first four to six weeks and then speed up from there. Understanding the fundamentals covered in the first five chapters of the book is vital to writing elegant F# code.

A number of the changes and improvements to my book came through mentoring sessions.

Despite continuing to offer sessions, I haven’t had a mentee since July. I’m really only interested in newcomers to the language as there are other support groups like Slack for established F#ers.

Essential F# Book

In April, I made the decision to produce an update to my F# ebook for F# 6, which along with a number of improvements suggested through mentoring, I would make free for all readers from the release date in July.

Thanks to a small but dedicated group of reviewers, the book was published in early July.

Testimonials

I’ve received a few very nice comments about the book from some nice folks, a few of which I have included here:

“I’ve been using F# for some time, mainly to automate tasks, so I have a bit of experience with the language. Your teaching approach is helping me connect the dots and get a better understanding of the concepts.” - Stefan Rohlfing

“One of the essential cornerstones of #fsharp, freshly redone. Congrats @ijrussell, and enjoy it, future-f#-devs!” - Chet Husk

“Ian is a tremendous writer and does a great job in approaching #fsharp both in finding commonalities with other technologies as well as clearly showing where the language effectively stands apart. Highly recommended! I appreciate the conversational style – #fsharp as an ecosystem is blessed with a broad set of explainers - each with their own perspective. The language and is deep & wide enough that it deserves expansive treatment. I feel like your book has helped me with fresh approaches.” - Houston H. Haynes

If you have any comments to make about the book, please contact me via Twitter or GitHub (ijrussell).

Royalties

The initial version of the book was priced at $12.50, with the 80% royalties being paid to the F# Software Foundation.

Lifetime purchases: 427 paid and 1760 free.

Royalties: $4100 royalties to the F# Software Foundation and $125 under quarantine at LeanPub.

Source Code

The source code for the book, in Markdown format, is available at Essential F#.

I will happily process reported issues or even pull requests if you want to fix the problem yourself.

There doesn’t need to be another significant update of the book until .NET 8 LTS is released in late 2023.

Learnings

It’s hard work with very little upside. I wrote this book because there was nothing else like it out there, and I was privileged enough to not care about the costs involved.

I wonder if making it free has been a double-edged sword? Yes, it makes it more widely affordable but many will look at it as “if it’s free, it can’t be any good?”. Not being an MVP, I didn’t feel that I could approach the main technical publishers with this book. I’d have needed to sell four times the number of books to match the royalties I’ve passed on to the F# Software Foundation.

Overall, I’m incredibly proud of the end result. I wish that it was more popular, not for my benefit but because I think that every .NET developer should spend time learning F#.

Employment

I left Trustbit in July after three years of working on a complicated F# application dealing with over 10_000_000 GPS signals per day. Trustbit is a great Company to work for with an excellent group of colleagues to collaborate with and some very interesting projects to work on. My leaving was not a reflection on them but rather my need to take a long break from software development.

I’ve had a couple of interviews since July but I wasn’t really mentally prepared for either as I’m a team player and by their nature, interviews are about each person’s achievements. Being in a team means you don’t apportion blame and you don’t individually claim the credit.

Learning Go and Haskell

It’s no secret that I have been looking outside the Microsoft ecosystem for inspiration and have been learning Go and Haskell for the last few months. Whilst I like both languages, I prefer F# for the way that my brain works. If forced to choose, I would pick Haskell because I like the benefits of functional programming.

Reviewing a Functional Programming in C# Book

I have just completed the second round of formal reviews for a new book on Functional Programming in C# that will be released next year. I really like functional programming but the noise when using C# puts me off - It’s just so much cleaner/easier in F#.

Advent of Code

I started the Advent of Code on December 1st, knowing that I wouldn’t really have enough time from day 10 until day 20 and that is how it has worked out. It was nice working on quirky challenges and comparing my solutions with other F# developers and those using other interesting languages. The place where .NET falls down is with text parsing. If I do this next year, I need to spend time looking at a text parsing tool like FParsec. I’m aiming to catch up with the challenges that I’ve missed before the New Year.

The Future

I’m assuming that my future lies outside .NET, maybe outside of software development but unlikely. I love working with F# but the opportunities to use it are almost non-existent in my local area and quite rare remotely outside of banking, crypto, or gambling.

At the moment, I feel like the old dog at the Pound who never gets picked, overlooked for the new shiny puppies who will chew all your furniture and make a smelly mess all over the place. I will never be a perfect physical specimen but then I never was, but I play well with others and help to bring out the best in the others on my team.