I love playing with and working on projects that transform code into different code and I love that you're drawn to meta-programming, but I have a few issues with a few of the ideas:
> If it's boring, then something is done wrong.
I have a problem with the tone of this statement, because I've seen it taken to an extreme and it can be a dangerous idea.
A better way of looking at it is: If something is boring, take it as a sign there might be an opportunity to improve the process, but you have to be acutely aware the problems that automation can introduce.
There's a phenomenon I like to call premature automation. When you work on a problem the boring way long enough, your brain learns the patterns. Premature automation happens when you skip learning about or experiencing the process and you shoot straight to automation. Often what happens is the automation fails to anticipate important edge cases.
> You can always automate the boring parts, and thinking about automation is less boring.
Thinking about automation is less boring because it's not trivial. Automation can be trivial if you're doing simple things like code generation, but often these simple things come at a cost. For example, code generation typically becomes more complex as the need for customizations and exceptions popup.
Libraries can automate things at runtime, but writing good libraries based on timeless/minimally leaky ideas takes time. Leaky libraries built on a poor foundation tends to introduce bugs or complexity. There is value in boring, predictable code with minimal dependencies. It's easier to audit and review with static analysis tools, it's harder to introduce cascading bugs and it.
TLDR: I'm all for automation, but saying "If it's boring, something is done wrong" and "you can always automate the boring parts" sounds like a cocktail of developer shaming for not doing something that's "simple".