The reasons why modeling is doomed to failure are seemingly endless.
- The learning curve is too steep. Only someone with a Ph.D. can actually understand UML, or at least do a good job pretending.
- When I hear the word "meta model" it turns me cold; talk of "meta meta models" makes me want to cry.
- Modeling's complexity will only distract me from solving the problem at hand thereby slowing me down.
- Modeling is totally redundant. Java already has a reflective object model, so why would I need another one? Learning one general purpose programming language is more than enough of a challenge and should be more than sufficient. They're Turing complete after all, so it's provably true.
- Modeling is simply too restrictive thereby limiting my creative abilities.
- It's patently ridiculous to believe that modeling will be sufficient to generate my whole application without need for writing actual code.
- Generated code is of poor quality, performs poorly, and is difficult to understand and maintain. I can do it much better myself by hand.
- I don't like all those stupid diagrams. They just don't scale. A textual representation is far more manageable. I simply don't need a graphical rendering of my code.
- Domain specific languages will create a Tower of Babel rife with formalisms that only the original developer understands.
- XML Metadata Interchange (XMI) is unspeakably horrible. I want nothing to do with it.
- Modeling is just a ploy to ensure that I'll need to buy expensive tools. Tool vendors tend to support their tools for only a few years before changing them all around as part of some new marketing campaign, thereby risking my long term investment.
- I won't be able to do agile iterative development but rather will be stuck with an onerous formal waterfall process.
- My project isn't big enough to need all that formal modeling overhead.
- If modeling really did work well, I might as well out source my high tech job to the developing world.
I'll explain why at various conferences this fall, including MDSD and perhaps JAX and ESE. Today is the last day for ESE submissions, so don't delay!