Essentially everyone, when they first build a distributed application, makes the following eight assumptions. All prove to be false in the long run and all cause big trouble and painful learning experiences.
1. The network is reliable
2. Latency is zero
3. Bandwidth is infinite
4. The network is secure
5. Topology doesn't change
6. There is one administrator
7. Transport cost is zero
8. The network is homogeneous1)
So a design is bad if one these aspects is neglected.
See section contrary principles.
Peter Deutsch: The Eight Fallacies of Distributed Computing
Discuss this wiki article and the principle on the corresponding talk page.