![]() |
The Vision of the Agile Data MethodAgileData.org: Techniques for Disciplined Agile Database Development |
![]() |
So how do you know you’ve got a problem? Enterprise data professionals, including both data
architects
and data administrators, will be frustrated by the fact that project developers
on project teams ignore their advice, standards, guidelines, and enterprise
models. Worse yet the developers
often don’t even know about these people and things in the first place.
Developers will be frustrated by what they perceive (often rightfully so)
to be the glacial pace of enterprise data professionals to make or authorize
seemingly simple changes.
Database administrators (DBAs) often find themselves
stuck in the middle of these two warring factions, trying to get their work done
while struggling to keep the peace. If
one or more of these problems is common within your organization you’ve got a
problem.
The goal of the Agile Data (AD) methodology is to define
strategies that IT professionals can apply in a wide variety of situations to
work together effectively on the data aspects of software systems.
This isn’t to say that AD is a “one size fits all” methodology.
Instead, consider AD as a collection of philosophies that will enable IT
professionals within your organization to work together effectively when it
comes to the data aspects of software-based systems.
Yes, this site also presents proven techniques that IT professionals can
apply on the job, but the heart of AD is its underlying philosophies.
To understand why your organization should adopt the AD method you need
to consider the following topics:
The relationship between data professionals and developers is often less than ideal within many organizations. Yes, there are some organizations where these two communities work together quite well but there are always tensions – when a healthy tension exists between groups your organization can benefit, unfortunately these differences often lead to conflicts that aren’t healthy. Your organization may not experience every single problem listed below although it likely suffers from a subset. The challenges that data professionals and developers must overcome can include:
|
It is very easy for organizations to deny that they have a problem. It can be very difficult for senior management to detect problems until it’s too late because the “bad news” that they need to hear is filtered out long before it gets to them. It can be difficult for people elsewhere in the organization to detect problems, perhaps everything is going quite well in their opinion – unfortunately the value system that they’re using to judge the situation isn’t ideal, making them blind to the problems that they are causing. The following is a list of potential symptoms, each of which may indicate that your organization has one or more challenges that the Agile Data method may help you to address:
People are significantly frustrated with the efforts, or lack thereof, of one or more groups.
Software is not being developed, or if it is it is taking much too long.
Finger pointing occurs, “the data administrators are holding up progress” or “the developers aren’t following corporate guidelines” are common complaints. Worse yet, the finger pointer doesn’t perceive that they are also part of the problem.
Political issues are given higher priority than working together to development, maintain, and support software-based systems.
Ongoing feuds exist between people/groups. Phrases like “you always” and “you never” are very good clues that feuds exist.
Well-known problems within your organization are not being addressed. Furthermore, suggestions for improvements appear to be ignored, nothing happens and no reason for rejection is provided.
People are working excessively long hours with little or no reward.
Decisions affecting teams, in particular project teams, are made in an apparently arbitrary and arrogant fashion.
We need to find a way to work together effectively. There are clear differences between the data and development communities, and between the project and enterprise communities. The fact that we’re talking about different communities is also part of the problem, arguably one of the roots causes. You have a fundamental decision to make: Should you use these differences as an excuse to exacerbate existing problems within your organization or should you revel in these differences and find a way to take advantage of them? I prefer the latter. My experience is that the values and principles of the agile movement form the basis for an effective approach to working together.
To address the challenges faced by software developers an initial group of 17 methodologists formed the Agile Software Development Alliance (www.agilealliance.com), often referred to simply as the Agile Alliance, in February of 2001. An interesting thing about this group is that they all came from different backgrounds, yet were able to come to an agreement on issues that methodologists typically don’t agree upon. This group of people defined a manifesto for encouraging better ways of developing software, and then based on that manifesto formulated a collection of principles which defines the criteria for agile software development processes such as Agile Modeling.
The manifesto is defined by four simple value statements – the important thing to understand is that while you should value the concepts on the right hand side you should value the things on the left hand side (presented in red) even more. A good way to think about the manifesto is that it defines preferences, not alternatives, encouraging a focus on certain areas but not eliminating others. The Agile Alliance values:
Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.
The interesting thing about these value statements is there are something that almost everyone will instantly agree to, yet will rarely adhere to in practice. Senior management will always claim that its employees are the most important aspect of your organization, yet insist they follow ISO-9000 compliant processes and treat their staff as replaceable assets. Even worse, management often refuses to provide sufficient resources to comply to the processes that they insist project teams follow. Everyone will readily agree that the creation of software is the fundamental goal of software development, yet insist on spending months producing documentation describing what the software is and how it is going to be built instead of simply rolling up their sleeves and building it. You get the idea – people say one thing and do another. This has to stop now. Agile developers do what they say and say what they do.
To help people to gain a better understanding of what agile software development is all about, the members of the Agile Alliance refined the philosophies captured in their manifesto into a collection of twelve principles. Agile software development methodologies, such as Agile Modeling (AM) and the Agile Unified Process (AUP), should conform to. These principles are:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter time scale.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good design enhances agility.
Simplicity – the art of maximizing the amount of work not done – is essential.
The best architectures, requirements, and designs emerge from self-organizing teams.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Stop for a moment and think about these principles. Is this the way that your software projects actually work? Is this the way that you think projects should work? Re-read the principles once again. Are they radical and impossible goals as some people would claim, are they meaningless motherhood and apple pie statements, or are they simply common sense? My belief is that these principles form a foundation of common sense upon which you can base successful software development efforts. A foundation that can be used to direct the data-oriented efforts of IT professionals.
For a detailed explanation of the values and principles of the agile movement, you may find Examining the Agile Manifesto of interest.
|
The Agile Data method is defined by its six philosophies: |
![]() |
An interesting observation is that most of these philosophies aren’t specific to data, instead they are applicable to information technology efforts in general. As the first principle implies you need to look at the overall picture and not just data, therefore data-specific principles very likely won’t serve you very well. Heresy? No, just common sense.
The Agile Data method defines four roles – Application Developer, Agile DBA, Enterprise Administrator, and Enterprise Architect – that IT professionals will fulfill. These roles, and how they work together, are discussed in greater detail in The Roles of Agile Data. Table 1 summarizes the implications of the Agile Data method for IT professionals, implications that are also covered in The Roles of Agile Data.
Table 1. Implications for IT professionals.
|
Role |
Implications |
| Everyone |
|
|
Application
Developers |
|
|
Agile DBAs |
|
|
Enterprise
Administrators |
|
|
Enterprise
Architects |
|
An important question to ask is whether the philosophies and
suggested cultural changes address the problems that organizations face when it
comes to the data aspects of software development. Table 2 shows that this in fact is the
case, listing the potential problems and the solution suggested by the Agile
Data method.
Table 2. How the individual problems are
addressed.
|
Problem |
Solution |
|
Different visions and priorities |
Agile Data implores IT professionals to work together, to
understand and respect the viewpoints of your co-workers. |
|
Over specialization of roles |
Agile Data asks IT professionals to find the “sweet
spot” between the extremes of being a generalist and being a specialist
by becoming someone who is a generalist with one or more specialties. |
|
Process impedance mismatch |
Agile Data implores enterprise and data professionals to be
prepared to work following an incremental and iterative approach, the norm
for most modern development and the defacto standard for agile software
development. It also implores application developers to recognize
that the existing environment, and future vision for the organization,
places constraints on their efforts. |
|
Technology impedance mismatch |
Agile Data requires that IT professionals work together
closely, learning from each other as they do so. Agile DBAs
have the skills to map the application schema to the data schema, to write
data-oriented code, and to performance tune their work.
|
|
Ossified management |
Agile Data asks enterprise architects to work with senior
management and educate them in the realities of modern software
development. Similarly application developers should work with and
help to educate both line and middle management. |
|
Organizational challenges |
Agile Data implores IT professionals to work with one
another and with your project stakeholders, to respect them and to
actively strive to work together effectively. |
|
Poor documentation |
Agile Data directs IT professionals to follow the principles
of Agile
Documentation. |
|
Ineffective architectural efforts |
Agile Data advises enterprise architects to take a
multi-view/model approach to architecture and to actively work on project
team to support and prove their architecture. The feedback from
these efforts should then be reflected in future iterations of the
architecture. |
|
Ineffective development guidelines |
Agile Data implores enterprise administrators to write
clear, effective, and applicable standards and guidelines and to be
prepared to act on feedback from the development teams. |
|
Ineffective modeling efforts |
Agile Data directs IT professionals to follow the principles
and practices of the Agile Modeling methodology. |
|
We actively work with clients around the world to improve their information technology (IT) practices, typically in the role of mentor/coach, team lead, or trainer. A full description of what we do, and how to contact us, can be found at Scott W. Ambler + Associates.
Copyright ©
2002-2012 Scott W. Ambler This site owned by Ambysoft Inc.