This happens during the SimultaneousDevelopment process, about a third of the way through, when somebody realizes that the GUI is doing one thing in two different ways (which is reasonable. For example "showing a particular database table." Depending on context, you might want to show the table [well, the elements in the table] in many different ways). But, usually, it's a person working on something else who realizes that SomethingMustBeDone and she will do the natural thing (a quick hack to the widgets and ''presto -- problem solved). After all, she's got her own deadline to meet. Which leads to multiple GUI widgets doing almost the same thing (what they do isn't really documented, since it was a quick fix). Lots of replicated code, lots of replicated functionality, lots of brittleness. Why did I name this page ItsTheSameData ? Because the number one justification for making these quick hacks is a variant of "It's the same data. I'm just changing the way the user interacts with it."