Programming is a Soulslike.

Dark Souls is notoriously difficult. You need to memorize enemy movements and patterns to get good at the game. You cannot beat it casually.

The “Git Gud” meme traces back to this whole ordeal: You need to become a better player, learn the movements and patterns, in order to beat the game.

Which implies a probability above 0% that you will never make it.

“Soulslike” is a whole video game genre nowadays, and the term escaped gaming into the wider sphere of Reddit and other places where memes are memed. Sentences like “Haskell is the Soulslike of programming” float around the internet, for example.

But I don’t buy the Haskell part. I believe that programming itself is a Soulslike activity.

  • You can’t do diddly squat when you begin programming.
  • You run into all kinds of frustrating problems along the way.
  • Through mastery of mechanics – those of the language and computing environment you employ – you get better at “the early stages”.
  • Eventually, you don’t run into certain problems anymore, you bypass or solve them, because you already know the moves and can smell a mutable state from a mile away.

Only difference to the game: this cycle of frustration and overcoming problems never ends. There is no end-game. Or put differently, it’s all end-game content, procedurally generated. It’s just that the player can decide to stay in a zone of comfort for a while and repeat similar tasks.

Haskell may just be another frustration on your programming journey from which you will emerge with esoteric knowledge and new insights for your work. But the second your head pops out of the Haskell rabbit hole, you’ll spot another.

I firmly believe there is no way to program without frustration. Avoiding it is a setup for failure if you want to do this for the long term, because you never actually quit the early-game.

That’s not to say there’s no joy to be found.

If you dig overcoming hurdles, solving problems and puzzles, the experience will be as rewarding as it gets. It takes gamers of a certain ilk to play Dark Souls and Soulslike games willingly and enjoy the experience. Programming, too, does attract a certain kind of people who push onward.

My motivators? I enjoy creating things from nothing. I enjoy the immersion of figuring out tough problems in a way so that I could write an essay about it in the end. But that’s not the way. Just as there are “blocking” and “dodging” playstyles to overcome challenges in Dark Souls, this particular path to bliss is merely the one I picked.

How do you find your victories?

What keeps you pushing ever forward?