From a reader:
I'm currently working as a software developer in Ruby but I would love to work in Clojure, though I'm still a beginner. Unfortunately, I don't think my company would switch to Clojure any time soon. And I also don't have much free time to work on Clojure. What do I have to learn to be hirable in Clojure?
This is kind of a trick question. The reason it's a trick question is technically you need zero Clojure knowledge to get a job in Clojure. I know this because I just met someone who was hired right out of a Rails internship into an existing Clojure codebase.1 He had absolutely no Clojure experience.
I talk to a lot of people who work in Clojure and are hiring for Clojure. There's two broad categories of experience requirements for those jobs.
1. They want experienced Clojure programmers.
You'll find jobs like this for a couple of reasons. Sometimes they want to replace an experienced programmer who is leaving. And sometimes they're just starting up and want to hit the ground running. I have also seen it where the CTO likes Clojure but wants someone better than them because Clojure is new ground.
For these jobs, they're really looking for someone with a solid Clojure skills. But there's a secret I'll reveal at the end of this article.
2. There is no Clojure experience required.
This category is more interesting. You'll often hear them say they're "looking for good people". They know it will be hard to find experienced Clojure programmers.
For these jobs they are willing to invest time and money making you a Clojure programmer. You will be paid to learn Clojure, often working with mentors.
Clojure experience will help, of course. I can only imagine the second type gets way more applications, so you'll want to stand out. But still, you don't need Clojure experience. Here are some things that will make you stand out. These are arranged roughly in order from the most powerful to the least.
1. Clojure experience.
"Finished"2 projects on Github.
These don't have to take long. They don't need to be complicated. Just show that you can make things happen with Clojure.
Bonus points for
- Using a database
- Hitting an external API
- Using multiple threads
- Deploying to Heroku/a server
- Writing a web app with Clojure + ClojureScript
2. Other Lisps
At the very least, this shows that you know what you're getting into. Even a college course or some completed exercises in SICP would help.
Bonus points for
- Macros
- Solving interesting problems (with code on GitHub!)
3. Other Functional Programming experience
Haskell, Erlang, Scala -- heck, even functional JavaScript or Java 8 streams will be impressive.
Bonus points for
- Knowing your 3 functional tools (map, filter, reduce)
- Using immutable data structures to model a problem
4. JVM experience
Clojure runs on the JVM, and there's just a lot of little details about how objects work, how the JVM is deployed, and all of that stuff that comes in handy when programming Clojure. It could help you stand out a little.
Bonus points for
- Deploying JVM applications
- Using JVM languages besides Java
- Programming with Java 8 streams
- Configuring the JVM
5. JavaScript experience
If you're going to use ClojureScript at this job, knowledge of the browser, the DOM API, and all of the issues with JavaScript deployment will be helpful.
Bonus points for
- Using other compile-to-js languages
- Building React applications (especialy with Redux)
- Using Immutable.js or Mori
6. Multiple languages
If you're going to be learning a new language on the job, show that you can actually do that. The best candidates will have at least 4 languages under their belts with a variety of paradigms.
Bonus points for
- Two or more paradigms (OOP, FP, procedural, logic)
- Two or more syntax families (C vs Python vs Ruby vs Haskell)
After all this, the number 1 reason people don't get hired is they don't apply to enough jobs. Get your resume together, trudge through your work/school/side project memories and find things from the list above to highlight. Then apply to lots of jobs, bring those things up in the cover letter and interview.
The little secret that I hinted at before is that even jobs that are looking for experienced Clojure programmers often will hire smart people who are excited to learn. Requirements are just a suggestion. So go apply!
Here are good sources of Clojure jobs.
The only other thing is that getting jobs is also still about who you know. There's a lot to say on that, and you've got more of an advantage than you probably know.
Top comments (3)
Awesome resource Eric.
Thanks, Ben!
Wow. Clojure is awesome. But now I'm consumed in Go and Python.