But clojure’s REPL, babashka, and clojure.spec are sorely missed.
To understand your whole program all the time at scale is probably something Rich Hickey is capable of but I definitely am not.
1. If I don’t understand what code does just delete/noop it and see what tests fail.
2. Write my assumptions into new tests to be very loud people if someone wants to break them. Easier said then done with frameworks/callback patterns that want to call my code from god knows where but really powerful when you’re pulling a value.
3. In the case of callback spooky object at a distance stuff be strict about what you accept and fail loud.
That said, I certainly agree it comes up less than it does in, say, JavaScript
It is very hard to make large programs simple, but lisps are some of the best PLs for that, especially if you stick with immutable data.