Clojure is difficult, but worth it
I got into clojure last year after spending a few uninspiring years with python. I had programmed in C++, Go in the past and was not worried about taking up clojure.
But, it turned out, clojure is difficult. And I did not realize this in the beginning while I was doing 4clojure programming exercises etc, but when I started building a web application. This is when going deeper into the language and learning the surrounding support structure to build the application became compulsory. I had to forcefully change my mindset of getting things done to understanding how and why something is being done. It was a much slower process as compared to jumping into python or go but it made me a more aware programmer.
This process was filled with many stumbling blocks which I am going to talk about. Some of them were due to expectations arising from a previous language experience, and others were due to clojure itself. I talk about where I slipped up the most and why and identify possible weak points for people coming from other languages and how they can maneuver through them.
- Not really a problem
- Why not
- Structural editing
- Debugging when every expression is part of a chain of transformations
- ‘Print debugging’ not useful
- Tools to debug
- Not the same as in python/java/c++
- List comprehension in math
- map/reduce/filter in c++
- When to actually use clojure for
- Errors occuring on not realizing presence of lazy seqs
- REPL and how it compounds this issue
- Why is map returning a lazy seq
- Connection bw immutable data structures and lazy sequences
Lack of examples
- Some cases where I wanted examples of Clojure code and it was hard to find. t(Schema, mount etc)
- Delving into source code, experimenting etc
Interaction with db
- Only because I was coming from python/django env
- ORMs in django vs sql-builders
- Lack of seamless integration with external applications forces you to learn more about them
- You move up a level in terms of programming skills.. But this make clojure hard
Hon’ mention: Snakes vs Kebabs
Basic experience with clojure.
Currently engineer at nilenso, with a varied history hopping from robotics research at CMU, to greenhouse farming and back to reality with a tech lead role at Care24.
Mostly programmed in python/django and C++ and now clojure!