It’s pretty usual to see people from Agile world keep on bashing the Waterfall methodology because of its inherent problems. To be honest, a big majority of the organizations still work in Waterfall mode. So sometimes I used to think, why can’t people in Waterfall world do improvement in the way they do things. Though organizations are switching to Agile, you can’t deny that people have delivered a lot of successful projects in Waterfall too.
In this blog, I am not into bashing mode but would like to ensure that people in Waterfall world benefit with some of Agile practices without changing the inherent nature of methodology.
From the outset, Standup is just 10 minutes ceremony but it has a huge impact. With answering 3 simple questions “What I did yesterday?”, “What I am going to do today?” and “Any impediments?”, it’s farely simple to bring transparency and problems on table. Only when you acknowledge and know the problem, you can solve it. That’s the basic principle, isn’t it?
In one of very big Waterfall project (200 people) I worked, only when people were in neck deep trouble, they used to sit together in order to identify issues. That exercise of jotting down issues itself used to take the entire day and even more. Resultant used to be a big excel sheet and to be honest I never knew what happened to that sheet after that.
I consider Continuous Integration as a philosophy and not just a XP practice. It simply says.
“Do things more frequently which cause you a lot of trouble if you do them only once in a while.”
In my example, instead of identify project issues once in 3 months, why don’t identify and solve them every day. You won’t have those intra-team or inter-team interactions issues anymore. That’s the beauty of this 10 minutes ceremony.
Apart from resolving impediments, team shares information on what they are doing and that does the self-cleaning within the team. It may sound very funny but it’s very difficult to talk about the same small task 3-4 days continuously. Waterfall hides a lot of non-performing people. Standup makes sure that the process itself put some cleansing within the team.
Irrespective of being in Waterfall or Agile, everybody has a tendency to improve oneself. Nobody can deny that. Waterfall is infamous in a way that inner-project problems which push you back in terms of improvement have absolutely no vent (forum) to come out.
Problems can be from any side. People may have very good solutions but they remain in their silos and don’t speak. That makes a person passive and continuous problems and no change pushes people to go into shell, in the sense of complete surrender.
Retrospective changes just that. What if team improvises itself on fortnight basis without needing any help from anybody. Definitely, at some points management has to step in to help the team. But having retrospective (talk about good points, points to improve, action points and action owner) put some FORMAL mechanism to improve things in the project.
Continuous Integration and Automated Build
In big projects, integration at the time of delivery is a mess. Though I am talking about long back (2008) but it used to take more than a day just to remove compilation problems and make build run in the project I mentioned. That’s a waste. Why not have automated build from day 1, have CI in place and people must write tests . Otherwise there is absolutely no guarantee why last build worked and why this one doesn’t.
Writing tests regularly to reduce the maintenance backlog
Waterfall is also infamous for maintenance nightmares. On the other hand for some companies it’s continued business too. Without bugs they won’t get the maintenance contract. The software which only they can maintain as only their developers know where all it will fail. It’s an irony but truth :P.
I am sure customers are becoming smart day by day and many companies offer free-maintenance for some months just to make sure that they are proud on their continued focus on quality and have delivered bug free software.
Irrespective of points mentioned above, it’s important to have tests both for customers and for maintainers. Application can never become extensible without tests as otherwise it will just become yet another monolithic structure which is waiting to be re-written again 😛 .
People have been talking about TDD or writing tests for a long time for Waterfall, I am not sure how much practically it has been possible for these guys to really do it as actual development phase is just one of the 4 phases (very less time) and also at that time of developers have pile of huge non-prioritized requirements to implement.