Having used OCaml as a professional but not an enthusiast (I have a clojure-depth), I am not polarized but ambivolent three months in of daily use. I enjoy the type system and life inside the bounds of a shared codebase, but I'm finding a lot of the edge-system-integration (lack of 3rd party libs) adding up. Our company (Arena) fills in many of the gaps with python due to its relevance as a data-science language and our problem space, but I still think keeping everything in a JVM single process monolith (like I have in my past) saves a lot of process-churn and overhead. Shelling out for _anything_ breaks abstraction boundaries and requires complexity around build systems, etc., and we find ourselves doing it for things like making SOAP calls, parsing XLS files, etc. All these prevent me from spending more time writing OCaml code. Things like shared infrastructure, plentiful libraries, a fast shared GC in something like the JVM or CLR (or python or JS VM) can affect productivity more than the language design itself.
Saying a language is 'better' depends on your use-cases, team-scale factors and tradeoffs. I myself can be very productive in a dynamic language, but I'm becoming convinced that a type-system can really matter in larger codebases, larger teams, or bitrot-prevention in code that is rarely touched and out of mind.
Anyway, I provide these 2-cents because I think there are few people that come to work in OCaml (or any functional language) by happen-stance and it might be valuable feedback to someone. Being really excited about a language makes it easier to gloss over shortcomings.