Many newcomers to agile software development methods are impressed, if not terrified, at the frequency of changes made to an emerging product's requirements and codebase.
Digital leaders understand that agile processes can improve adaptability and time-to-market. But, with so many changes happening so fast, how can a team possibly maintain high quality?
In this blog post, I'll describe 10 practices used in the Acquia Professional Services Delivery Methodology to overcome this challenge.
1) Clarify business goals and metrics up front.
Yes, agile does require planning. Before design or development begins, the client and Acquia team must identify the business drivers and goals for the project. The team should also agree upon metrics that will be used to evaluate these business goals. All further quality assurance and control efforts should directly relate back to these goals and metrics. Without this foundation, "quality" is meaningless jargon.
2) Draft the Drupal content model and application architecture before development begins.
Using agile methods doesn't mean that the team has to create code on day one. Tracing individual pull requests of code back to business goals and metrics is much more successful when the team can reference an intermediate step. We've found the Drupal content model and application architecture to provide the most value for this intermediate step. As development proceeds, these decisions can be adjusted, but starting with the end in mind prevents confusion and rework.
3) Start sprints with fully groomed user stories.
In a sprint-based process, the team should use the Sprint Planning ceremony to verify that for each user story planned for the sprint:
- The product owner has agreed to the acceptance criteria.
- The development team has drafted and estimated the implementation approach.
The acceptance criteria sets the quality standard for the user story and will serve as the evaluation criteria for testing the user story. Without the acceptance criteria detail finalized, the team may draft and estimate an implementation approach that solves the wrong problem.
4) Enforce coding standards in local developer environments.
Acquia teams use the open source BLT tool to enforce coding standards in developers' local environments. This practice catches small errors before they are ever submitted for integration. It also creates code consistency that leads to faster code reviews, more efficient debugging and (if applicable) easier re-usability in the Drupal community.
5) Review code, automated test, and manual testing steps before integrating.
In Acquia's Delivery Methodology, every project team includes a Drupal expert responsible for architecting the technical solution. One way they do this is with a manual review of the feature code, automated test code, and manual testing steps produced for each user story. This review happens on an isolated code branch before anything is integrated with the main codebase. In addition to ensuring that the work meets the established standards, the reviewer will consider the code's purpose, scope, implementation approach, style, security, performance, test coverage approach, configuration management, and documentation.
6) Automate code integration, testing, and deployment.
Nearly every agile practitioner will say that automation is key to success, so I'll say it too. In an agile process, automation is key to successful quality control. Modern web development requires this skill set and practice, yet many enterprise IT departments lag far behind the vanguard. Acquia teams accomplish this through tools like Acquia Cloud, BLT, and Lightning (and we'd love to help your dev teams excel at this too!).
7) Demonstrate completed user stories to the product owner.
At the heart of the agile scrum methodology is the Sprint Review ceremony, which includes a demo to the product owner. This demo should be conducted in the same hosting environment where product owner testing will occur. This ensures that any environmental issues are resolved before the demo, and don't change before product owners start testing on their own.
8) Require product owners to test individual user stories.
Most product owners will not feel comfortable approving a user story based only on the brief demonstration provided in the Sprint Review ceremony. Acquia's PS Delivery Methodology provides client product owners with several days after the sprint to review and triage the delivered product increment. This practice ensures that the product owner has sufficient time to inspect and respond to what was delivered, while the team starts developing the next sprint of user stories in parallel.
9) Conduct independent security and performance audits.
When approaching a launch, Acquia teams bring independent security and performance experts into the project to evaluate the application's fitness for the production demands it will face. Drupal includes many security and scalability features out-of-the-box, but as custom code, configuration, and content is introduced into the project, the overall application needs to be audited to ensure conformity with quality standards.
10) Follow prescribed checklists for pre-launch and launch activities.
To avoid overlooking any necessary step during an intense launch phase, Acquia teams draft in advance, and then follow strict checklists for pre-launch and launch activities. No matter how many sites our teams have launched, everyone is human and susceptible to mistakes. The process of collaboratively creating and following checklists during this critical phase protects against human error so that launch day is always a success.
In my experience working for Acquia's Professional Services, I've often heard that our clients' efforts at implementing an agile process have been more successful with Acquia than in other circumstances. I believe that quality assurance and control processes baked into the Acquia Professional Services Delivery Methodology are the basis of our agile success.