I’ve been working on a large project for the past several months; our customer has purchased an application that they are customizing for their environment. The vendor has chosen to work in a waterfall manner…gather all of the requirements first, review then freeze the requirements once approved, and then they will move on to design/development, essentially the rest of the project.
The software is a large enterprise application, with lots of various modules. A few modules are being implemented as is, some are being modified slightly, others being modified more extensively, and there are a few modules that are being built specifically for our customer. With all of the various modules and the interactions between the modules, we have been working on gathering requirements now for about nine months.
Since we are working in a waterfall fashion, we are attempting to gather all requirements and freeze them as we exit the requirements phase. Once we exit this phase, any changes to the requirements will be handled through change requests which must be approved by the PMO, and if there is a large cost to the change order, the executive management team will have to approve the change order as well.
So the challenge we are facing is the attempt to get to the point of freezing the requirements. With such a large software application and with the number of modules, many that interact with each other, it has proven to be difficult to finalize one set of requirements without impacting another area. And of course, the further we get into the project and with better understanding of what the software application can do as-is, this also changes the requirements. Additionally, as the vendor starts to estimate what the new requirements will cost to implement, negotiations are in play to narrow the scope of the project…which changes the requirements.
We are five months behind the original schedule, and have just received another extension for the requirements phase. The current plan puts the requirements phase lasting 12 months. While I do not know how much money has been spent to date on this project, I’m sure the number is at least 7 figures. And as of yet, not a line of code has been written.
This is where I miss Agile. My experience is in Scrum, having attended several training courses, reading several books and working on Scrum projects for several years. An Agile methodology recognizes that things change in a project, and allows for that. It would also recognize that we do not know everything at the beginning of a project, and will continue to learn as the project progresses. If we were working in an Agile fashion, we would have some working code at this point in time. We could have taken the requirements that we knew were good and less likely to change, and start to implement them. While the development team would be working on those requirements, BAs such as myself could be working with the business to work through the details of the more complex aspects of their requirements. As those aspects were figured out, they could be added to the project backlog, the entire backlog reprioritized, and development could continue on, creating working code, while we figure out the next aspect of the project.
If we were working in an Agile environment, as we learned more about the software and the requirements, we could change the requirements in the project backlog to reflect that learning. We could reprioritize easily as management changed their minds about what they wanted. We could take advantage of new releases of the software, utilizing new functionality that has been recently added.
If we were working in an Agile environment, as we saw working code coming out of development, we could provide feedback to what development had created. We could tell them they were on the right track…or not…and made necessary corrections. We could have had the testing team involved with us now, understanding the requirements at the same time development understands them, and they could be working on their test plans and test cases. If only…
But we are not working in an Agile environment. So instead we have been working to define and refine the requirements for nine months. We have another three months to go before we exit the requirements phase. It will be several months after that before we start to see working code…and we can only hope that code will meet expectations. We can only hope that the priorities of the business will not change. We can only hope that the test team can catch up and be ready when code is delivered. We can only hope that executive management continues to be patient, and continues to allocate more budget dollars.
We can only hope….oh, how I miss Agile!