Comment Re:Simple methodology (Score 1) 347
How could it have "passed all its tests" if it wasn't connected to the rest of the system?
It's a component. It's self-contained, like, say, a database or search appliance. You're not telling me they have to be attached to the rest of the system to be tested, do you? However, what happens under realistic loads with the oddities of connectivity sometimes fall outside even the most comprehensive testing, especially when distributed concurrency rears its pretty head.
It's hard to do agile without continuous integration;
I don't recall if they actually had their checkbox marked off, but we certainly did, with several hundred tests, all written to the spec. Funny thing, there were 3 specs, with multiple versions that had occurred over time. Somehow, the "official" spec in my hands wasn't the complete spec being developed by the other team, they'd decided in a scrum that changing a couple of details would make it easier for themselves. They wound up undoing those changes, and rewriting half their component as a result, extending the timeline by 300%.
But integration blowups are the norm in my experience
Integration is about 90% of what I do. It doesn't matter what project style is used, if the integration isn't properly spec'd and planned, you will be doing a second 90% after the first, and possibly a third and more. (NOTE: I removed waterfall from your quote, because it's relevant to all. Integration can be a real problem.)
Make it cheap and easy to change the requirements, because the requirement are going to change, and there's no holding back the tide.
It's never going to be cheap and easy in general to change requirements. That's as true of building bridges as it is for building software. There are changes that are easy - make the railing painted black instead of pink, for instance, vs expensive - gold railings vs wood. But changing the base structure, going from arch to suspension to truss in any order will never be cheap. (Think going from relational to Mongo to Hadoop) The purpose is the same, get a car from one side to the other, the car manages it the same way - driving on a roadway, but everything else about it is different. For data stores, the data is stored and comes back out, but the aspects of how its done and the implications for the application server are rather different, depending upon how you set them up. One or more may not even meet the base requirements used as a starting point for designing the application.