For my entire development life, I’ve always tried to go in breadth rather than in depth. This means that I focused in learning every kind of languages/technologies available, always with a lot of commitment. I’ve learned about fantastic language and technologies, and I think that the result was worth my time. Now that I’m a little more mature of when I was 5 years ago, it’s time for me to go in depth, focusing on what I really like and what I want to turn into a profession. The more I dig inside functional programming, the more I love it. It’s true, there are some dark spot and rough edges, but once you find yourself in the Rabbit’s hole, a hole full of Monads and other cool abstraction, it’s hard to come back in the old, imperative world.
With this in mind, I’ve decided to focus my efforts around three languages: Haskell, OCaml and Scala, with an eye for the first two. The reason is very simple: OCaml has a strong commercial side, this means that at the moment is easier (at least in Europe) to find commercial users of the OCaml language, although Haskell is used for things like financial trading. Although OCaml has a rich ecosystem, the language is pretty simple to grasp, so it doesn’t require to constantly hack with it to keep your muscle fibers sharp.
Haskell is another story. I’ve only discovered the tip of the iceberg, and I’m far from being even an intermediate developer. Sure, I know and I can apply Functors, Applicative, Monoids and Monads, but things like Transformes, isomorphism, catamorphism, cathegory theory, type families and so on and so forth are strange beasts for me. I’ve also posted in the Haskell ML and I’ve got a lot of encouragements, another sign about how the community is friendly and fantastic. Said that, I’ve also started contributing to my first “serious” open source project: the Snap Framework. I hope to learn a lot as I progress.
A thing is sure. I want to earn a living with FP.