At Appnovation we work with clients using both Waterfall and Agile methodologies, which presents unique challenges when using Drupal as the chosen web technology. Ok, ok you got me... Agile isn’t a methodology, it’s a concept or philosophy. In which case we use Scrum or Kanban as methodologies when working in Agile. But the interesting thing about Drupal development is that it lends itself quite well to a hybrid framework - a merging of both Waterfall and Agile practices.
I’ll apologize right now that I’m not going to be explaining Waterfall or Agile in any detail in this article - for this Wikipedia is your best friend (and Google of course). Instead I’m going to jump right in and discuss where each practice can most effectively be employed during the development lifecycle on a Drupal development project.
The following points are based on a lifecycle that progresses along the following path:
- Information Discovery
- Functional Analysis & Information Architecture
- Content Creation (i.e. adding content to the site)
- Quality Assurance
|Project Stage||Information Discovery|
|Drupal tasks using Waterfall||Documenting the project plan, business requirements, timeline, risk analysis, scope definition.|
|Drupal tasks using Agile||Brainstorming, high-level requirements (i.e. vision, mission statement), elevator pitch, product box, affinity diagramming.|
|Project Stage||Functional Analysis & Information Architecture|
|Drupal tasks using Waterfall||Documenting the functional, non-functional (quality of service), and user requirements.|
|Drupal tasks using Agile||Wireframes, paper prototypes, site map.|
|Drupal tasks using Waterfall||Umm. Probably best to avoid Waterfall during design - it’s too subjective.|
|Drupal tasks using Agile||Creating design layouts and visual mockups.|
|Drupal tasks using Waterfall||Building the initial architecture and infrastructure. Maybe some of the groundwork for the high-level functional requirements.|
|Drupal tasks using Agile||Building out all of the site features, modules, functionality.|
|Project Stage||Content Creation|
|Drupal tasks using Waterfall||Deciding at a high level what kind of content is going to be added to the site.|
|Drupal tasks using Agile||Adding the actual content during sprints as features are developed.|
|Project Stage||Quality Assurance|
|Drupal tasks using Waterfall||Matching finished site or site components with the functional requirements and overarching architecture. Regression testing.|
|Drupal tasks using Agile||Each story should go through its own set of QA tests to satisfy the Definition of Done before being accepted.|
|Drupal tasks using Waterfall||Checklist for launch.|
|Drupal tasks using Agile||Not as effective.|
|Drupal tasks using Waterfall||No preference.|
|Drupal tasks using Agile||No preference.|
In general, if the project is on a fixed time and budget, then you are better off being more Waterfall. If the project has a fair amount of uncertainty and the end goal isn’t clear at the start, Agile can often help you get to a better result. Agile is better at dealing with changing requirements and adding features later on in the process. Having said that, however, you still need to be careful. A changed requirement that involves changing a Content Type that has a trickle down effect on the entire site architecture can be a huge headache.
Of course, the type of methodology you adopt may depend significantly on your client. Some clients may request Agile without really understanding what Scrum or Kanban really are. In this case a so-called “Agile-fall” or “Scrum-fall” methodology might be appropriate. The Project Manager can lay out the project plan in a Waterfall type strategy, but manage the team with user stories (along with story points, velocity, sprints, etc.).
Hopefully this article gives you some insight and recommendations for helping your next Drupal project be the best one yet! Happy Drupalling.