logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

A-philosophy-for-instant-messaging.md (6444B)


  1. ---
  2. title: My philosophy for productive instant messaging
  3. date: 2021-11-24
  4. ---
  5. We use Internet Relay Chat ([IRC][0]) extensively at [sourcehut][1] for
  6. real-time group chats and one-on-one messaging. The IRC protocol is quite
  7. familiar to hackers, who have been using it since the late 80's. As chat rooms
  8. have become more and more popular among teams of both hackers and non-hackers in
  9. recent years, I would like to offer a few bites of greybeard wisdom to those
  10. trying to figure out how to effectively use instant messaging for their own
  11. work.
  12. [0]: https://en.wikipedia.org/wiki/Internet_Relay_Chat
  13. [1]: https://sourcehut.org
  14. For me, IRC is a vital communication tool, but many users of <insert current
  15. instant messaging software fad here>[^1] find it frustrating, often to the
  16. point of resenting the fact that they have to use it at all. Endlessly catching
  17. up on discussions they missed, having their workflow interrupted by unexpected
  18. messages, searching for important information sequestered away in a discussion
  19. which happened weeks ago... it can be overwhelming and ultimately reduce your
  20. productivity and well-being. Why does it work for me, but not for them? To find
  21. out, let me explain how I think about and use IRC.
  22. [^1]: Many, many companies have tried, and failed, to re-invent IRC, usually within a proprietary walled garden. I offer my condolences if you find yourself using one of these.
  23. The most important trait to consider when using IM software is that it is
  24. *ephemeral*, and must be treated as such. You should not "catch up" on
  25. discussions that you missed, and should not expect others to do so, either. Any
  26. important information from a chat room discussion must be moved to a more
  27. permanent medium, such as an email to a mailing list,[^2] a ticket filed in a
  28. bug tracker, or a page updated on a wiki. One very productive use of IRC for me
  29. is holding a discussion to hash out the details of an issue, then writing up a
  30. summary up for a mailing list thread where the matter is discussed in more
  31. depth.
  32. [^2]: Email is great. If you hate it you might be [using it wrong](https://useplaintext.email).
  33. I don't treat discussions on IRC as actionable until they are shifted to another
  34. mode of discussion. On many occasions, I have discussed an issue with someone on
  35. IRC, and once the unknowns are narrowed down and confirmed to be actionable, ask
  36. them to follow-up with an email or a bug report. If the task never leaves IRC,
  37. it also never gets done. Many invalid or duplicate tasks are filtered out by
  38. this approach, and those which do get mode-shifted often have more detail than
  39. they otherwise might, which improves the signal-to-noise ratio on my bug
  40. trackers and mailing lists.
  41. I have an extensive archive of IRC logs dating back over 10 years, tens of
  42. gigabytes of gzipped plaintext files. I reference these logs perhaps only two or
  43. three times a year, and often for silly reasons, like finding out how many swear
  44. words were used over some time frame in a specific group chat, or to win an
  45. argument about who was the first person to say "yeet" in my logs. I almost never
  46. read more than a couple dozen lines of the backlog when starting up IRC for the
  47. day.
  48. Accordingly, you should never expect anyone to be in the know for a discussion
  49. they were not present at. This also affects how I use "highlights".[^3] Whenever
  50. I highlight someone, I try to include enough context in the message so that they
  51. can understand why they were mentioned without having to dig through their logs,
  52. even if they receive the notification hours later.
  53. [^3]: IRC terminology for mentioning someone's name to get their attention. Some platforms call this "mentions".
  54. *Bad*:
  55. ```
  56. <sircmpwn> minus: ping
  57. <sircmpwn> what is the best way to frob foobars?
  58. ```
  59. *Good*:
  60. ```
  61. <sircmpwn> minus: do you know how to frob foobars?
  62. ```
  63. I will also occasionally send someone a second highlight un-pinging them if the
  64. question was resolved and their input is no longer needed. Sometimes I *will*
  65. send a vague "ping &lt;username&gt;" example when I actually want them to
  66. participate in the discussion *right now*, but if they don't answer immediately
  67. then I will usually un-ping them later.[^4]
  68. [^4]: I occasionally forget to... apologies to anyone I've annoyed by doing that.
  69. This draws attention to another trait of instant messaging: it is
  70. *asynchronous*. Not everyone is online at the same time, and we should adjust
  71. our usage of it in consideration of this. For example, when I send someone a
  72. private message, rather than expecting them to engage in a real-time dialogue
  73. with me right away, I dump everything I know about the issue for them to review
  74. and respond to in their own time. This could be hours later, when I'm not
  75. available myself!
  76. *Bad*:
  77. ```
  78. <sircmpwn> hey emersion, do you have a minute?
  79. *8 hours later*
  80. <emersion> yes?
  81. *8 hours later*
  82. <sircmpwn> what is the best way to frob foobars?
  83. *8 hours later*
  84. <emersion> did you try mongodb?
  85. ```
  86. *Good*:[^5]
  87. ```
  88. <sircmpwn> hey emersion, what's the best way to frob foobars?
  89. <sircmpwn> I thought about mongodb but they made it non-free
  90. *10 minutes later*
  91. <sircmpwn> update: considered redis, but I bet they're one bad day away from making that non-free too
  92. *8 hours later*
  93. <emersion> good question
  94. <emersion> maybe postgresql? they seem like a trustworthy bunch
  95. *8 hours later*
  96. <sircmpwn> makes sense. Thanks!
  97. ```
  98. [^5]: I have occasionally annoyed someone with this strategy. If they have desktop notifications enabled, they might see 10 notifications while I fill their message buffer with more and more details about my question. Sounds like a "you" problem, buddy 😉
  99. This also presents us a solution to the interruptions problem: just don't answer
  100. right away, and don't expect others to. I don't have desktop or mobile
  101. notifications for IRC. I only use it when I'm sitting down at my computer, and I
  102. "pull" notifications from it instead of having it "push" them to me &mdash; that
  103. is, I glance at the client every now and then. If I'm in the middle of
  104. something, I don't read it.
  105. With these considerations in mind, IRC has been an extraordinarily useful tool
  106. for me, and maybe it can be for you, too. I'm not troubled by interruptions to
  107. my workflow. I never have to catch up on a bunch of old messages. I can
  108. communicate efficiently and effectively with my team, increasing our
  109. productivity considerably, without worrying about an added source of stress. I
  110. hope that helps!