Sequential development activities are notorious for requiring frequent handoffs between specialists. During a sprint, frequent handoffs can cause delays and backlogs.
While there’s been much ink spilled over efforts to address and counter unwanted side-effects of such handoffs, the industry as a whole has not yet established a universal best practice. Recently, I came across an article by Mike Cohn that I think provides a really great overview of the issue and an intelligent kitchen sink approach to managing it.
Mr. Cohn begins his article by stating that one of the most effective ways to reduce handoffs is to cross-train agile development teams. Instead of having certain developers work only on design, while others handle development, and still others takes care of testing, etcetera, team members should be taught – and encouraged – to work on multiple aspects of a project.
According to Cohn, high performing teams, “have learned to do a little bit of everything all the time during a sprint, thereby eliminating large handoffs.” The article also notes the benefits of quick, small handoffs as opposed to larger ones. This, however, requires a solution that automates not only application (Java, C#, etc.) builds, testing, and releasing, but also database deployment scripts and release processes.
And while there are plenty of solutions for automating, executing, and managing builds, tests, and releases, similar offerings for the database still remain mostly unadopted.
Large handoffs can only be reduced when the same types of technologies and processes used to support application changes are also applied to the management of database changes.
Additionally, those solutions and procedures must be tightly integrated within the automation of build and release processes. This can best be accomplished with a comprehensive database change management solution.
Without database change management in place, agile development teams will waste time and effort manually creating database change scripts, thus reducing their capacity. They’ll be able to address fewer user stories in each sprint, which will hinder their ability to promote the smaller, more frequent handoffs the author is recommending.
On the other hand, a comprehensive database change management solution – one with such features and capabilities as version control, continuous integration, automation, and continuous deployment – can increase the efficiency of database development activities and minimize large, unnecessary handoffs in agile development teams.