Accepting the Unknown
It’s easy to become frustrated and mired down in the details of whatever it is you’re learning about. Picking up Clojure (and related tools) has been no different.
During my experience as a user researcher, I noticed that clients would often get nervous right around the time the data became overwhelming and actionable findings seem so far away. The ambiguity and seemingly infinite minutiae inherent in qualitative work left some people confused and frustrated–myself included, at least in the beginning.
In the end, everything worked out. The larger patterns always became clear and the initial freakout later seemed completely unnecessary. Instead of doing an emergency deep-dive into the data to glean everything we could fit in our brains, we took it one step at a time. And that was really the lesson here–learning is a marathon, not a sprint. Chill out. Take a breath. It will come with time.
This strategy has proven to be crucial while learning Clojure. It’s just as insane for a researcher to try to memorize every participant’s full daily routine before starting to work through user behaviors as it would be for a developer to memorize Clojure’s complete documentation before you wrote a line of code. Jump in, break some stuff and get a feel for how it works and what it looks like, and sweat the small stuff later (if at all).
I’m not saying to ignore the details; just filter out what’s important and what’s not, given the current context, and learn what you can in the moment. It can’t be everything, so choose wisely.
A concrete example from my Clojure learning comes from the Clojure documentation itself explaining a loop:
Evaluates the exprs in a lexical context in which the symbols in
the binding-forms are bound to their respective init-exprs or parts
therein. Acts as a recur target.
My first (and probably vocal) response was, “Uhhh? What the what!?” As a newbie to Clojure and more advanced computer science terminology in general, this documentation might as well have been written in Elvish. I’m sure it makes sense to someone, just not to me and not yet.
But rather than getting my undies in a bundle and painstakingly researching and memorizing every term in the description, I skipped to the examples, asked my mentor a few questions and reminded myself to be okay with the unknown. And just like that, I was able to implement and (mostly) understand the behavior of a recursive loop in my code within minutes. Am I an expert? Absolutely not, but this helped me take my learning one bite at a time.
If you’re learning a programming language or paradigm, pick your battles, understand that it won’t happen overnight and come to terms with the fact that you can’t possibly know everything. It will come with time.