FSharp Mentorship: Week 1
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!
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.