Marshmallow Test

You might think I’m kidding but one the program owners that I work with has a strict “Do not talk to Ivan” policy for her team.


Simply put: Interruptions kill progress.

Programmers have to mentally load extremely complex mental models to do our jobs.  There are a million and one little things that I’m trying to keep “in mind” when I write code.  Stuff I write ends up in dozens of apps.  Those apps help drive a multi-billion dollar business.  (58 billion, at the last reporting.)   So do you really want me to answer your question about highlight colors in a editable cell or would you like for me to keep my mind on writing the validation logic?  

What was the trigger for this rant?

Programmer Momentum: Why a 15 minute sidetrack actually costs an hour.

The article reminded me of the training my entire division at Intel went through to understand brain science and the concept of Flow.  Scott at Happy Brain Science did the training, if you are interested.  I think programmers have a gut level understanding of this concept.

Flow is a drug.  Bliss in digital format.  I get lost in flow.  I lose track of hours when I am in flow.  8pm becomes 3 am at the blink of an eye.  Reaching flow puts me into my happy place.

It takes time for us to stop, unload everything we have been thinking about and load a new context to answer your question.  To get back to the task we had been working on pre-interruption, we have to unload your context, reload the programming context, and try to get back to that magic place.  You may go away with that warm happy feeling because you got an immediate answer.  What you have really done is stoke the fires of loathing of your very soul.  Your selfish interruption blew an entire afternoon of productivity (and bliss) for me.  And who is going to bitch when I missed my sprint objectives?

According to Scott, it takes about 20 minutes for us to achieve flow.  We can handle very short interruptions of maybe 3 or 4 minutes and not loose focus.  Anything longer requires the unload/reload/answer/unload/load process I outlined above.

I propose a test.  Before you interrupt, answer one question.

“Could I roast a marshmallow on the fire?”

  • No fire == Send email.
  • No roasting == Send email.
  • You’re not sure == Send email.
  • Yes == IM me.

There had better be marshmallow roasting when I get there.