A Beginner’s Guide to Clocks, Causality, and Ordering in Distributed Systems

Why does something as simple as reading the time become a hard problem for distributed systems?