We’ve long known about and (gradually) come to accept the unpredictable nature of the web. User-agents, rendering engines, viewport dimensions, network bandwidth; the list goes on.
However, in designing solutions, we often commit fallacies of generalising devices based on the viewport—320px must mean a phone—or, bandwidth based on device—phone must be on a slow connection—etc., you get the drift. Jeremy Keith provides a good overview of three such unknowns while highlighting one crucial yet often ignored factor.