The book talks about how interactions between people/things/events work. The author talks about how we can feel more connected based on vulnerability, proximity, flow, similarity, and environment.
The part on flow discussed how a champion racecar driver gets "in the zone" or "flow". As someone who's done programming competitions in the past (in a room where others are writing code against you) I could absolutely relate, time outside just washes out of sight, the curly braces become an extension of you, it's a down-right magical feeling.
There's another concept I feel is related to this, and I don't want to jump the shark here but, if you think about how we reach mastery of things we know (or, in other words, you can read sheet music, but can't play the guitar like a pro because every few notes you make a small pause and think about the next few notes), we're focusing on our impulses, or rather, eliminating them. This TED video does a much more fun/elegant explanation of impulses: http://www.ted.com/talks/benjamin_zander_on_music_and_passio...
I find it interesting that when I'm personally in a state of "flow", I'm working without any "impulses". To me it appears like the two are related: you need to be able to work without impulses in any given skill before you can enter flow (otherwise, you break out of flow). Now, this isn't enough, and I feel this is where we get back into the "connections" or "relationships" discussed in Click. To me it appears we as programmers have a better predisposition simply because the computer can create for us a synthetic reality free of normal distractions, we can tweak our proximity to a machine should we need to (mod your PC case and feel proud, love your mac book, set up your desktop just the way you like it), we know how vulnerable it can be to different things (viruses, long running programs, leaky memory), we experience it enough that it's very familiar and similar to things we've experienced before (try switching editors or color themes for a day, you'll understand how your similarity impacts your ability to get into flow), we can control almost all of the environment. In this synthetic universe we are better predisposed to making all the mental connections we need to feel like we're using an extension of ourselves rather than a machine.
This goes back to what we've long known: programmers need to know their stuff in and out, and need to work in an environment they have control over.
The excellent motorcycle magazine MCN (American one, not the low-quality British one) had a series of articles by a psychologist on flow and how to attain it. According to the series, attaining flow boils down to:
1) Familiarity. You must be doing something at which you are competent.
2) Stress. You must have a moderate challenge. Imagine Notch building his nth dungeon game, and this time he's trying to do it in ten minutes less than his previous best time.
3) No distress. Distress comes from too great a challenge, such that it pulls you out of your flow state (what you call impulses, I believe). Imagine making Notch do his development in C# on .Net, since he's a Java guru (he may well be a .Net guru, too, but let's assume he's a noob for the sake of this example).
Another example of something which causes distress and an inability to reach a flow state would be tackling an integration using a new API which has a non-intuitive interface and lousy documentation.
To build on your example of changing editors or color schemes, I think this explains why we developers are so sensitive about working on other people's code base. It's not simply that it's ugly, or not architected correctly, but that every tiny, unfamiliar element compounds the inability to attain flow. We chastise one another for being self-centered and dismissing others' work as incompetent without objective reason, but within our own brains there's a very real reason. I suppose it is self-centered by definition, though. :-)
The book talks about how interactions between people/things/events work. The author talks about how we can feel more connected based on vulnerability, proximity, flow, similarity, and environment.
The part on flow discussed how a champion racecar driver gets "in the zone" or "flow". As someone who's done programming competitions in the past (in a room where others are writing code against you) I could absolutely relate, time outside just washes out of sight, the curly braces become an extension of you, it's a down-right magical feeling.
There's another concept I feel is related to this, and I don't want to jump the shark here but, if you think about how we reach mastery of things we know (or, in other words, you can read sheet music, but can't play the guitar like a pro because every few notes you make a small pause and think about the next few notes), we're focusing on our impulses, or rather, eliminating them. This TED video does a much more fun/elegant explanation of impulses: http://www.ted.com/talks/benjamin_zander_on_music_and_passio...
I find it interesting that when I'm personally in a state of "flow", I'm working without any "impulses". To me it appears like the two are related: you need to be able to work without impulses in any given skill before you can enter flow (otherwise, you break out of flow). Now, this isn't enough, and I feel this is where we get back into the "connections" or "relationships" discussed in Click. To me it appears we as programmers have a better predisposition simply because the computer can create for us a synthetic reality free of normal distractions, we can tweak our proximity to a machine should we need to (mod your PC case and feel proud, love your mac book, set up your desktop just the way you like it), we know how vulnerable it can be to different things (viruses, long running programs, leaky memory), we experience it enough that it's very familiar and similar to things we've experienced before (try switching editors or color themes for a day, you'll understand how your similarity impacts your ability to get into flow), we can control almost all of the environment. In this synthetic universe we are better predisposed to making all the mental connections we need to feel like we're using an extension of ourselves rather than a machine.
This goes back to what we've long known: programmers need to know their stuff in and out, and need to work in an environment they have control over.