Communicating Needs Without Being An Ass — Imperative and Declarative Communication

Yuzu
10 min readJan 12, 2022
Photo by Lukas from Pexels

One of the cornerstones of my upbringing was this simple, blanket statement: “Be honest with people.” And like all simple, blanket statements, this statement is wrong, especially in the brain of someone with ADHD. I know this because I was honest growing up. I said exactly what was on my mind. It was actually really hard not to because doing so meant focusing my attention on how I was feeling (usually angry, ashamed, and embarrassed), and boy did young Yuzu not like that. I very, very quickly learned that doing that is a road to people hating (or in the case of my parents, punishing) you. For a long time, even into professional work, I had a lot of anxiety around expressing myself because this principle of honesty drove me to fail at a very fundamental part of conversation: knowing how to talk to your audience. For a long time, I viewed this practice of crafting a message as deceitful. If I couldn’t say exactly what was on my mind, was I really telling the truth? I think from a philosophical “principles” sort of standpoint, no, I’d argue that you aren’t. You are lying by omission. But there’s another more important principle at play when it comes to communication: is communication actually occurring? Is the party I’m talking to actually hearing what I have to say? Controversial, I know! Due to what an engineer might call a “bug in our language processing system”, true “honesty” of this nature can actually work against that goal. I personally find it most difficult to not be honest when I feel as though I’ve been wronged in some way. So how do you tell other people to do something, especially when you feel that you’ve been wronged?

The Goal of Communication of Needs

Let’s stay in philosophy land for a bit longer. Firstly, what’s the goal of communication? The goal of communication is to get someone to believe something that you yourself believe. It’s sharing a perspective. It’s really magical to be honest. The fact that you can read these words right here and come away having thoughts similar to mine on communication is really… beautiful!

One of the most common things we use communication for is expressing a need for something to be done. You believe something must change, a decision must be made, or an action must be taken. One way of doing this is through imperative language. Imperative language is communication that is intended to indicate to someone else that you want them to do something. It leaves little room for question or debate. These are sentences like:

  • “Rewrite this code.”
  • “Should we use Python or JavaScript?”
  • “What is your name?”

While people can obviously respond to these in different ways, you are clearly priming these conversations with an expectation. If the person does not want to rewrite the code, it would be unexpected and a source of tension in that conversation. If you opted for for a third language besides Python and JavaScript, it’s pretty clear you’d have to explain why. People would be thrown off by both the answer “Why?” or “Who’s asking?” to the question “What is your name?” Your need can only be met in certain ways, and you expect it to be met in those ways immediately, and without debate. Imperative language is the language of orders.

Compare this to declarative language:

  • “I feel like we should rewrite this code”
  • “I think we should use either Python or JavaScript.”
  • “I’m sorry, I don’t know your name.”

Declarative language declares a fact. It expresses some truth you believe. It also usually creates a space for discussion and involvement, more so than imperative language usually does anyways.

To be clear: there is a time and place for imperative language. But I think there’s also a mistaken perception that declarative language isn’t effective for communicating goals. I disagree. If you look at the examples, you’ll notice they actually have the same goal in each case:

  • expressing a need to rewrite the code
  • expressing the need to resolve the choice of what programming language to use
  • expressing your need to know someone’s name

Here’s the thing: most people hate imperative language. Unless there’s a pre-existing reason to be obedient to someone (e.g.: you have a superior/subordinate type of relationship, the speaker has a fucking gun), most people aren’t usually very receptive to imperative language. To give a common knowledge example: if someone approached you and said “Give me five dollars.”, I think far, far fewer people would give them five than if they said “I need five dollars to eat tonight.” The speaker is still asking for five dollars at the end of the day. The goal hasn’t changed. It’s how the goal was communicated that’s different. Taken from the standpoint of “Does the communication of my needs end up in what I need being given to me?”, I think speaking imperatively is actually a pretty bad strategy on average unless you’ve got some other aspects working in your favor in the conversation. Let’s go to a concrete example.

Of Bugs and Co-Workers

I recently had an issue in a system I was working on. However, the work was running long, and I knew it would be far more beneficial for me and everyone else to submit the broken system than to keep everyone waiting. So I did what you should in a situation like this: I submitted it and I told everyone the best I could that there were problems with my work. It took me about 20 minutes to write up the known issues list, making sure that I went into detail about how things were broken, why they were broken, and when I expected them to be fixed. My bug had screenshots. I used the forbidden magic word (@everyone) to make sure my team saw the issues. I retagged quality assurance to make sure they saw the issues and would be able to field questions about them if they did come up. From my viewpoint, I had done everything in my power in our virtual office short of messaging every single person and telling them “Hey, I submitted some fucked up code, but I think that was better than not submitting it. You’re just gonna have to tolerate these issues for now.”

Days pass. -ping!- “Hey Yuzu, we’re having an issue with the system you worked on…” -ping!- “Yuzu, this thing you were doing looks broken, do you know about this?” -ping- “What’s going on with <new system>? -posts screenshot that is almost identical to the one in my bug report-”

What. The. Fuck. Some people would be more tolerant than my inner dialog was. But my ADHD brain has no tolerance for this type of thing. I spent a bunch of extra time making sure my team knew that my system was broken. I was ashamed to submit that code. I wanted it to work. I certainly would have fixed the problem if I had the time! But I had to go against my own desires and then did my best to make sure everyone knew that there was a problem. I spent WEEKS on this system!! Why can’t these people take 2 minutes to read a message on company chat? I bet this sounds familiar if you’re an engineer.

The stereotypical response of the engineer in this case looks something like this: “I already reported this issue. Read this bug report I tagged everyone in last week: <link to bug report>. Read these messages in the future. I spend a lot of time working on them, and this is wasting my time.” You might get some pleases sprinkled in there, but ultimately it’s cold, it’s efficient, and, most importantly for this article here, the need is ultimately communicated imperatively. There’s some declaration of facts. But ultimately, the solution isn’t one that can be argued. They fucked up, and there’s only one way to fix that: my way.

Here’s my point: this communication is not as effective as it could be, and it is substantially less effective in the long term. Sure, people will likely listen. And I would imagine the majority of people would feel bad reading something like that. Even if they listen now, the chance that they’ll want to talk to me goes way down. Who wants to interact with someone who acts like they’re right, you’re wrong, and they’re going to tell you why? There’s a word those kinds of people: “assholes”. And I think a lot of people think engineers are assholes. If you do this long enough, even subtly, people stop talking to you.

What does the declarative version of this need look like? First, let’s identify the need. What do I actually need from my co-workers? I need them to read known issues. Is this unreasonable? No! In fact, if they do this, it’s not only beneficial to me, it’s beneficial to them! They don’t have to file new bugs, stop what they’re doing to go talk to me, or spend a bunch of time asking around about who to talk to about this problem! In fact I’d go so far as to say that it’s more beneficial to them than it is to me! I can take 2 minutes to link you to my issue. If you end up spending 15 minutes trying to find out who was working on this system, genuinely, I’m sorry! That sucks! If you can frame a need in terms of how it benefits the reader, there’s usually declarative way to state it. Here’s how I ultimately ended up putting it:

I feel like my communication of known issues isn’t effective. This sprint, I reported this issue <link> when I submitted my work. I communicated it to the team by posting in our company chat, tagging everyone, and posting a picture there. I felt like this was the best way to reach the entire team. However, three people pinged me in chat bringing up this issue as though it were something new. How can I more effectively communicate known issues to the team?

Does this achieve the goal of getting my team to read known issues? I think so, yes. I’m not telling them to do anything or change anything directly. I’m simply stating what happened to me, making the assumption that people will see it as a problem, and then asking what the best way to solve this problem is. I’m not lying. I’m not concealing anything about how I feel. Okay okay, I may have felt a little better if I used some choice four letter words, but still, the core of my message is there. If you’re like me and are a liberal applicator of the f-bomb, here’s another lens to view this through: is the little rush I get from saying fuck to someone is more important than actually getting people to read the known issues? If I spend 5 minutes fuming at my screen, but the next 2 years with people not repeating this mistake, is it worth it? I think the answer to that one’s pretty obvious.

Why is this better? I think a lot of engineers, including former Yuzu, would point at this and say how wasteful it is. I wrote 4 sentences, almost twice as long. I never directly asked for what I wanted, even though I knew what needed to be done. Don’t bullshit me. Just tell me what you need! Be honest!! Yes, this 100% takes more time to write, there is no question there. I still wouldn’t call this a waste though. The fact of the matter is we’re all human. How we feel about something is just as critical to us acting upon it as us understanding what we’re being asked to do. Even the most calculating and logical engineers have to grapple with this (and if you don’t, I envy you, seriously). If you have to spend a little more time thinking about how to write something, and the end result is that you reform the behavior of your entire team, AND establish guidelines that prevent this problem from happening in the future I’d have a hard time labeling that as a waste. Like many things, it’s wasteful in the short term, but pays huge dividends in the long term.

Beyond the baseline goal we were setting out to achieve, the second version also opens the door to other solutions. Maybe company chat actually isn’t the best way to communicate known issues. Maybe the reason that my communication wasn’t read is because I sent it out the week back from a long vacation for everyone, and this was just a one time problem. Maybe what I wrote was way too long and wordy, so people just decided not to read it. I will most likely never be given the answers to these hypotheticals if I had ordered people around. If you look at it from a scientific perspective, a benefit of declarative conversation is that it is more likely to give you more data about a problem and potential solutions to a problem than imperative conversation usually does. Why? It’s much easier for people to give their opinion when they feel they’re being asked for it than when they’re made to feel their opinion doesn’t matter.

Conclusion

Imperative and declarative communication styles are two ways to communicate your needs. Imperative tells people to do something. Declarative tells people facts or feelings. Due to bugs in how humans process emotions in relation to facts, declarative communications are usually far more effective at getting needs met than imperative communications are. I don’t mean to imply that imperative communications are never useful. There is definitely a time and place for orders. There are definitely situations in which there are a very limited number of correct choices, or you need something very specific from someone, and don’t want to leave room for argument. But I think the vast majority of needs communications exists outside that realm. Declarative also opens the door to conversation and cooperation more-so than imperative communication does by lowering the barrier to presenting alternatives and working together. I think long term, declarative communication is the winning strategy.

--

--

Yuzu

Professional games programmer, aspiring game designer, musician, DJ