Thank you for courageously sharing your experiences to kick off this vital, but potentially sensitive topic. I appreciate that you don’t assume your perceptions are 100% accurate but that you are confident enough in them to raise this issue as a possible concern, which I would summarize as: Does elitism exist in Clojure and is it harming our community?
I’ve been thinking a lot lately about the paradox of communication. On the one hand, it’s so easy. Words roll off the tongue, often automatically. On the other, it can be extremely difficult!
We can talk about talking, but it’s a different thing to be there in that moment in time, in that group of people, perceiving the interactions through our own lens, life experiences and goals. All of which differ from those of each member of the group, the group and its network of sub-groups. It’s complicated. We work and interact within schedules and deadlines and people are naturally interested in participating, understanding, and getting their points across.
Compounding the difficulty, in our industry, we often work alone for long stints, coming out of our hermit phases, unpracticed in the finer nuances of communicating gracefully with others.
I’m keenly interested in this topic because I think our community’s success will be directly proportional to how effectively we learn to help newcomers learn Clojure’s unique approaches to problem-solving. If memory serves, according to surveys done by FreeCodeCamp, some 65% of programmers are self-taught. Every individual learner matters, but to exclude such a massive share of the market of minds would be foolish, at best.
But isn’t that easy for me to say, today. I’m not the one who authored Clojure, or who painstakingly supported its growth from its earliest days, doing the long, hard work of caring for the details which have made it as successful as it is today. I didn’t suffer through decades of programming in Java, working around the object impedance mismatch issues of traditional database systems, or developing web applications with pervasive, cyclical object mutation.
Those who did suffer through these stages are naturally more expert in Clojure than I. Relative to me, they are elite in our given field of endeavor. I hang on their every word to refine my mental model of solving problems with Clojure.
Each of them only ever had 24 hours in a day, a portion of which to dedicate to improving the Clojure experience for future Clojurians. Trade-offs had to be made! Should they have marketed Clojure to someone who didn’t know what OOP is, or wait for them to “get it”. How much time in their day did they have to explain rudimentary concepts? Or could they get more traction by focussing on professional developers who can immediately understand the significance of Clojure’s basic value propositions?
After re-reading Eric’s quote above I can see I’ve spent the last two paragraphs emoting the stages of “crossing the chasm”. I’m trying to use that emotion to make a point.
How easy is it for us to throw around the language “elitist” while leaving out a potential host of positive adjectives to describe those selfsame conversations among Clojurians. Are we the elitists, ascribing the worst of attributes to those who simply learned the most efficient path to get us here and took it?
Please don’t read into my point that I’m suggesting we shut down this conversation. On the contrary, I assume your perceptions have an essence of validity, the conscientious exploration of which can improve our outreach.
Moreover, I think this conversation is a positive sign and an indication that we might be ready to cross the chasm by standing on the shoulder’s of giants and polishing the Clojure tooling to make getting started with Clojure mind-blowingly awesome, a no-brainer for the average aspiring programmer. But we have other work to do too. And you’re tapping that vein of gold by airing your inner-most thoughts on fragile ground. And doing so with care.
At a recent Clojure meetup in Raliegh Durham, Stuart Halloway gave a talk about Spec, during which he used his jovial and light-hearted sense of humor to make some comments about deciphering Rich Hickey’s ultra-concise language around Clojure. I thought to myself, “Thank goodness, it’s not just me!” It was an almost gleeful moment of relief, probably because I was imagining in my head Stuart hanging onto every one of Rich’s words like I was his in that moment, and giggling to myself at the universality of the challenge of communication, even between two great minds like Rich and Stu. After all, there’s only so much time in a day and eventually Rich has to get off the phone with Stu and go about his own affairs.
Why was I so gleeful? We invest ourselves so fully into this shared pursuit. I’m no exception. I want to master this craft so badly! I look up to these people. To imagine Stu flailing about like me to expand his understanding was a comic relief and cathartic on a deeply personal level. This is the place from which I’m hearing you say we likely have something to improve on as a community.
In watching a handful of Lambda Island videos, I’ve gained a sense of how thoroughly you approach a subject and a respect for your analytical skills, which is why I look forward to unpacking this problem further, together.
It sounds like my experience (or the perception thereof) has been somewhat different than yours. I’m not formally trained or educated in programming. I’m one of the 65%. I first learned some JavaScript, then Python. I had a prototype for my web app in Python but my code was distorted with ORM concerns to keep the database happy. I didn’t want to be forced to alter my data model to satisfy performance.
My relentless research into the impedance mismatch problem led me to Datomic, upon which I discovered Clojure. I watched Rich’s talk Simple Made Easy and I knew in that moment that I was in the right place with the right people learning the right things. That feeling has never left me.
I’ve felt incredibly welcome and supported at every Clojure event and group I’ve plugged into. From the Google Group to the beginner’s channel on Clojurians Slack, the Clojure user groups to the 2016 Austin Conj, I’ve been blown away by the incredible people I’ve met and their willingness and desire to help me learn. I can’t list everyone here, but experienced developers from Clojure’s inner rank, Russ Olsen, Michael Nygard, Luke Vaderhart, have all invested one-on-one time to mentor me into a better developer.
So much so, that I have caught myself feeling guilty for wasting their time with trivial questions which I would know with a more formal education in our field. To be clear, no one ever did or said anything to make me feel this way, it’s just that I realized the inefficiency I was party to.
In fact, these feelings got me thinking about how to improve that situation. I think we could do a better job of developing, and more importantly, organizing curriculum paths which would spare both mentors and mentees from the distracting minutia, thus freeing both parties to interact around more core fundamentals.
And maybe we need to set aside a time and place for experts to convene, to interact unimpeded by trivial education distractions. Just as we need an outright revolution in education itself. We open source our code. Maybe its time to open source our education, en masse. ClojureBridge is a step in the right direction. I propose we need a sibling effort open to all persons.
In conclusion, I believe the sentiment behind your concerns about elitism is an important catalyst for positive change because we are at a natural stage of community evolution, not that we have an inherent elitism problem preventing our growth. It feels like we are at a critical juncture for moving Clojure into the limelight and I’m ecstatic that you are the people I’m playing that game with. Looking forward to your critiques, rebuttals, and proposals. My best : )