I recently came across a fantastic column by editor-in-chief of Dr. Dobbs, Andrew Binstock, detailing his belief that Continuous Delivery is the new Agile.
Binstock recounts how 13 years after the Agile manifesto was written, its practices have become so common that many can’t fathom how software was developed before Agile.
Extending Agile
Because of the constant need for software updates brought on by changing customer requirements, Agile is no longer enough. Instead, it has become necessary to practice “Agile Continuous Delivery”. Binstock argues this does not discard Agile but rather extends it, with some Continuous Delivery organizations pushing more than ten updates per day. “Agile on steroids”, as he put it.
To hear Binstock tell it:
“What is clear is that software development during the last two to three years has changed rather significantly from what it was during the first decade of this century… To adapt to the demands of today, however, Agile must evolve.”
He goes on to explain that such an evolution requires a more deliberate embrace of Continuous Delivery as an operating model and the concerted propogation of its principle.
Don’t Let the Database Lag Behind
I couldn’t agree more. I’d only add that special attention be paid to aspects of IT that evolution sometimes ignores.
Consider the database, for example: while Continuous Delivery rapidly expands, the database lags slightly behind because of a mistrust in automating the database. If the code is on steroids but the database is limping behind, it can cause major delays.
As research analyst Tim O’Brian once said:
“Most big companies are still managing their databases like it’s 1998. It’s an integration nightmare. A recent example I came across was with a fortune 500 re-launch. It was a two year migration project with 15,00 programmers and $100m plus cost. After two years the code was on demand and Agile but the data in the database was still the source of significant delays, manual builds and an intense amount of cost override.”
The database creates a real challenge for automation, which is why smart organizations employ continuous processes. Writing database object change scripts into traditional version control solutions, or using “compare & sync” tools can be plain risky from an automation perspective, as the two concepts are unaware of each other. A better solution is needed, one that promotes Continuous Delivery and DevOps for the database.
How “Agile Continuous” Delivery Helps
Agile Continuous Delivery should follow the proven best practices of change management, enforcing a single change process over the database, and enabling efficient resolution of deployment conflicts. Consequently, it can serve to prevent and eliminate the risk of code overrides, cross updates and merges of code, while plugging into the rest of the release process.