I find it a good analogy that programming is to organizations in one's office. There is really no single cut solutions. While every one likes a neat desk on the first glance, I know many people who keeps a messy desk and claiming to be most efficient for them that way. The modern day programming craze is quite like advocating organizing with boxes -- boxes inside boxes, and boxes with wires in and out all over the place. On the first glance -- looking at the main entrance -- it is very neat. It often looks nice on the second glance as we see how the major boxes are neatly labeled. But we discover its other side as soon as the first day we get to work.
While I am not advocating messy desks, I am commenting that organizing for neat appearances or any heuristic rules do not really work.