It has been a little over a year working with Clojure; I have had a lot of help from the Clojure community along the way; and despite not having a lot of production Clojure code to show for my efforts, I feel my progress has been good; the year about what I expected. What I did not expect, however, was the teachings of the Clojure luminaries have come true. Learning Clojure has altered my thinking patterns and for the better.
As I return to upgrade an Automatic Meter Reading (AMR) water system written two years ago and primarily in Python, I’m beginning to write new code the way I write Clojure code, bottom up, looking at specific functions first, and then weaving those functions together in higher order logic.
It is not practical and absolutely not necessary to re-write a stable Python/Django front-end system in Clojure, but already, I am looking for modules that would support intra-process communications between programs written in each language. I see the benefit of writing more of the sophisticated water use reports at least using Clojure’s functional influence, if not fully writing the reports in Clojure itself.
I’m glad I know Python. I can get something up and running that I can understand two years later, and sustain it without blowing up a system that runs 24×7. But, if I never write another Clojure program, which is unlikely, I’ll certainly be altered by Clojure’s influence permanently.