> ...has been standard advice since decades before Clojure.
Yes, but we're in a thread dedicated to Clojure ;)
> "Macros make things horribly complicated" is nonsense, or no skilled programmer would use them.
Which is what happens, really, and when used it's in a very limited fashion. For example, for quite popular projects inside the Clojure community: Leiningen used one macro[1] and Compojure two[2].
A properly done (and properly used) macro might not make things complicated, but this leads me to the next paragraph.
> ease of debugging is an issue quite apart from anything to do with macros.
It's usually hard, but macros make it HORRIBLE since you can easily lost track of the generated code. Like if translating from Clojure to Java Stack Traces wasn't hard enough...
Whenever you use a macro, the stack traces you receive from the code using it might not like like what you expect at all. Macros are bad because they mutate your code. You usually have to expand the macro and debug there instead of just looking at your damn code.
The big problem is not macros, but code which uses macros.
[1] https://github.com/technomancy/leiningen/search?q=defmacro&r...
[2]https://github.com/weavejester/compojure/search?q=defmacro&r...