Iterative development and branching

Sandy Walsh, a colleague of mine at Rackspace who also works on the OpenStack cloud development project, has written a blog post on how Iterations and Time-boxing are (Mostly) Useless. It’s a well-written, thoughtful post, and I appreciate his perceptions, but some of them are (to my point of view) strikingly incorrect and unsupportable.
His general thesis can be summed up by these sentences:
Personally, I think Distributed Revision Control Systems (DRCS) such as git, bazaar or mercurial are the most significant change in software engineering within that last 10 years. Not because having a non-central repository is so revolutionary, but because branching and merging has become such a low-cost operation that the speed of software development has increased dramatically. Development shops that utilize these tools can see some big improvements in how they deal with the “Rough Edge” at the end of the sprint.
A major point of contention with Sandy is that neither the Agile nor the Scrum methodologies specify a branching or merge process, and thus it’s not the revision control system that dictates whether or not the methodology works. In addition, some of Sandy’s perceptions of the Scrum process appear to be slanted by not having had the experience of working in a smoothly-running, experienced Scrum environment.





For those of you not in the software industry, you may find this a bit grotesque, but there’s a common phrase used: “eating your own dog food.” It does not refer to a nasty habit or fetish; rather, it means that the software company itself uses the software that it creates. If you work for