Bringing Clojure programming to Enterprise (2021)
Survey Data & Adoption
- The article’s first chart is attributed to the “State of Clojure 2020” survey; newer surveys are available but not discussed in depth.
- Several commenters emphasize Clojure’s very small market share and absence from the upper tiers of indices like TIOBE.
- Others argue those indices measure web noise more than real-world use, and claim Clojure is “reasonably popular” with steady jobs, especially in sectors like fintech and healthcare.
Perceived Strengths
- High productivity and a REPL-driven workflow are repeatedly praised; some say they miss Clojure after switching jobs.
- The ecosystem is described as “boring in a good way”: stable language, long-lived libraries, JVM maturity.
- Access to the entire Java ecosystem and strong concurrency tools (persistent data structures, core.async, atoms, STM, multimethods) are seen as major advantages.
- Running on the JVM is framed by many as a feature, not a bug: performance, portability, and huge library availability.
Criticisms & Barriers
- Common complaints: hard-to-read Lisp syntax, especially many parentheses and short variable names; dynamic typing and lack of compile-time guarantees; JVM startup/GC and deployment pain; small community and niche job market.
- Some argue Clojure has no clear “killer use case” versus newer systems languages (Rust, Go, etc.), making it a hard sell in cost-sensitive organizations.
- Others push back that every language has similar downside lists and that Clojure is already quietly successful in demanding domains.
Syntax, Macros, and DSLs
- Supporters say Lisp’s minimal syntax is easy to relearn, essentially “executable AST”; detractors experience it as a “wall of text” with low visual structure.
- Debate over whether macro-based DSLs foster powerful abstraction or invite over-engineering and opaque “mini languages.”
- Some note the community’s shift toward data-driven DSLs as a safer pattern.
REPL-Driven Development
- Multiple explanations contrast Clojure’s integrated editor+REPL workflow with “typical” Python/Ruby REPL use.
- Key points: evaluating subexpressions in-place, redefining code in a live system without restarts, preserving application state, and extremely tight feedback loops.
- Several claim this drastically changes the feel of development; others note that naive file-watching recompilation is not equivalent.
AI & Tooling
- Commenters describe using LLMs to modernize large legacy codebases and to drive Clojure REPL sessions (e.g., Neovim socket + nREPL + hot reload).
- JVM onboarding/tooling is seen as both mature (containers, standard JVM deployment) and, by critics, as adding “mid-90s release rituals” and editor/build setup friction.
Enterprise Integration
- Some see Clojure as fitting organizations that value craftsmanship over commodity developers.
- One pain point called out: lack of clear, interoperable examples for using Clojure with Spring, contrasted with Kotlin’s smoother Spring integration.