Programming is Like a Dream
independentdeveloper.com
independentdeveloper.com
I used to do 'the zone' thing a lot, particularly when I didn't know what I was doing and wasn't designing things properly first. It's only later on I learnt to think first and pick up a pen - it's much easier to handle interruptions when you can turn back to a diagram or flowchart. Coding's really the last thing, and it's pretty much incidental to solving the problem itself.
So do try to minimise your distractions, but don't expect everyone should fit in around your schedule all the time.
My journal-keeping system is described here: https://lobste.rs/s/gfemhn/software_engineers_should_keep_la....
Getting lost in your work is not a phenomenon specific to programming.
I wish he would have stopped short of needing to essentially diminish other occupations. I'm not an accountant, but it wouldn't surprise me if occasionally they too fall into the "zone". Why wouldn't they? Auditing a large and complex system could easily require as much mental agility as coding a piece of software.
Now, if I want to avoid feeling anti-social, I walk over after the Gchat session has begun.
This way I know they've moved their attention to me on roughly their own time... and if they were coding they hopefully wouldn't even see my chat until they at least finished the roll they were on.
Another option is email, of course... but IMs have a much more 'I would like to talk in the near term' vibe to them!
(I've realized some of this by beginning to script more myself...)
I don't mind selling. Sales Mode has a place. However, when I'm selling, it's a different kind of flow. Oh, and when I'm in a system that artificially limits me to one client, it's a bit emotionally unpleasant so it really disrupts my game to have to go into that kind of Sales Mode on an impromptu drop.
See, managers are professional salesmen. They sell their reports on the assigned project (the good ones do; the bad ones just say, "do it or I'll fucka-you-uppa") and higher-ups on what they can deliver. For them, the flowful state is selling. That's part of the problem. They don't see it as onerous to put a programmer into Sales Mode instead of Work Mode for 15 minutes, because they're always in Sales Mode.
I used to think sales was this horrible burden, but as I get older and better, I enjoy the "thrill of the chase". When you job hop, you start getting used to selling yourself and hate it less. (You never stop hating cold calls and resume walls, but interviews become fun once you're half-decent.) However, if it's 2:37pm and I'm solving a difficult problem, putting me into Sales Mode on an impromptu fuck-you-I-can-do-this drop is just rude. I wasn't ready for that, asshole. You didn't give me fair warning. Now it's 2:53pm and I might as well go the fuck home, because it will be dark by the time I get that state back. Thanks for that.
Also, the real danger is that managers who annoy their reports with impromptu status pings end up creating an environment where people pre-emptively avoid going into flow because there is no point. Then, nothing gets done. People play Farmville because status checks (as long as you're a decent bullshitter) are less annoying that way.
When I was working as a programmer, most of the time we didn't know exatcly what needed to be written. Programming requires so much focus because of the myriad of ways that you can implement a high level concept, and you have to take into considaration all kinds of things like performance, extensibility, portability, ease of maintenance, and so on.