Fact checking of an Agile development exercise
Hi folks,
A short one, for the sake of keeping my weblog updated.
Recently I have been working with a development team on various sub-projects of a bigger project. The development of some other modules was finished and the new features were being introduced in form of new sub-projects. The team was eager to adopt Agile development. So we decided to do so in one of those sub-projects in order to get them familiar with the concept and hopefully apply it to all the future development projects.
I’ll briefly elaborate the conditions in which those sub-projects have been developed and their outcomes and leave the judgment to you.
Project A:
- Scope is small.
- Requirements are captured in form detail writing; provided by the Product Management team. (Took them one week to finish). This was the usual practice in the entire company. That is, no development starts without a written spec.
- The development team goes through the document (which is at least 50 pages) to find out the areas that are not very clear and clarify them with the PM team. They also estimate the development time for the features requested in the sub-project and negotiate the features with the stakeholders. (They use a lot of buffer in their estimates to mitigate risks)
- The development team shares the requirement with the Q.A team and starts development and releases the developed and unit-tested code to the Q.A team whenever a major feature is developed (iteratively) until the sub-project is finished. No change request is accepted when the development is ongoing.
- Scope is small.
- Requirements are captured in form of Sketches and Models. (It was ready in three days). The development team and Q.A team had a couple of short meetings with the Product Management team after that, to make sure they understand the models and the priority of the features. They started then designing the overall architecture with the help of Architecture team, finding the reusable components and developing the required base code while the Product Management was working on the detail of some of the high priority features. Q.A team develops test plan and required test cases. These three teams were constantly updating each other during this process.
- PM quickly evaluates the startup development process and the built prototype and come up with a list of change requests. In the meantime, Dev and Q.A teams studies the detail model of the high priority features along with the high level model of the requirements both provided by the PM team to come up with estimates for high priority features and the whole sub-project.
- Teams discuss the changes, the detail model and the estimates.
- Dev team continues development to solidify the architecture and frequently releases the developed and unit-tested code to the Q.A team to integrate and test. When all the bugs are resolved for each build, it will be released to the PM team for evaluation and assessment.
- PM can ask for change before the architecture is frozen which usually happens after the second release. In contrast, the Dev team has the opportunity to negotiate features if any of the early requested changes is beyond the scope and affect the development time or resources.
- Some features could not make it to the deadline and some were not accepted by the PM as they were misunderstood by the Dev team.
- Estimates were ready earlier and more accurate too as they were provided based on the actual development work that the Dev team has done.
- More angles of requirements were clear to Dev and PM teams because of the presence of the Q.A team in all the discussions from the beginning. Amazingly in some cases Q.A team members knew more about requirements than even PM team and that’s because they have been testing the previous sub projects and are more familiar requirements. Besides, they always ask the best questions about requirements and I believe that’s because they think about test cases and scenarios in advance and they need to find out all the possible ways to test the application.
- PM team was very happy about the outcome of the project as all the important and high priority features that could finish in the given time and were agreed upon, were present and entirely tested. They were also happy about the fact that they could start adoption of new features between their customers earlier.
- Pure modeling and sketching is not always a suitable way of requirement gathering. If you have distributed teams, challenging stakeholders or very complex requirements then you might want to spend a bit more time digging and documenting.
- If you are using TDD (Test Driven Development), it doesn’t mean that you don’t need the Q.A team or downstream black box testing; no matter how much developers may write unit tests and run white box testing.
- Change adoption doesn’t mean that after every release the stakeholders can come up with change requests. Change can be accepted and handled before the Architecture get stable. So it’s the development team’s responsibility to release the code as frequent as possible in form of a presentable application to the stakeholders and the stakeholders’ responsibility to assess the released code and come up with change requests as early as possible. That means, if you have a stakeholder that has no idea what he wants (and believe me, there are such stakeholders) you need to spend more time building prototypes and exploring requirements before you stabilize the Architecture.
- The project that was chosen for the team to exercise Agile development was relatively small. That’s because it was their first time doing iterative development in Agile manner and I wanted to mitigate the risk that the failure of the project could impose (if it fails).
Labels: Architecture



