I was at JavaOne last night to talk with some folks at Compuware about OptimalJ. They want me to write an article about OptimalJ ahead of their release on July 21st. It will be a tough slog if I decide to do it because of the time constraints around the book release.
Anyway, after the meeting I went to their panel/dinner event where they brought up four experts on MDA and J2EE. One from Compuware, one MDA author, on J2EE author, and a writer from The Server Side. Plus one guy from Giga who acted as the moderator.
It was pretty tame. The moderator pitched softballs for 45 minutes while we ate a really nice dinner. The answers were fairly stock but there were some amusing gaffs when softballs were thrown and completely missed.
When the conversation was handed over to the audience the questions got a little more heated. I asked 'What about existing code and MDA'. The MDA author then went onto talk about how generation is great for creating adapater layers between old and new code. The J2EE guy then came in and said that the MDA guy had missed my point, which he had. After which the Compuware guy said that the only real solution was to have a process read the existing code base, convert it into UML and then generate from there. I don't think that is particularly realistic.
I came away from the meeting concerned that MDA was the only type of generation that people had heard about. Think about when you talk about a new feature in an engineering meeting. Sometime a feature that starts small gets ideas thrown in until it's either never started, or never completely implemented. At which point the people involved blame the feature, when they should blame themselves for featuritis.
I think the same thing may happen with MDA. You start with this small idea, "make programming less repetitive", with small applications that you can write in a couple of hours. But then you think about the more grand issues, "what if we could generate this over here as well" or "why generate 80% when you could generate 100% if you added this, that and the other thing".
What I really want is for people to understand that there is a range of code generation solutions. It's not just MDA. If MDA doesn't work for you there may be smaller tools that do.