Agile Data

The Skillset of an Agile DBA

Follow @scottwambler on Twitter!

An 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, and data 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:

  1. 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 object orientation, the Unified Modeling Language (UML), encapsulating database accessand mapping objects to RDBs (O/R mapping). Optionally, they should be prepared to data model using the UML seeing as developer tools from leading vendors such as Oracle and IBM now support UML data modeling.
  2. 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 eXtreme 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 legacy data 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 agile data modeling, database refactoring, test-driven design (TDD), and database regression testing. Agile DBAs recognize that they need to be agile, that they can take an agile approach to modeling and documentation, that data models 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 development sandboxes. Adopting common agile database core practices is also a very good idea.
  3. 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 enterprise 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.
  4. Agile DBAs need to work with enterprise architects to ensure that their work reflects the architectural vision. Similarly, agile DBAs will work with your enterprise architecture team, if one exists, to take advantage of existing infrastructure and strategies. Once again, this can also happen in an agile manner.