Running into challenging situations or problems is a fact of life in software development. From complex coding constructs to tricky phantom bugs, programmers spend many hours traversing their own minds in search of the right answer. Unfortunately, this brain spelunking doesn't always yield consistent results. At times the problem seems obvious, while on other occasions, it seems to hide behind a subtle impenetrable veil. This shroud can be very aggravating to developers. In these moments a stubborn few push on, but most give up and set the problem aside. Then, at some point in the near future, without provocation, the solution arrives like a rushing tidal wave. Sometimes it happens during a seemingly unrelated conversation or while driving home from work. For some, the solution wakes them up from a sound sleep or is the first thought after waking. Why is this?