Sponsor: Interested in learning more about Distributed Systems Design? Enter for a chance to win a 5 day Advanced Distributed Systems Design course led by Udi Dahan founder of Particular Software, and creator of NServiceBus.
This is a first blog post in a series to document my experiences while learning functional programming. This is my F# Journey.
During my 15 year career that started in the late 90’s, I have not made very many conscious decisions about learning a specific language or technology. The path I’ve taken and the experience I’ve gained seems like it just happened naturally.
As someone always wanting to learn, I usually find some interesting topics and start going down the rabbit hole (Domain Driven Design, CQRS, Event Sourcing… thanks Greg Young), however I never usually set out on a “I’m going to learn X” journey.
That’s about to change.
As with anyone that keeps up with the latest trends, functional programming is all the rage. And I do believe for good reason (more on that later), which is why I’ve decided to take on the journey of learning with F#. I’ve chosen F# because of my .NET/C# background and feel it can help my career to keep it in the .NET ecosystem.
What I’ve learned so far…
Stop comparing it to C#
It’s natural when looking at another imperative language that you are unfamiliar with, to compare it to the language you know best. The concepts are all transferable. How do I perform a loop? How do I define a variable? How do I assign a variable?
With a quick search and reading a few examples, you are off to the races writing some basic code in a new imperative language. Stop trying to compare concepts.
Let it go!
Open up your mind to new ideas and try and forget everything you know.
Think like a beginner.