Most programmers desire to be 'in the zone' as much as possible; they see it as a prerequisite to being productive. However, the reality is often one of interruptions.
As it turns out, being in the zone is a drug, and as you build up tolerance, getting the next 'high' becomes more and more difficult. This may explain why programmers move on to management or other pastures as they get older.
However, it's possible to stay productive as a programmer, even in the face of frequent interruptions. Forget the zone, and learn to work in small increments of time. The solution is to write code in a particular way.