The Benefits Of Agile Database Development
Agile software development arose as a popular development methodology around 2001, but the central ideas can be traced back as far as the 1950s. The ideas behind agile development are still in use to this day, as many companies use parts of agile development to create a hybrid of traditional development and newer ideas. The “agile” label is fitting considering the tenants of the methodology, which include adaptiveness, rapid response to change, and a strong emphasis on iteration.
Agile database development follows the same basic creed of agile software development, even though the exact processes may differ. Database developers have been hesitant to accept the agile methodology due to the immutable rule of protecting data integrity and security. Databases are harder to upgrade or roll back than a website, making databases more amenable to upfront design rather than ongoing refinement. This doesn’t mean agile database development can’t work, as it certainly can, but the implementation of the new methodology must be handled with care.
Increased Communication Efficiency
Commonly, agile development results in a decrease in formal documentation. Agile development subscribes to the idea that documentation should be barely good enough so as not to create excess and ultimately unless garbage data. This does not mean that the information normally contained in documentation is lost to time, it has simply changed format. The created code itself becomes the written documentation, and instead of traditional documentation being written down, the same information is shared from person to person. Agile development also maintains that the most effective way for two people to communicate is face to face. Put another way, face to face communication is high bandwidth with the next best option being talking over the phone. Both methods are vocal communication which is better than text based communication for two key reasons.
Most people have been talking with someone over text or email and had some sort of communication issue. Text based communication omits many key factors of human communication such as tone and body language which can easily lead to miscommunication. For example, sarcasm is incredibly difficult to interpret properly over text, but is much clearer in person.
Talking face-to-face or over the phone is also much faster than text based communication. We can speak at a rate of 150-200 words per minute, which is 2-4 times faster than we can type. We can convey the same information in person far faster than we can type it. This speed is key in agile development as project requirements often change quickly. The faster team members can be brought up to speed, the faster work can begin making efficient communication essential.
Talking face-to-face is key to agile development due to frequent stand-ups and scrum, in which DBAs and developers talk about the current project’s status with potential changes. Meeting face-to-face makes it easy to identify and quickly fix the issues of the day. Constant efficient communication enables developers to take feedback and create better code in the long run.
With the agile development method you want as much time to work with developers, testers, and project managers as possible. Working with your team instead of spending time on basic tasks ultimately leads to a more stable database. To get a few extra hours out of the work day it is a good idea to automate tasks a well crafted script can handle. Automate little headache inducing tasks so you can spend more time on duties with a larger impact. Dev Nambi suggests some common tasks to automate in the book Tribal SQL, an excerpt of which can be found on Red Gate.
Refinement and Iteration Over Up Front Design
It is a common misconception that the more time we spend on a design, the more likely it is that we will get it right. This approach is called “Big Design Up Front”, where a significant amount of time is spent working on the design of a project before any work on the project begins. This approach does not always yield results as what works on paper may not work in real life.
Agile development uses an iterative development system that is similar to the survival of the fittest philosophy. Instead of pouring resources into one design over a long period of time, agile development creates many attempts and lets the best one survive through trial, error, iteration, and refinement. (or evolution as Darwin would put it.) This does not mean that design is irrelevant in agile development. Refinement still depends on a good base design that can be improved as development continues.
Agile database development can be tricky, but when done properly, the methodology can be quite effective. Core tenants like effective communication, automation, and iteration combine to make a development system that prides itself on fast initial results that will evolve and improve over time.