Face-to-face Communication: a story, some thoughts

Last week, I learned a valuable lesson or two about communication.

I was working remotely that Monday, specifying a new feature. I was defining a fairly advanced interface for sending graph-like data between an app and a server, and I thought that I was doing pretty well: I had specified desired capabilities, split the feature into steps, and decided to use a DOT-based syntax. DOT is a language specifically for describing graphs — exactly what I needed.

I was connected to the rest of my team via our chat (we use Slack) and had some good back-and-forths about the interface design. All the feedback was positive.

When I came in to work the next day, I gave a quick presentation of my proposed design. I thought it was pretty clever.

“But,” a comment from a co-worker, “it will be really hard to make the app serialize to DOT. There aren’t any good serializers, like there are for JSON.”

At first, I was a bit nonchalant: “we’ll just write a parser, it isn’t hard, DOT is a simple language”. After talking for a bit, I realized that we would not just need a serializer (turning the data into the DOT-format), but also a parser (reading from DOT) in several languages (Node.js for the server; Swift for iOS; Java for Android). We already used and were familiar with adequate JSON parsers for all of these languages. It was also pointed out to me that all the time we spent on parsers and serializers would be taken away from giving the feature its finishing touches, making it stand out. All in all, the DOT-format was a really bad deal.

So I went to work on a JSON-based alternative.

Verbal communication #

My take-away from this is that discussions are best taken verbally. If we had had this discussion in writing, I would have been much less likely to accept the additional concerns, and less likely to realize the extent of extra work my design would entail. Sure, I might have gotten there eventually, but it wouldn’t have been as quick.

I am the kind of person who thinks while I talk. While some people might be different, getting the input of people who think while they talk requires, well, talking.

Working remotely still allows for verbal communication, but it is much less natural than when working in the same location. The friction of setting up a video meeting is much higher than tapping co-workers on the shoulder and having a talk.

Having an environment where tapping co-workers on the shoulder, however, might have negative consequences of its own (interruptions). I think we’ve found a pretty good balance: meetings or interruptions are requested via email or chat, and people respond when they have a minute and check their communications. This solution could be used for remote work, too.

There might still be more friction in setting up a video call (I know I have a harder time doing that than calling a normal meeting), but that might all be something that can be trained away.

Non-verbal communication #

As I was finishing up the revised proposal, I shared it in chat in order to get some feedback. I got a few comments, nothing major — but then one of my co-workers rolled his chair over and looked through and discussed the proposal with me.

Image: Discussing in person. Body language says a lot.

There are many ways to describe a graph in JSON, and his intuition was to do something different from what I had presented. The general concept of his idea was one I had already considered and discarded. He had other ideas, though, some of which were new to me.

Through discussing the pros and cons of each idea, all the while modifying the example we were looking at, we eventually converged on an alternative that had more advantages and fewer disadvantages than either of our original ideas.

What struck me was the role that non-verbal communication played. Indications and pointing and almost-imperceptible nods made our discussion quick and efficient: not everything had to be put into words to be communicated.

Non-verbal communication is often lost when working remotely, and even though video calls make it possible to see facial expressions it is never quite the same as being able to read another person’s body language.

Summing up … #

I am still making my mind up about working remotely: whether it is better or worse than having all employees in one location.

Before this experience I was pretty convinced that remote work was a fantastic idea, and that everyone should be doing it. While this piece of writing has focused on the advantages of single-location workplaces there are many advantages of working remotely that should not be forgotten. I am probably still for remote work, but I think it is important to be aware of what is being sacrificed when making the choice to work remotely.


Now read this

Group Flow in Software Development

In The Clean Coder, Robert C Martin writes about being in the Zone: Let me be clear about this. You will write more code in the Zone. If you are practicing TDD, you will go around the red/green/refactor loop more quickly. And you will... Continue →