Qns on Developer Roadmaps + Recommended projects for learning

Hi good folks on Clojureverse,

I had two questions on my self-learning journey to ask.

  1. is there a recommended Clojure developer roadmap of sorts? Kinda like this for Golang here, but a Clojure version?

  2. Has anyone ever encountered list(s) of recommended projects that one should build in order to learn particular programming or computing concepts, in increasing complexity & dfificulty? E.g. (I’m making stuff up)
    “Make a to-do list => learn front-end UI stuff, also back-end database persistence.
    Next, make a multi-blogging platform =>…” etc.

1 Like

When I started learning Clojure, I made the decision to force myself to use Clojure for all my programming and automation tasks.

Basically a variation of the Total Immersion strategy for learning a new language.

That means:

  • If there was a common web browsing task I did, I automated it with Clojure (see etaoin).
  • For services I was using regularly (for example, I use YNAB for budgeting, Vultr for hosting, Reddit for browsing, Wordpress, Cloudflare), I checked if there was an API, and then worked out how to access the API in Clojure (see clj-http).
  • If I couldn’t find an API for a website or service I used regularly, I used etaoin and played around with it until I could get the information I wanted (for example, Amazon, my bank)
  • Anytime I would normally reach for writing a bash or python script, I rather forced myself to use the Clojure repl via a scratch.clj file.
  • Anytime I would normally reach for a calculator, I rather forced myself to use Clojure.
  • Same for Excel - if there was a task that I would normally use Excel for, and I didn’t need to share the resulting sheet, I rather did the calculation in Clojure instead
  • If there was a task I needed to do regularly for work, like generate a report, I figured out how to do that in Clojure instead

In the beginning it will slow you down, but it is an exponential process - the more you use Clojure, the more places you’ll find that you can use it.

As you build up these little functions to help you with your daily tasks, future tasks become easier. You’ll start building up your repository of functions that you can combine in different ways. And you’ll learn while working on things that are actually important to you and make you life easier.

Here are some more tips for this:

  • Set up a Clojure project (here’s how) - only do this once, and put everything you do into this project, so give it a generic name (for example, fatmonky). For example, I have namespaces like mjmeintjes.ynab, mjmeintjes.amazon, mjmeintjes.wordpress.
  • Start up the Clojure REPL when your computer starts, and always leave it running
  • Create a scratch.clj namespace - this is for experimentation and playing around. Never type directly into the REPL, write in the scratch namespace instead.
  • When you run into a barrier, or you don’t know where to start for a specific task, then use books or ask here on Clojureverse. That way you are getting specific advice.