I’m just a “regular” software engineer. So when I attended a recent conference on functional programming, my reasons for attending were often remarked upon. I was asked to offer some insight into how I ended up in the land of Functional Programming, and what lessons I might impart about my journey.
To set the stage; I’ve been programming from a young age, and graduated college having majored in Computer Science. I’ve used every major language in that time for personal projects, and almost all of them in professional projects. A sampling of languages I had used before this story includes: Pascal, C/C++, C#, Java, and Objective C.
You may infer that all of my formative experiences and all of my formal training focused solely on procedural and object-oriented languages. At the time of this story, I had complete confidence in these tools and my skills to solve any software engineering challenge that might arise. But in spite of this preparedness, it was the very tools I was taught to use that would betray me.