Regardless of the scope of work, we will always manage and approach the work in an Agile manner. Regardless of the agile methodology (Scrum, Scrumban, Kanban, XP), we will regularly perform pair programming, code review, and unit testing. We will also perform periodic retrospectives and knowledge sharing rituals (KSRs) to continuously improve our performance and velocity.

We believe only the rarest of scenarios would justify a Waterfall Methodology over Agile. In fact, the only two merits of Waterfall that we can appreciate are the 1) detailed record-keeping and 2) its sequential process oriented nature. However, we believe both can be resolved with agile. For example, detailed record-keeping could simply be part of the Definition of Done and part of the project artifacts archived in a wiki-based knowledge management system that is more easily indexed and searched. Sequential process modeling and identification of dependencies is already addressed in the Scaled Agile Framework (SAFe) practices.

We believe that all the phases of Waterfall, i.e., requirements, analysis, design, implementation, testing, deployment, maintenance, are ultimately covered and address in Agile. The primary difference is depth and iteration. With Agile, we believe in Just in Time (JIT) requirements, analysis, implementation, etc., and only as much as is needed to perform the work immediately ahead of us, which is theoretically the highest priorities and most valuable features, issues, or user stories of the moment.

We have found that agile allows us to focus on the most important, high priority, value-added features, fixes, and functionality while keeping a cap on costs. Our strict adherence to DevOps, automated testing, and pair programming results in high quality assurance. Our agile rituals are well-defined and the teams are mature and self-disciplined.