Human TCP

Robot Mailbox

I was at a conference recently and had the pleasure of meeting critally-minded people to geek out about the same things I like geeking out about. One guy that I met was extremely enthusiastic about a topic that we stumbled into. When he spoke in conversation, he would deliver a barrage of sentences that formed an argument. Most of the time, I’d understand the whole of the message and respond in kind. However, when I would disagree with him on one of the premises that came at the beginning of the barrage, I would start loading my punches and disregard all that came after. It’s rude to interrupt, so I’d let him finish. Though it was fair for him to assume that I agreed on his premises, it’s only sometimes that I agreed.

And when I was presenting my rebuttal, I would pause between each statement to ensure that he had a chance to understand it, and to challenge it before the next statement. But for each 0.75 second pause inbetween, he would stare at me, anxiously waiting for me to finish the thought. It was fair for him to give me as much time as I needed to complete the argument, but it didn’t give me the confidence that he understood what I just said. So I had to ask him explicitly, to summarize what I just said so that we can pinpoint exactly where we disagree. When I asked him to repeat what I said, he literally repeated my words exactly. It was mildly frustrating.

After explaining and re-explaining both our parts, it turns out that there was a difference in definition in one of the core words that we exchanged. Had we intercepted each other sooner, we would have found the error much quicker and have a more productive discussion.

Needless repetition in conversation is wasteful, and tests our patience with the other. We’d rather talk to someone easy to talk to, so an error-prone conversation style is best evaded. Is there a better way to communicate complex ideas? Yes! People with people-skills calls it active listening. It can be learned as easy as 1-2-3, one layer at a time.

But, just because it can be learned, doesn’t mean it can be learned by everyone. Telling someone with low empathy to feel the other person isn’t going to work like telling a dog to see color isn’t going to work.

So how do I teach active listening to non-people people (aka things-people, aka engineers)? Using math!

In computer networking, there is a fundamental protocol being used to ensure that messages are sent ane received reliably. Transmission Control Protocol (TCP) is an algorithm used by both the sender and the receiver so that streams of messages can be sent efficiently. It mandates acknowledgements from the recipient to continue sending messages. This is unlike UDP (User Datagram Protocol), where messages continue to be sent without acknowledgement. Let’s explore some features of TCP to see how they translate to how us humans can communicate more efficiently.

The guy that I met at the conference was using the human equivalent of UDP. UDP can be efficient when most of the messages are assumed to be received without error, and the messages do not have dependencies on previous messages. But when presenting complex ideas, neither of those assumptions hold.

TCP addresses errors in transmission via acknowledgements, or ACKs. Even when computers start a conversation with a server, they say hello and the server acknowledges them back. Only then do computers ask for data. In human terms, this would be a kind of small talk. Hello’s and how-are-you’s ensure that both parties in a conversation have each others’ attention. If they are unavailable, they would either be silent or indicate that they are not interested in having a conversation at that time.

Once a connection is established, TCP uses checksums and sync messages. A human equivalent to a checksum would be saying “Mm-hmm thats right”, or “Oh yeah that’s bad” in response to the sender illustrating a point. If something goes wrong here, then the message can be said but in different words to bring clarity.

Sync messages in TCP are an acknowledgement of the last several messages received. A human equivalent would be to summarize the messages up to the currently understood bit, after the last time the conversation was summarized. For example, an exchange that includes summaries might be like so:

Sender: TCP is the computer equivalent to how humans practice active listening. You know how Warren Buffet says that investing in your communication skills is the best investment you can make in your career? Yeah, TCP is like the cheat code to having an effective conversation.

Recipient: OK, so TCP makes our conversation better somehow? what is it?

Sender: Transmission Control Protocol, man. When someone says something really long and complicated, you gotta make sure that you signal your understanding of all the parts. Otherwise, they have no idea whether they’re understood or not. If you don’t say anything, they can only assume that you’re totally on the same page as them and understand everything they said. Either that, or they get pissed when they inevitably have to repeat the beginning parts, explaining everything again.

Recipient: Oh, so TCP is like making sure that they got it.

Sender: That’s right.

TCP handles errors in transmission via repetition since the last known acknowledgement. For example,

Sender: TCP is so rad in the way that it handlees errors. Instead of sending all the messages from the beginning, it only re-sends the messages since the last time it was acknowledged. That’s why acknowledgements are so important. Imagine getting stuck on an idea in math class and you tell the prof, “I don’t get it”, and the prof goes “OK, which part?”, like, how are you supposed to know which part you didn’t get, you know what I mean? you didn’t get it in the first place! haha

Recipient: So acknowledgements are like checkpoints!

Sender: Yeah totally.

Recipient: And when you don’t get a part, it just skip to the next part?

Sender: No, no. If you don’t get a part, only the parts after the checkpoint are sent again. That way the whole class doesn’t have to stop and listen to the entire lecture from the beginning.

Recipient: Oh, ok. Checkpoint onwards. Partial repetition.

Summarizing what the other guy just said may seem like a waste of time at first, but it actually prevents misunderstanding, and needless repetition. It gives confidence to the sender that you know what they’re talking about – so that they can dive deeper into their message.

Hopefully, we learned to be better conversationalists from how computers make conversation on the Internet.