The purpose of this site is to share leading edge
techniques for data-related software development issues. Data is clearly
an important aspect of any business system, and data management is a critical
task for all organizations, so therefore data-related issues are something that
all software professionals must take into consideration.
Over the years I have written a fair amount about how to use object and
relational database technology together, and in general how application
developers and data professionals can work together effectively. At the
technical level I wrote some of the seminal work in the early to mid-90s around mapping objects to
RDBs and how to design object persistence layers for RDBs. I've also written several books that
covered critical object/data issues, including
The Object Primer
which describes how to build business applications from the point of view of a
developer and co-authored
EJB 2/e (I wrote the complex persistence material). In both of those
books I apply the Unified Modeling
Language (UML) for data modeling. I also co-wrote
Refactoring Databases: Evolutionary Database Design which addresses how DBAs can evolve database schemas just
as application developers evolve their object schemas. I've also written about cultural/organization-related as well,
in particular the articles
The Cultural Impedance Mismatch Between Data Professionals and Application Developers.
I believe that we need to find ways to work together effectively,
and that there are five fundamental tasks which IT organizations must undertake:
Adopt a new philosophical foundation. The
Agile Data Method, and the supporting agile database techniques, describe an approach that
has a chance at succeeding because it describes ways that people actually work
in practice. It’s not just a
collection of academic theories that sound great.
The heart of the Agile Data method is in its philosophies
and its roles.
philosophies sound simple yet in practice have significant implications
when you act on them: my experience is that rethinking your approach to
software development and reworking your organization's culture to succeed at
the software development game will prove to be difficult in practice.
Help both developers and data professionals need to adopt
evolutionary, if not agile, database techniques. This includes
test-driven development (TDD), and
encapsulating database access appropriately. We must all recognize we
need to become
more agile, that we can take an
to modeling and documentation, that
don't drive object models (and vice versa), that we need
new tools, and that
we should work in our our separate
sandboxes. Adopting common
core practices is also a very good idea.
Help developers learn fundamental data techniques.
to RDBs (O/R mapping), and
working with legacy data.
Developers should also understand
how to choose a primary
key strategy for a table,
relational database fundamentals,
integrity and shared business logic,
retrieve objects from an RDB,
how to implement
transaction control, and
Help data professionals to learn fundamental development
techniques. This includes learning the basics of
orientation and the
Modeling Language (UML) and how to
model using the UML.
Take an agile approach to enterprise efforts.
enterprise architecture and
enterprise administration (including operational data administration)
groups need to become more agile to succeed in modern IT environments.
It's not only possible to take an agile enterprise approach, I believe it's
preferable to traditional traditional techniques because it's more
responsive to the actual needs of your organization.
In short, this site is dedicated to sharing effective practices, not