Skip to content

Instantly share code, notes, and snippets.

@tapickell
Last active July 13, 2024 15:55
Show Gist options
  • Save tapickell/5a3a65c151f48988917b85ebb985276b to your computer and use it in GitHub Desktop.
Save tapickell/5a3a65c151f48988917b85ebb985276b to your computer and use it in GitHub Desktop.
clojure_discord

Dear Clojure,

👋 Hello, I am new to this community and a bit hesitant to add anything to this conversation as it feels like this is a deep conversation for those whom have been a part of this community for a long time and are very passionate about the language and tools. But maybe a bit of an outsider looking in perspective could be helpful.

I was first introduced to Clojure in 2016. It was a short stint on a single one off service that we tried in Clojure under the direction of (what I would call) a Clojure evangelist, who was also very passionate about the language and tools. The project did well and was interesting to work on.

Fast forward to 2020 the next opportunity I had to use Clojure for work. We were hired to rewrite a large Java application into Elixir, but at the same time we needed to do a lot of bug fixes to the Java codebase. Under the guidance of one of my colleagues (another evangelist and published author of a Clojure book) we introduced Clojure and used it to tame the Java app.

Fast forward to today, I still keep in touch with both of these colleagues and am starting to really like using Clojure. It took me a long time to come around. In between opportunities to work w/ Clojure I started learning more about Lisp in general and working through books like Land of Lisp as I try really understand Lisp languages. I switched from VIM to Spacemacs to force myself to use an editor that I can only configure in a Lisp language for 2 years. (Then I broke it and had to go back to VIM) I am to the point where I feel to learn more I really need to get another job using Clojure in a Production application.

As I have been searching for the past six months, I applied to the only 2 places I saw hiring and got turned down for not enough recent experience. I has been 4 years since the last Clojure project, and then 4 before that for the first one. I am not seeing many jobs at all in the US right now for Clojure. I am getting the feeling that if I am to work in Clojure right now, even as a remote engineer, I need to uproot and move overseas to Germany or maybe the UK.

I reached out to my Clojure colleagues about this recently. To my surprise neither one of them have worked in Clojure since at least 2020. They are both super talented engineers, that both are very passionate about the language and tools. One of the published a book about the language. Neither one of them can find work in Clojure.

This is not the first time I have heard about something like this for Clojure. While I was teaching a course in San Diego in 2018, I attended a regular functional programming meetup. It was hosted by Intuit and the regular attendees were mostly back-end engineers working there. Every meeting was a problem to solve in the functional language of your choice. Most of the Intuit people would choose Clojure. One person always choose Haskell and if some of the front-end Intuit engineers showed up they choose Typescript.

Everyone would join up in random teams and take an hour to solve the problem collaboratively in their teams. It was great fun. I loved it. One of the days I got curious about all the Clojure solutions and asked if Intuit was hiring any Clojure engineers at that time. My cohort had almost completed and I was starting to look for work again. They told me, while they love Clojure, they are not allowed to use it there. The do mostly Java and some Scala but even that just turns out to be like Java, they said. So for them even though they were all impressively good at Clojure and passionate about it, it was still just a toy language.

Well if they can't find Clojure work, then what does that mean for someone like me, or better yet someone that is new coming into the language and community? It could mean that it may only ever be a toy language for a lot of engineers, something they dream of one day using in production but are not able to get the professional experience doing so.

What does that mean for the community? It could mean stagnation, shrinkage, less participation, less contribution. What do others think this could mean for the community and for new people coming into it?

There definitely seems to be a problem. Possibly even multiple issues. There have been many great points brought up in this discussion thread. I am not in any place to say what is right or wrong for a community I have barely been introduced to. I don't have the answer nor think I can solve the problem. I can only speak of my own experiences and offer what I know.

I remember when Jose Valim started Elixir, and a lot of my colleagues and I were enamored with the idea. We wanted so badly to work with it. The more it matured the more we longed for it. We kept building personal projects with it learning what we could do with the language and learning to love the Repl and the Beam VM. But we really wanted it to be more than a toy language for us.

A bunch of us became evangelists for it, pressing that we use it at our various jobs and contracts. I even read books on salesman techniques and tactics to be better poised to "sell" Elixir to every contract I picked up that just wanted another Ruby/Rails app. To some extent this seemed to work for us. Companies started to see how passionate we were and how useful and performant the language was. We started picking up steam as a community.

At that time, I don't recall any of us asking the core team to solve the problem for us. We knew that their job was to keep iterating, keep building the language, keep pushing what the language and tools could accomplish forward. Their jobs are hard. I don't envy them and am eternally grateful for all the hard work and sacrifice that made the language so awesome. We knew getting places to adopt the language and hire for Elixir was up to us in the community we were building, if we wanted it to be more than just a toy language.

I see some parallels in Elixir and Clojure and maybe one community can learn from the other.

Now don't misunderstand this, I am not saying create Rails or Phoenix for Clojure and hope that Clojure somehow has a BaseCamp/WhatsApp boom.

That is not the intent and after being part of the Rails "thing", I am wary of large frameworks causing such a bubble effect for any language. There are definitely pros and cons to this as we saw with both Ruby and Elixir.

But the people at the core of these communities may have some knowledge and advice that could be helpful. The Elixir community is full of helpful people that have a breadth of experiences, even the core team, as busy as they are, would most likely be open to offering advice to anyone that is seriously trying to grow their own community.

We are heavy on pair programming and working collaboratively, this would be like pair community building. Just ask. What's the worse thing that could happen? Someone says, "No, I am too busy to help anyone!" No one in Elixir will say that to you, I promise.

I like Clojure's approach and the ideas it is based upon. It is cool to see the evolution in the tooling over the years, and I am excited to see what the community can do next.

It just seems like Clojure needs a little help to get through this low spot. People that are passionate about Clojure need to find work in it. Period. Other people need to see how cool and powerful the language and tools are, so that they can become passionate about it, and spread that passion to even more people. Build some momentum so it does not get stuck in the mud, so to speak.

Maybe this helps, maybe not? I am just an engineer that loves solving problems and learning about new ideas, languages and tools.

Best of luck, Pickle

@teodorlu
Copy link

Man - I feel your pain.

The only response I can cough up is that getting to work with a great team is going to require a significant effort in other languages too. Good programmers often want to work with other good programmers, and I don't think there's a shortcut to mastering the craft and becoming known as someone who masters their craft.

I wish I had a better "here's how you can get started" answer, though. I've learned a lot from contributing to their people's open source projects, perhaps that's a place to start.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment