So I worked exclusively in the statically typed (and imperative &#x2F; OO) world for the first 10 years of my professional career.  Several years ago I decided to learn functional programming.  I started with Scheme and moved to Clojure.  I really enjoy Clojure; it&#x27;s a real joy coding in it using Emacs with paredit (or smartparens).<p>I wrote a REST API using Clojure; the code also has to interact with a Postgres database.  This is for a side project, but it&#x27;s not a trivial code base.  I definitely miss Java&#x2F;Eclipse style refactoring (right-click, rename, and EVERYTHING is properly updated).  Can&#x27;t do that in Clojure.  Also, I find that I have to write more unit tests with Clojure in order to make up for the fact the compiler can&#x27;t help me.  Not that I wouldn&#x27;t write tests in Java; but I find I have to write <i>more</i> in Clojure to keep the codebase manageable.<p>So again, for me, I use unit testing to make up for the fact I don&#x27;t have the compiler helping me as much.