I’ve never been one for model, tool, or drag-and-drop based development. Oracle development, at least as presented to us and as illustrated in the hands-on-lab (where we actually coded up EJBs and Web Services) is all three of those to the extreme. I call it ‘Right-click Coding,’ because you’re always right clicking on things to configure different wizards and properties instead of writing the code.
Unfortunately Right-Click coding does make great demos, though things like Rails are making in-roads there with command line driven demos. I despise these demos since they’re typically shown by sales engineers who never have to maintain these quick demo solutions. There’s a lot of hand waving about how you have this fully implemented domain model that allows you to just hook together all these loosely coupled services even though you’d actually have to write all those nice services in the real world.
The worst part is that they’ve invited a few business folks, who now thing all the coding is the easy part. Luckily a lot of sales engineers push inane ideas to the hilt and say the magic words, “Oh, with tool X you can just have your business analysts draw out the process.” I do a bit of cheering at this point, because those same business analysts have heard this line before. They’ve tried to use these right-click modeling tools before and they just don’t behave like Excel or Visio. Usability appears to be a very low concern for these tools which often assume you’re a developer who’s spent years in various difficult IDEs. And that’s the point business analysts get completely, “Heh, this stuff is for programmers.”
And then then there’s the other down side of relying on a tool to just generate everything:
Of course, I’m not sure how well things will go when you start having to debug and track down problems. I’m not sure there was a right-click option for ‘Fix all broken things.’
My favorite question to ask the vendor at this point is a pretty simple one,
So how do I test this?
Oh, well you can load test it for performance with something like Mercury’s LoadRunner product.
No, how do I unit test the code?
Well, your QA department can will fully test the code with a set of test cases.
But, how would I write a unit test for this?
Hmm, well the web service we just created has a client code and a simple HTML test page that you can use to test the web service.
OK, but that’s a manual integration test that tests the whole service at once, how would I just write an automated unit test.
Well, let me get back to you on that I know there’s a feature we have to cover that I just haven’t used it.