The reactive programming paradigm interested me and I wanted to understand the underlying concepts. I had no clue what "side effects" meant, what functional meant. I was writing ugly imperative C# code, with no wonder of the cost. Null pointer exceptions and their friends... Story is known.
One day I tried to write some Haskell. My attempt to write a simple program miserably failed. I asked myself whether I deserved my title of software engineer or not. This is how I tried to dove into type theory and category theory to understand this incredibly powerful language.