FSharp Mentorship: Week 1

Image result for fsharp logo
FSharp Mentorship Program

I can remember when I was scouring the internet and looking at every single programming language I could find, from Nim to Pony, looking for the language that was going to grab me. I stumbled across F#, and the one thing that I still remember to this day seeing was the Mentorship program that was offered by the FSharp Foundation (http://fsharp.org/).

Being a huge proponent of the Mentor/Mentee relationship, this immediately resonated with me. I have gained an immense amount of knowledge and satisfaction by either being mentored or mentoring someone else. I wanted to be a part of this, as well as F# as I felt it spoke to the spirit of the community. But alas! Registrations were closed when I first stumbled upon it.

About a year later, after dabbling in every single language that is out there, but never very deep, I was on F#’s website and noticed that applications were currently open for mentorship. I eagerly applied and hoped for the best. I heard great news a few weeks later that I had been chosen to participate and would be paired with a mentor!

My background began with Java, which moved into JavaScript, Clojure, Ocaml, any language you can think of. Majority of my time spent at work was in Javascript, whether it be React or Node, and continues to be mostly Node as of lately. I have been lucky enough to work at some great startups as well as some bigger companies and have had some great experiences. I have always liked to be on the cutting edge and spend a vast majority of my time learning new languages, and lean hugely towards functional programming.

I am coming to this not at a complete newcomer to programming or functional programming, but have had no experience with the .NET framework or F#.

Luck smiled upon me as I was paired up with a great mentor, Nat Elkins who writes F# for a living at Jet. He has been a huge help and has a ton of knowledge and passing for F#. We spoke and came up with a plan, which for the first week was going to be primarily the .NET ecosystem as well as some introductory slides and presentations that he sent my way.

.NET is a whole other beast. I have only used Linux for years, but I had seen how the tooling had gotten so much better in Linux and I just think Microsoft has been doing a fantastic job lately.

I spent time learning about FSharp, Paket, Forge, dotnet, Core CLR, Mono etc.. could go on and on! This was definitely a stumbling block and a majority of my time was spend just becoming acclimated to the new ecosystem. I am at a point where I feel I can start developing, but there is much, much more for me to learn.

Being familiar with functional programming, the new concepts such as map, filter, flatMap, immutability etc.. were not a problem as I already had experience with them.

I first starting experiencing some hiccups when exploring Discriminated Unions. I could not quite understand what they were doing or how I could find a parallel in languages I was used to. After talking with my mentor, who really helped me out here, seeing them as sort of constructors with allow a Type to hold a value, I finally had a clear understanding of what they are and what they are used for.

Last evening, we had a terrific phone which Nat went through the presentations and cleared up a lot of the remaining questions I had. All in all, I have had a great first week and look forward to many more, really enjoying F# and the community surrounding it.