Kammoksu keskittyneen koodarin keskeyttämistä

Perusteluita sille, miksi työhönsä keskittyvää ohjelmoijaa ei tule häiritä.

11.2.2000

Ohjelmoijan työtä ei tule keskeyttää heppoisin perustein. Mikäli vain mahdollista, hänen kanssaan tulee kommunikoida käyttäen sähköpostia tai muuta sellaista tapaa, johon hän voi reagoida kun ehtii. Alla on hieman perustelua sille, miksi tämä on niin tärkeää.

Ohjelmoijan työ jakaantuu karkeasti ottaen kolmeen kategoriaan:

  1. Aivoton nysväys: pöytien ja koneiden siirtely, speksien tulostaminen ja kopioiminen, jne.

  2. Keskeytyskäsittely: puhelimeen vastaaminen, useimpien meilien käsittely, kokouksissa istuminen, osa testaamisesta ja virheiden etsimisesta, yms.

  3. Yhteen asiaan keskittyminen: suunnittelu, koodaus, hankalammat meilit ja testaamiset ja virheiden etsimiset.

Kohtien 1 ja 2 työskentelyä keskeytykset eivät välttämättä häiritse: mikäli vaikkapa meilejä ei ole suuria määriä ja pientä luppoaikaa on, puhelinsoitto tai asian kysyminen naamakkain eivät juurikaan häiritse. Kohdan 3 työskentelyä keskeytykset sen sijaan häiritsevät totaalisesti.

Psykologit puhuvat käsitteestä nimeltä flow. Maallikon selitys: kun on flowssa, keskittyy vain siihen yhteen tekeillä olevaan asiaan ja pitää kaikki siihen liittyvät pienet, mutta tärkeät yksityiskohdat päässään, lyhyt- ja keskikestoisessa muistissa. Koska mitään häiriöitä omassa päässä ei ole, kaikki yksityiskohdat ovat aivoissa hyvin käsillä ja aivot ovat muutenkin hyvin öljyttyjä, homma etenee loistavasti ja töiden teko tuntuu hienolta. Mikäli tässä yhteydessä tulee mitään keskeytyksiä, jotka vaativat muiden asioiden tuomista lyhytkestoiseen muistiin, luonnollisesti kaikki siellä jo ollut häviää ja se taas pilaa keskittymisen ja hieno fiilis häviää. Takaisin fiilikseen pääseminen kestää yleensä ainakin vartin. Tämän vartin aikana hyödyllistä työtä ei synny.

Tom DeMarco ja Timothy Lister kuvailevat sitä klassisessa ohjelmistoprojektien vetämistä käsittelevässä kirjassaan Peopleware näin (s. 63):

During single-minded work time, people are ideally in a state that psychologists call flow. Flow is a condition of deep, nearly meditative involvement. In this state, there is a gentle sense of euphoria, and one is largely unaware of the passage of time: "I began to work. I looked up, and three hours had passed." There is no consciousness of effort; the work just seems to, well, flow. You've been in this state often, so we don't have to describe it to you.

Not all work roles require that you attain a state of flow in order to be productive, but for anyone involved in engineering, design, development, writing, or like tasks, flow is a must. These are high-momentum tasks. It's only when you're in flow that the work goes well.

Unfortunately, you can't turn on flow like a switch. It takes a slow descent into the subject, requiring fifteen minutes or more of concentration before the state is locked in. During this immersion period, you are particularly sensitive to noise and interruption. A disruptive environment can make it difficult or impossible to attain flow.

Once locked in, the state can be broken by an interruption that is focused on you (your phone, for instance) or by insistent noise ("Attention! Paging Paul Portulaca. Will Paul Portulaca please call extension..."). Each time you're interrupted, you require an additional immersion period to get back into flow. During this immersion, you're not really doing work.

Internetin hakkerikulttuurin eräs kulmakivi, Jargon File, määrittelee samaa tarkoittavan käsitteen "hack mode" näin (http://catb.org/~esr/jargon/html/H/hack-mode.html):

hack mode /n./ 1. What one is in when hacking, of course. 2. More specifically, a Zen-like state of total focus on The Problem that may be achieved when one is hacking (this is why every good hacker is part mystic). Ability to enter such concentration at will correlates strongly with wizardliness; it is one of the most important skills learned during larval stage. Sometimes amplified as `deep hack mode'.

Being yanked out of hack mode (see priority interrupt) may be experienced as a physical shock, and the sensation of being in hack mode is more than a little habituating. The intensity of this experience is probably by itself sufficient explanation for the existence of hackers, and explains why many resist being promoted out of positions where they can code. See also cyberspace (sense 2).

Some aspects of hackish etiquette will appear quite odd to an observer unaware of the high value placed on hack mode. For example, if someone appears at your door, it is perfectly okay to hold up a hand (without turning one's eyes away from the screen) to avoid being interrupted. One may read, type, and interact with the computer for quite some time before further acknowledging the other's presence (of course, he or she is reciprocally free to leave without a word). The understanding is that you might be in hack mode with a lot of delicate state (sense 2) in your head, and you dare not swap that context out until you have reached a good point to pause. See also juggling eggs.

Ohjelmoijista kaikki ovat flowssa jossakin vaiheessa, mieluiten suuren osan jokaisesta työpäivästä. Mikäli huoneeseen tulee puhumaan jonkun kanssa, soittaa, tai muuten keskeyttää, tämä keskustelu luultavasti häiritsee kaikkia huoneessa olevia. Pahimmillaan voi siis käydä niin, että keskeyttää monen ihmisen flown. Kaikilta kestää vähintään sen varttitunnin päästä takaisin, joten yhdellä muutaman minuutin keskeytyksellä menetetään tuntien työpanos, itse keskeytyksen vaatiman ajan lisäksi.

Päälle päin ei kuitenkaan välttämättä näy, onko ohjelmoija flowssa. Tämän takia tulee välttää turhia keskeytyksiä ja käyttää meiliä tai tekstiviestiä.

Mikäli asialla on kohtuullisen kiire, eikä meiliin tule vastausta, on tietenkin sallittua tekstiviestittää, soittaa tai käydä paikan päällä patistelemassa. Samoin, mikäli huoneessa heitetään läppää tai muuten vaikuttaa siltä, että ei olla flowssa, ovat vierailut luultavasti hyvin tervetulleita.

(Tämä teksti on alunperin kirjoitettu työnantajani sisäiselle postituslistalle.)