Clojure Makes Superheros
I’m a regular guy from a pretty remote exurb in Southern California. I’m also a programmer at my job writing enterprise software using even more enterprisey tools to do it. I bet there are a lot of programmers out there like me that go to work to make a living, and it’s satisfying for the most part, but there’s always something missing from your work, something that starts a fire and really gets you motivated to do not just good work, but the best work of your life.
Computer Science 🔬
There are debates in the programming world about static vs dynamic typing, spaces vs tabs, emacs vs vim, managed memory or unmanaged, object oriented programming vs functional vs imperative, the list goes on but I’m pretty sure most of the arguments are actually not rooted in facts or science, as much as computer scientists love to call themselves scientists. No, I’m convinced that when a software company gets started and a stack gets chosen, it’s not the type safety or the seeming simplicity of object-oriented programming that is carefully considered, it’s the personal taste of the technical founder that really decides why things are the way they are.
If we step back and think about software development from the point of view that everything we’re taught and everything we do everyday is just taste/trends and not a math equation, we can stop arguing over the stuff that doesn’t really matter and just admit “I don’t like this because its not the way I want it to be.” Not every decision has to have a scientific sounding reason.
Clojure Turns Me Into A Superhero
Which brings me to clojure. Why do I choose to go home and write clojure after spending 8 hours writing code at work? Because writing Clojure is fun! It’s a simple, dynamic, functional, immutable, repl-driven, homoiconic good time.
Writing code in clojure is like transforming into a superhero. Things that would take dozens of lines of code in other languages takes as many lines as I can count on one hand. The core library is chock full of incredibly useful functions that you miss dearly when you’re using something else. Concepts that are difficult to grasp in other languages become so simple they’re child’s play, like you can literally teach clojure to a child 👶 it’s that simple. The lack of ceremony and the lack of syntax means you can focus on the problems you’re trying to solve instead of wrestling with compilers and inheritance heirarchies, clojure becomes an extension of your mind, one might say a bicycle for the mind. You can test out code as you write it, it’s like having a scratchpad next to your IDE. You can take hard problems and destroy them with incredible speed thanks to the REPL and clojure’s dynamic nature. Modeling any kind of data becomes so easy it almost sickens me. I can write incredible libraries that I wouldn’t even begin to think to write in other languages.
I know what you’re saying, well if you love ❤️ clojure so much why don’t you marry it? Well, I don’t love it that much but it certainly does make me a productive programmer who’s doing the best work of his life ironically outside of his day job.