The experience of troubleshooting small programs misleads the programmer's intuition into believing complex systems are just a collection of smaller things. Experience with the complexity of production systems destroys that illusion and leaves the programmer unsettled.
In small systems and small programs, when there's a bug, I can use troubleshooting practices—which boil down to a kind of guided binary search algorithm—to narrow down the source of the bug. And I can fix it. I can convince myself it is in fact fixed. And I move on.
In systems of any complexity, I can't recreate the symptoms consistently enough to trust any deduction I might make to narrow in on "the bug." If I get something that "fixes" the flakey symptoms, it's usually a pretty uneasy feeling. Still very uncertain. Maybe we fixed it. Or maybe it just went away by itself. Ghosts in the machine because the complexity defies a deterministic assessment.
With the experience of determinism and rationality in the small examples I construct an expectation and intuition built on my own life experience that the world itself is as rational as these small systems. I've myelinated all those axons. Reality is surely just an accumulation of small deterministic systems.
The scientific conclusions in the lab... surely these let me reason about life outside the lab.
And complexity outside the lab destroys that illusion and leaves all that felt experience suspect. It is very unsettling emotionally. So much more comfortable to ignore the essential nature of complexity with the illusion that I understand how it can all work. I remain in the imaginary world I've constructed, reinforcing the comfortable myelinated networks and cannot even perceive that the world is otherwise.
.
There are more effective approaches to explore and make sense of complexity. See Approaching Overload.