Hacker News new | ask | show | jobs
by omarhaneef 2436 days ago
I feel like there is an insight here about working by yourself, too, that I cannot quite put my finger on.

Even if there is no team, you don't want to self-interrupt your own work. Well, we know that hence we invest in internet blockers etc.

However, if you are interrupted, it is best if you recover quickly. That is to say, if you can set up your own work so that it is planned in bite size components, and you know exactly where to pick up, you are better off.

This is like making an outline, and keeping track of where you are in the outline, except at the level of detail you need (say 5 min increments). Or perhaps you have a short hand of tracking where you are during an interruption.

So, if someone says excuse me, you take 12 seconds to quickly note what you were about to do, and if you are about to self interrupt, you do something similar.

3 comments

I've learned to take a lot of notes, make frequent checkpoints (e.g., git commits), and break things down into small pieces, just to deal with interruption--minute to minute (people asking me questions), day to day (fire drills, bugs), and week to week (constantly changing priorities).
Do you use a tool for this?
I'm not the same person, but I have a small notebook and pen. Any time I think "Shit, how am I going to remember this if I get interrupted right now?", I quickly scribble down as much as I can and continue working. This is invaluable when I do get interrupted.

I do this basically any time I feel like my short-term memory is overwhelmed with facts, and as a result the notebook has effectively become NVRAM for my brain.

This is the closest to what I do myself -- I always have pen and paper on my desk -- but the real issue is that I don't take a note when interrupted because of social pressures (its rude to ignore someone for a few seconds). I don't even do it for myself for self interruptions because I forget to.
That problem is solved through humility and social graces.

"Hold on a sec, I just wanna write down what I was doing so I don't lose my place."

If you want to add more, after writing it down, you can follow up with, "sorry to keep you waiting, but when I get interrupted I often forget some useful details about what I was working on, and I want to get that down before it leaves my head".

(The "when I get interrupted" is a bit of a cheeky way to point out "you are imposing on me, so the least you can do is allow me this".)

It's rude to interrupt someone without giving them the time to put down whatever it is they're doing. Even if it takes more than a few seconds.
For me, a quick "hang on" or "sorry, one sec" acknowledges people enough that they don't feel ignored while I make my notes, and is also scripted enough that it doesn't usually knock the thoughts out of my head.
I'm not the person you asked, but I do the same using Emacs' org-mode[0], but there are many tools around such as the Leo Editor[1], or really, any editor with a decent markup language support will do.

I store all my org files in git repositories and sync them across devices, allowing me to work on multiple devices and worry less about losing a particular device.

[0] https://karl-voit.at/orgmode/

[1] https://leoeditor.com/

Tried this for a while, but unless I have the window open, I don't use it. I use Wunderlist to track the "projects" that I have in my head at any point in time.
Pen and engineering paper, chronological with bullet points. When the paper is full, I copy any items that are not already checked off or canceled to the next piece of paper (or to a note taking application--still looking for a good one, trying out cherrytree). Any item that gets copied gets a line through it. Canceling an item is putting an X in front of it instead of checking it off. Old pages go into a 3 ring binder.

Items don't have to be tasks. They can be ideas or general notes.

Not the same person, but I keep a text file divided into two sections - "history" and "today"

The "today" section is a bulleted list of the things I think I'm working on today. I add to it through the day as I get shoulder-tapped, or as I realize another important sub-task.

As I finish tasks, or at the end of the day, I move them up into the "history" section under the current date. Thursday: A, B, C

This is basically all of the "head state" in the infamous cartoon of how you ruin engineers lives by interrupting them. I feel that it allows me to be interrupted without losing import state, and it's also a ready-made "scrum status" of what I did yesterday, and an augment to my memory when someone asks me "did you change X?" for some micro-task that was too small to ticket.

I feel this has helped me be a more effective developer, in spite of my decaying memory, than I was when I tried to keep everything in my head. :)

Example contents: https://imgur.com/a/VI64Jx6

I agree with this, but there's a pitfall. Lets say you want to get conversation done at either the start/end of day or both. This is efficient because then you can work interrupted throughout the day. However, when you're not available to answer every ping right away or your "online" status isn't green, then it puts you in a bad light because the managers think you aren't working and/or don't care/aren't a team player.
I find I do much better at coming back to solo/personal stuff if I use an issue tracker anyway, even in the early stages where I'm not so much managing bugs as chunking into bite-size pieces as you describe, so I always try to do that now.

It makes me less likely to leave the repo with some staged changes, some unstagrd changes, and no idea what I was doing when I come back to it - but even if that does happen it makes it easier to work out.