At the next level, we can build compiler-building tools . These are called compiler compilers. A tool that builds more general tools has been called a software kit. We can also build tools that build software kits. A kit building kit .
Every problem is an instance of a class of problems .
With the right tool building tools , turning a solution to a single problem into a solution for a large set of problems is easy. Then you find that this class is itself an instance of another class of problems. And so it repeats. Code that writes code that writes code. Tools that build tools that build tools.