Respectfully speaking, I might have a different take on waterfall. It reminds me of what Churchill said about democracy, that "it is the worst form of government except for all those other forms that have been tried from time to time". Sure, waterfall is not perfect, and bad design, like in the case here with IP address routing, leads to bad results. But its competitors like agile and so on really have not sold me. It leads to a perpetual mentality of being in beta mode, code does not get frozen when it should, and customers don't have a clear idea of what goes into what release. It is murky, and that means more work ends up being done for less money. Not to mention from a QA point of view that QA is an equal part of the process in waterfall, where it tends to be a red-headed stepchild in agile environments. In waterfall, at least you have a clear idea of what is going to the customer, and what the bugs are, and the customer knows it too. And of course sometimes poor requirements end up going out and that is just life, but rigor is the key. Rigorous marketing requirements lead to rigorous technical specifications which lead to rigorous architectures, unit tests, and actual code. Likewise, rigorous requirements and technical specifications lead to properly designed test cases which reduces bugs. Perfection does not exist of course. But clearly defined goals in a rigorous process helps towards that end. But this case is really not so much a failure of waterfall but it more brings up the issue of what technical standards to adhere to. Companies as big as Microsoft should be able to afford an R&D type department filled with PhD types to figure these things out, so when the time comes to turn marketing requirements into technical requirements the people doing that will have a clear idea of which standards to use for what tasks. Ad hoc choosing of standards is what created this debacle. The answer in my opinion is not switching from waterfall to agile. The answer is to ear mark a team who is tasked solely with the purpose of researching, experimenting, and so forth with industry standards, like in this case routing standards, and have that team interface with the design team. Which again big companies that make operating systems ought to be able to do.