My Path to Learn Clojure

I’ve been in this software game for over a decade now, and yep, still learning. Admittedly I haven’t had to put too much effort into learning new things as the years go on, but I decided to challenge myself by learning something where I have few previous patterns to leverage. I’m going to try and learn Clojure, which is a LISP, and breaks from most things I’m comfortable with.

The Approach

It’d be easy for me to start googling tutorials and videos and get lost in countless ones, but instead, I’m going to do something a little different.

I’m going to build a small project. My favorite is a vending machine.

So as I attempt to build the code for this vending machine, my learning with become targeted to solving a problem right in front of me as well as I’ll have practical experience.

My Tools

Eventually, I’ll expand my toolset, but I take these things one step at a time. I don’t want to learn too many things at once. So to begin with I’ll play around on repl.it, and as I get comfortable with that, I’ll move to a proper editor.

I also wound up with a book called Clojure for the Brave and True. I’ll see how far I get with that as well.

That’s it. I’ve not looked up other resources or downloaded anything.

Progress So Far

For the most part, I’ve played around with some basics in Clojure and got through many of the basic constructs. There are still unintuitive things to me like or and and, but as I use it I’m sure it’ll make sense.

Now I want to get more practical, so I will begin to build basic pieces of a vending machine to put the little I’ve learned into practice.

One thing I’ll have to bite off at some point are tests. I’m an advocate of TDD, and I learn things the best when I have rapid feedback. TDD does those things wonderfully, so pretty soon, I’ll incorporate that as well.

Hopes

I can only spend a little time each day learning Clojure, so I have to temper my expectations on how far I can get. My hope though, is that within a week or two, with around 30 minutes of time each day, I’ll have my vending machine, automated tests, and a working development environment.

We’ll see how it goes!