Optimizing and Procrastination

This has been a great week. It kicked off with surprise tickets to a real basketball game in Boston (Celtics versus Sonics), which was super fun and enlightening. Watching a game at court-level is a completely different experience from TV; you really get a sense of the speed, precision and adaptability of the players. A little of that energy rubbed off on me for the rest of the week, as I humped it through project work, had great client meetings, and fulfilled some long-standing personal engagements. I got an extra boost on Tuesday, when I got my every-six-week haircut at what is now my favorite place in Danvers; afterwards I went to the mall and got great service from the female store staffers. I realized that they were admiring my haircut as I followed their eyes. And if that wasn’t enough, I lost five pounds this week without even thinking about it. It’s been a very productive week on many levels.

Today, however, I realized that there’s possibly another level of productivity I could attain, after talking with a friend about personal identity.

Buddy S. was cheerfully filling me in on the positive psychology reading she’s been doing. One neat tidbit was how people see themselves as having a job, a career, or a calling: people with jobs do it for the money, people with careers do it to climb the ladder to higher levels, and people with callings do it for the love of it despite money. I commented that I thought I was somewhere between career and calling. I was silent as I reflected on how I seem to be searching for personal meaning in the work that I do, and that perhaps this was a source of inefficiency.

On a whim I asked S. if she had a strong sense of identity, as she’s a very productive person. “Yes!” she said immediately, and proceeded to rattle off half-a-dozen things. “Wow!” I exclaimed, impressed by the speed and surety of her answer, “I’m not even sure I could do that.”

“Sure you could! Maybe it’s not voice that works for you, but I know if you sat for 3 minutes you could bang something out.”

And certainly I could, but the ability to just say who you are on a moment’s notice was really intriguing. So I tried it, muttering something like:

I’m David Seah, and I like cats (note: Kat was sitting right there, looking at me expectantly). I like nutty quirky people, and people who are inspiring and like to make things. I like things that have artisan or craftsmanship like quality. I like to find the essence of things.

Ok, we knew that already, but the interesting part is this: the exercise made me realize that I had a huge desire to collect and organize the statements I was in the process of saying, and this caused a delay in speaking. Ordinarily, I would have taken the time to do some internal organization before saying what was on my mind, but since time was a factor, I consciously overrode that desire so I could speak more immediately. I think being able to speak extemporaneously like this is a valuable skill, so I’m going to practice it more to get used to the idea.

Later on, I began to wonder if this “processing delay” is introduced by some kind of computational overhead in my thinking process. If that’s the case, then I should be able to turn it off for faster reaction time.

The thought-to-action model might be something like this:

  1. Brain conceives of high-level Goal to pursue
  2. Brain partially converts goal into series of steps to be done
  3. Brain analyzes steps for completeness to create optimal execution plan
  4. Brain executes optimal execution plan by dispatching commands to the Body
  5. Cool shit happens

A cognitive scientist might help me out here :-)

Anyway, I’m thinking that Step 3 is the culprit: it creates a transactional model for action that requires optimal planning—and by extension, all necessary assets ready and available—before any execution will occur. Planning itself is not a bad thing, because it saves later headaches and ensure that energy is used in the most productive and optimal fashion. And isn’t being optimal in our use of resources productive? Efficiency is awesome, yes?

Up until 10 minutes ago I would have agreed, but I now believe this is a case of premature optimization. Optimization itself is always desirable in an end product, but performing it before you fully understand where the bottlenecks are is a recipe for wasting time and energy. In the real world, it’s like arguing what the best way to do something is before anyone on the team has really done it; at some point, you have to try something and see what happens. Trying to be efficient before you have real experience just slows you down for no reason. In real-life work, it makes sense to just learn by doing, and make incremental improvements in the process as you gain experience with it. Make your best guesses based on what you do know, but don’t encumber the process with “it will be more efficient if we do it this way” conditions. Instead, focus only on the “it will work” conditions.

As programmers, we’re taught to value efficiency, and oftentimes that includes productive laziness: how to get the maximum benefit from minimum effort. A lifetime of programming experience teaches us where the high-payoff situations are likely to be, and this makes us seem like magicians when we pull off something particularly elegant. Experienced programmers know that these moments are relatively rare in the day-to-day work of building software: you either know a trick right off-the-bat or you see the opportunity in the course of experiencing the system as it’s coming together. But what makes steady progress possible is the commitment to building the system brick-by-brick, knowing that each piece will function in a reliable manner. After you get the system built, then you can do some productive optimization work.

Tying this back to procrastination:

The processing delay I noted in the “who am I” statement was an echo of a “work optimally” desire, before I knew what I was going to say. If I was building a software system, I would just build something and find the answers in the process of building, not worry if it was “optimal” or “efficient”. It just has to work first! And perhaps this attitude is what I need to cultivate in my approach to all my projects. In other words, Do It Now, Optimize Later and Learn By Doing.

This may not help for chores like doing laundry or taking out the trash, but it might help get some of my other projects moving.