The true source of your problems there are mutation, which in my opinion is the primary source of issues. Immutable data structures being the most benefit.
I also believe dynamic language tooling has regressed.
I've worked with common lisp, clojure, python and javascript, and common lisp debuggers are just hands down better in everyway. Check this series for what should be a basic debugging experience by now http://malisper.me/debugging-lisp-part-1-recompilation/
I'd truthfully love to hear more about that. Care to elaborate?