There’s a real interesting note from Campbell and Swigart lamenting the fact that, down in the coding trenches, the worlds of objects and of RDBMSes and of XML are far from unified, and that attempts in that direction have been less than enthralling. I think we just have to get used to it, and from here on in, the practice of software engineering is a three-legged discipline.
I think the triad Sean and Scott call out (objects, tables, and messages) is fundamental, and that any nontrivial modern application just has to deal with this stuff, and to the extent that it tries to avoid doing so, will be flawed.
Lots of architects have learned, painfully, that you usually can’t magick relational rows away behind object/class abstractions. The right way to think about a database is as a set of normalized tables that are designed to be addressed with SQL strings.
Similarly, we are learning that you can’t subclass away the exigencies of interchanging messages (which these days means XML) in a distributed asynchronous system.
One leg of this tripod is shorter than the others; the state of the art in messaging (the XML part of the system) is much less advanced than for O-O design or normalized data modeling. Which is why it’s a fine time to be working in the domains of messaging and markup.
But for me, this essay brought into focus the fact that anyone who isn’t comfortable with object-oriented design, and with relational data modeling, and with wrangling XML messages; anyone not comfortable with all three, I say, just isn’t fully trained.