Peter Deutsch's classic is reprinted by the always entertaining Risks Digest
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 homogeneous
Truth hurts. And having unplugged at home from the direct ethernet connection and returned to relying on wireless…from a new desk position that is just at the edge of its range for decent signal strength…let me tell you that latency can get much bigger than zero.