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.