The Mystical Properties of Programming, or Why I Chose Haskell

I was attracted to programming initially because it gave me the power to be superior.

I can only assume others in our industry arrived here for similar reasons - why else would the software engineering landscape be rampant with ‘everything new sucks’ hate and vicious elitism / condescension?

That is the dark side of the force, in a sense. On the opposite side of elitism under the spectrum of superiority is curiosity, awe, and a voracious desire for understanding that which so many do not.

Certain programming languages have attracted me more than others for this very reason. Some programming languages give off a magical, sparkly aura.

The Ruby programming language had me under this spell from the get-go. The frequent references to Taoism, Buddhism, the Way, made Ruby appear as a mystical and possibly even dangerous tool - but if wielded and understood correctly… it was a beautiful thing to behold.

Writing Ruby does not feel like an art, as so many have said, but understanding it does.

In my eyes, this is because Ruby is so consistent. It gives you the freedom and power to wreak metaprogramming havoc, but there is a Right Way. It is an Object-Oriented programming language down to it’s core, and say what you want about OO, Ruby minimizes WTFs and sticks to its guns.

Ruby feels magic precisely because there is so little magic. When learning Ruby, you are trying to discover a secret, a key that will unlock the language for you. In my experience there were a few of these ‘keys’, a few guiding principles that allow you to fully grok the language. (Not to mention it’s wonderful expressiveness)

 Haskell, the next level of occult

Haskell has entered the mystical domain. After years mostly brewing in Academia, Haskell is starting to draw attention in The Real World.

I think it is attracting people for some of the same reasons people are attracted to Ruby.

People (me) begin to tire of the classic Ruby debugging scenarios. Dynamic typing, such dynamic method calling abilities, no GIL, etc.

The courageous ones look to the other side of the spectrum. (Haskell is the other end of the spectrum, really. Statically typed and compiled, pure, built around academia and mathematics)

This is what gets them looking. But part of what got me to commit was that Haskell promises you a certain degree of power and superiority (enlightenment? sound familiar?) due to the concepts required to grasp the language fully.

This is obviously a powerful language. Things are pure, the type system is fantastic. But not only that, I can recognize there are major concepts here (Category Theory). Understanding them will unlock this language for me, and in turn will unlock more programming power!

I want to harness the power of this occult language born from the depths of the alchemists of education to construct safer programs and more importantly, to understand more sophisticated concepts and ideas.

Understanding and grokking a programming language is satisfying in its own way. I can recognize similar elegance and beauty in Haskell that I saw in Ruby, and I’m desperate to study it.


Now read this

Fitness, and the problem with the ‘fuck it, ship it’ model

GSD (getting shit done) is great. I couldn’t get anything done if I didn’t get anything done. But ‘fuck it, ship it’ isn’t right. Ask your local personal trainer. Any serious fitness-enthusiast will tell beginners that it’s always ALWAYS... Continue →