Sam Gentle.com

Living asynchronously

One thing that's always been difficult for me is keeping track of things that don't need to be done now. Some activities require a bunch of steps to be taken one after the other; I like to think of those as synchronous activities. Synchronous activities are pretty easy, because you just do the next thing until you run out of things to do (or get interrupted by something else). Reading, gardening, and even programming (sometimes) are all examples of synchronous activities.

By contrast, some activities require you to take a step, wait for something to happen, and then take another step. For example, doing laundry. First you collect all your clothes and put them in the machine, then wait for the machine to finish. You hang up the washed clothes outside, then wait for them to dry. Then you take them inside and put them away. There are two all-important "then wait" steps in the middle there, where you stop, go do something else, and then hopefully remember to resume the process later on. I think of these as asynchronous activities.

Unfortunately, asynchronous activities are harder to manage, and they seem to pop up all the time. Washing is my favourite example, but organising something via email is another one that gets me a lot. Programming can also be very frustrating when it's asynchronous. Occasionally I have to work on a project where the build process takes more than a couple seconds, and it's significantly more difficult that way. That extra time between writing the code and seeing if it works often gets filled with something distracting, and it's easy to end up pretty far off track.

I think reducing that asynchronicity of your activities is a good idea, especially in programming, but sometimes it's not really feasible. Washing and drying are always going to take some time, at least until all our clothes are made out of graphene or whatever. In the mean time, the most valuable trick I have found is to take the responsibility for remembering out of your head. Instead of trying hard to remember when the washing machine is done, set an alarm for however long it takes. For software build processes you can do even better, and set them up to make a chime when they finish.

If you can offload that responsibility onto machines, it makes you much less likely to lose track. But it also means you're free to forget about whatever you're waiting for until the reminder you've set up interrupts you. The alternative is constantly trying to remember all the things you might be meant to be doing, and I wouldn't wish that on anyone.