I'm not writing enough.
The databases course I'm
taking is all about "IOs", the number of disk reads and writes it takes a
database system to service a query. In the examples, the data sets are too
large to fit in the available memory, so they need to be stored on disks. Disk
IOs are extremely slow, however, so the course treats them as the only
interesting predictor of performance. But I'm working on a databases project,
RAMCloud, that
works in a completely different way, and all this talk about disk IOs seems
archaic to me.
Still, there is something I can take away from the course. While RAMCloud
doesn't have a tiny amount of memory to work with, my brain does. If my brain's
memory is running low, despite the performance penalties involved, I need to
write thoughts down and store them for later use. Otherwise, I'll forget what
I've been thinking about and have to start all over.
In its current form, RAMCloud is an elegant but complex beast. We have a lot of
design choices to work out, and we can't just take them one at a time. As I
race from thinking about one design concern to the next, I rarely take the time
to record my thoughts well enough to easily pick up the discussion later. The
next time I come back to a topic, my brain panics, assuming that it's a new
problem with no clear solution. Then, thousands of IOs later, I slowly pick up
on my old train of thought. It's a waste of time. It's even worse when I
interrupt other people and get them freaking out over the same thing, only to
re-discover the solution together a few minutes later.
I just read an
excerpt
from Switch: How to Change Things When Change Is Hard by Chip and Dan
Heath, which has two great examples of how costly interruptions can be. In the
first, nurses make mistakes with medications because others (surgeons, even)
are interrupting them. In the second example, hitting closer to home, software
engineers delay their release schedule substantially by interrupting each
other. I feel guilty. I've been interrupting my officemates and group members
too much, and I think it's hurting everyone.
Here's what I'm going to do
To interrupt someone, I have to knock on an imaginary door. I'm going to make
the person inside stop what they're doing, get up, walk to the door, and open
it for me. By the time they get back to what they're doing, they will have
trouble picking it back up. I need to justify why I'm knocking, and I need to
come prepared.
Next, when I'm done with that conversation, or when I'm done with any task,
that's a door I'm closing. Someone, maybe me, will eventually come back and
open that door. It's my responsibility now to not waste their time later. If
there's something they will need to know, it's up to me to write that down
while I still remember.