agile DBA is anyone who is actively involved with the creation and
evolution of the data aspects of one or more applications.
Agile DBAs need skills in "traditional" tasks such as database programming, database administration, data testing,
modeling. Furthermore, agile DBAs must have at least a basic understanding
of all aspects of the software process (in other words they should be
generalizing specialists), they must have
evolutionary development skills, and they must have the "soft"
skills which enables them to collaborate effective with others.
To understand the skill set that an agile DBA requires, let's consider what
they do in practice:
- Agile DBAs work very closely with application developers to
implement and support data-oriented development efforts. Agile DBAs can often be responsible for several data sources (e.g.
databases, files, XML structures, and so on) or at least be co-responsible
for them, working with one or more development teams simultaneously.
To interact effectively with developers, agile DBAs need to learn fundamental development
techniques, including the basics of
Modeling Language (UML),
encapsulating database accessand
to RDBs (O/R mapping). Optionally, they should be prepared to
model using the UML seeing as developer tools from leading vendors such
as Oracle and IBM now support UML data modeling.
- Agile DBAs must work in an evolutionary, if not agile, manner just as application developers do.
The biggest potential change for Agile DBAs is that they will need
to work in an iterative and incremental manner for with many project teams.
Modern development processes, such as the
Unified Process or
Programming (XP), don’t provide detailed requirements up front nor do they
focus on detailed models (and certainly not detailed
data models up front).
They will do some
initial requirements and
architecture envisioning and then evolve their models over time to reflect their changing
understanding of the problem domain as well as the
changing requirements of
their stakeholders. Some project teams may choose to work in a more serial
manner, they may even choose to produce a detailed conceptual data model early
in their lifecycle, but those teams will be few and far between although you
will be expected to support them too.
Agile DBAs will need to communicate the constraints imposed by
sources, working with application developers to understand those constraints and
work appropriately. Both developers and data professionals need to adopt
evolutionary, if not agile, database techniques. This includes
design (TDD), and
Agile DBAs recognize that they
need to be agile, that
they can take an
to modeling and documentation, that
don't drive object models (and vice versa), that they need
new tools (because
their existing tools reflect the serial mindset of yesteryear), and that
agile developers prefer to work in their own separate
sandboxes. Adopting common
best practices is also a very good idea.
- Agile DBAs need to work with enterprise administrators to take
advantage of and to help evolve corporate meta data, standards, and
guidelines. Agile DBAs will interact with
administrators, in particular operational data administrators, to help
the team produce work which reflects your organizations overall strategy.
They will also want to take advantage of any
Master Data Management (MDM) efforts that are currently in
place, if any. There is no reason, other than political, why this
cannot happen in an agile manner.
- Agile DBAs need to work with enterprise architects to ensure that their
work reflects the architectural vision. Similarly, agile DBAs will
work with your
architecture team, if one exists, to take advantage of existing
infrastructure and strategies. Once again, this can also happen in an