My broken marriage with C# and extramarital affair with F#
A developer's journey from C# to F#: discover why this programmer fell in love with functional programming and how it changed their career.
NOTE- As per today I am neither married nor committed. And for that matter, never married and never committed. :P
Whoever is following my progress must know my love for F#. Neither me nor F# knows the exact time and date when that happened. But now it is like if I go a few days without writing a few lines in F#, then it feels like I have left software engineering for good.
I am full-time married to C#. My heart and soul still bleed for it. Still I am following Jon Skeet. Still I am updating myself. But truly speaking, that enigma, that love, those emotions are lost. And the final blow comes when I don't have to see C# on a daily basis.
My profile changed at my day job. Can't share all the details though, but it is not C#.
Our shared time is getting less day by day. And even that less time is getting consumed by newly found adventures with F#.
I still remember a day when I visited it on TryFsharp. And my first impression was 'OK'. But then slowly it started getting into me. Then more meetings happened at fsharp.org. Can't say why, but just for F# I made a request to become a member of fsharp.org and luckily got accepted. Meetings became more frequent. Is it love? I didn't know at that time.
But then something happened. I started burning midnight oil for F# and one day God answered my prayers with less effort, and the first time I ran F# code on Heroku. I felt the first spark of love. And love got confirmation when my name got placed at fsharp.org with F#.
After that, there was no looking back—there were just milestones for a bond that is getting stronger with every obstacle conquered. It includes my first community check-in for a Visual Studio template, my first experience of porting Signalr and Nancy on Azure, and lately porting servicestack with SignalR.
It is never one-sided. Whenever I have lots of data, I have F#. Whenever I have a complicated (or not that complicated) algorithm, I have F#. I want to do mobile? I have F#. I want to make a game again? I have F#.
It is not that it is the only one, but for me it is the one. So simple, elegant, sweet, graceful, and still so powerful. And it never demanded anything—it just works on any platform.
So all is good? I can't say so. I am still married to C#; my resume says so. I am still having the same respect that I had long ago, but maybe that love is lost. I don't know whose fault it is—maybe mine, maybe F#'s. But what stays is less fun and more friction.
There are few things that only C# can do, few places like Azure where only C# can go without any issues. It is not that I wanted to get separated, but sometimes in some places it is not the best possible choice.
I don't know how far I can go with C#, but my love for F# is reality. If I am continuing in the software industry and if my choice will be granted, my first choice will be F# as of now and maybe for a few more years to come.
NOTE: I still follow C# and I'm quite good with it, but if I get a choice, I will always go with F#. I just want F# to get the same respect and love from the business line of Microsoft Products. As things are changing in a positive direction, hopefully that day is not too far away.
Frequently Asked Questions
After discovering F# on TryFsharp.org, the author gradually became drawn to its simplicity, elegance, and power. The turning point came when successfully running F# code on Heroku and getting recognized on fsharp.org, which sparked genuine love for the language. F# proved to be versatile—handling data processing, algorithms, mobile development, and game development—without demanding much in return.
Yes, both languages can coexist in your development career. The author remains professionally committed to C# while increasingly dedicating personal time to F#. They highlight that there are specific scenarios where only C# excels, such as in Azure environments, making both languages valuable depending on the project requirements.
F# is not universally better—it's better for specific use cases like data processing, complex algorithms, and functional programming paradigms. However, C# still has its advantages in certain environments like Azure and established enterprise ecosystems. The choice depends on your specific project needs rather than one language being objectively superior.
F# stands out for being simple, elegant, graceful, and powerful while remaining platform-agnostic. It excels at handling large datasets, solving complicated algorithms, mobile development, and game development with less friction and more enjoyment. The language requires minimal setup and just works across different platforms without demanding extensive boilerplate code.
The author became a founding member of fsharp.org and contributed through multiple initiatives including creating a Visual Studio template, porting Signalr and Nancy to Azure with F#, and porting servicestack with SignalR. Starting with small experiments on TryFsharp.org and gradually taking on more challenging projects helped build expertise and community recognition.