My Clojure Learning Journey — Part 1

Object-Oriented Programming to Functional Programming, Journey of a Back-end Developer

May 6th, 2021, I received an email with an appointment letter from HR of Helpshift. I was very excited as I was going to be part of the development team that works on a new language for me. That’s the moment my journey of learning Clojure started.
Initially, I was looking for tutorials on YouTube, but couldn’t find much-related tutorials. One of my colleagues suggested to me a book, Clojure for Brave and True. Its simple wording and example-oriented teaching gave me a smooth learning experience (I am still learning, though).
I came from an Object-oriented background, I worked on C++, Java in my past company and in my college projects. So, it was (and it is) a new learning for me, and I was enjoying it.
What the majority of us do is we try to compare new things we learn with the things we know already, and with help of that, we try to understand new things. In case of Clojure, I found it a bit difficult to compare concepts. Concepts I knew about Object-oriented Programming with the new concepts of Functional programming. To resolve such cases, we should follow one way and that makes the brain empty from whatever you know and learn it from scratch as you are a “noob” to it.
So, here is the path that I have followed while learning Clojure :
- Made the brain empty as if I don’t know any programming language (so that comparisons won’t take place).
- Started reading Clojure for Brave and True just as a storybook initially. (So when you will start getting the things, you will automatically start playing with Clojure code.).
- Learned basics of the language like data structures, playing with loops, map, reduce, basics of functions, anonymous functions taking input from users, printing things on standard outputs, and how to create Clojure Project.
- After these learnings, I learned to play with REPL. This is a big hack, and you can do a hell of many things related to your project using REPL. For ex: if you make changes in any file and want to test the changes, then just load the required file in the REPL, switch to that namespace and the world 🌍 is yours. The BIG thing is you can play with live production 🔥 thanks to REPL. Yes, I came from Java background, so it's BIG for me, I used to restart server even after adding a comma(,) or semicolon ( ; ) ⏳ .
- Once I got the confidence about the basic things, I thought I should test my knowledge on the things that I learned. So, I started solving the Clojure problems on 4Clojure which took me to the flashback of college days when I used to solve programming problems on Hackerrank.
- Post that, I started getting feature development tasks at Helpshift, and it made my Clojure knowledge sword sharper (thanks to my manager for believing in me 🙂).
And this exciting journey continues…
I will post detailed blogs of this step-by-step learning so that newbies and beginners get the benefit of it. Also, we’ll continue the series of blogposts with Clojure related stuff, so stay tuned for more exciting technical content 🥳
My Clojure Learning Journey — Part 1 was originally published in helpshift-engineering on Medium, where people are continuing the conversation by highlighting and responding to this story.