Move from class-centric designs to data-centric models, pure functions, and composition.
Java codebases often encode domain concepts as classes and behavior as methods. In Clojure, you typically model the same domain as plain data and behavior as functions that take and return those values.
This section covers practical refactors: extracting state from objects, replacing “method calls” with function calls, and choosing explicit boundaries for I/O. The focus is incremental change without breaking production behavior.