Well "compiler" in this case is really "high-level code generator" instead of "low-level code generator". So yeah.
I've worked on compilers for a long time and the AST generation is typically the easiest part.
Optimizations, and different target backends are easily an order of magnitude harder.
That's why every new language typically begins as a simple AST tree walker, that's the easy part.
They can they "graduate" to byte codes and then to asm generation if appropriate.
AST generation is usually simple. It's the conversion to the other language that usually get's difficult.
Also, targeting different backends is drudgery but I never thought of it as being hard.
Ah, ok. In that case, I'd agree.