These days implementing code generators has become quite easy.
However, building professional tools supporting you in
- navigating back and forth between the sources and the generated text,
- running and debugging the source models instead of the generated artifacts, and
- transferring changes in the text back to the sources
is a much more challenging task, but also an interesting one.