Learn how and when to use generative technologies.
Learn the techniques behind generative approaches. When do you need a model? How do you combine components/frameworks with code generation classes? Finally, how do you BUILD a code generator.
Understand why code generation is so important in todays J2EE or .NET environments
Learn the necessary tools: template processors, code generators, compiler-compilers, XSLT-engines
Learn to perform domain analysis and create meta-models and models.
Finally learn how to create flexible software by different means: frameworks, components, generation or mixtures of all these technologies.
It is my firm believe that people who really understand code and generation techniques will automatically realize the importance of models and meta-models. The first generative techniques we will use do not require a model. But as we go along we will experience that dreadful statement "I can't fix it - it's not in the (meta-)model!" more often.