When I started my study of software engineering at university, I thought the Waterfall model was such a beautiful model which would lead the team to deliver a system successfully.
There are 7 typical phases identified in Waterfall model and they are followed one by another in sequence.
1. Requirements specification
Choosing a Global Software Development Partner to Accelerate Your Digital Strategy
To be successful and outpace the competition, you need a software development partner that excels in exactly the type of digital projects you are now faced with accelerating, and in the most cost effective and optimized way possible.
Processing these phases one by one just like the water fall down from one stone to another and finally jump into a deep pool – so beautiful trip it is! I have believed software must be developed by following this kind of well defined methodology.
But the strong dependencies among these phases force the team and the client to draw boundary between them. The team wants to keep the requirement “stable”, so getting signature on the requirement is very important as well as the change management later. The client wants to ensure every phase has been processed very well, so putting varies of documents/codes into SOW as defined deliverables.
Does the boundary really help?
The world is changing faster and faster. Except for the information lost caused by the oral/verbal communication on requirement, no project can keep the same requirement from the start to the end.
Change Management Process? It helps from scope’s perspective but from change frequency’s perspective, it maybe not. After all, a single small change needs the effort and long time to go through whole change management process, from proposing change, estimation, getting client approval , processing the phases one by one…
After I joined Perficient and started to practice on Agile, I found the answer. Developing the most important features (from user’s perspective), the real running features and get reviewed by client iteratively. One single Iteration/Sprint should not longer than 1 month, used to be 2 or 3 weeks. During the Iteration/Sprint, the scope is a stable one – no change. But client still has the flexibility to stop the Iteration/Sprint, if they really want to change their mind from what just finalized at the beginning of the Iteration.
Yes, to apply Agile, client needs to be deeply involved. There is no boundary set between development team and client – they are collaborating. And client is happy – the features are always exactly the one they want!