(Or “When is talking to each other not communicating?”)
I have a recurring nightmare that as a child, I learned all the same words that everyone else did, but somehow I ended up learning a different language. I was in a meeting last week where this seemed to be coming true. I made a statement trying to clarify a “big picture” issue.
Here is a snippet.
Me: “There is no feedback built into our workflows.”
Another Meeting Attendee: “Yes, there is. I send an email back to the person before me in the workflow every time I get a request.”
I hate it when that happens. I deliver an opening line, somebody says something true, and it throws me completely off track. It took me almost a week to get back on track and figure out what went wrong and how to explain it. I eventually realized we were not talking about the same thing.
I am an old-time engineer, and I think about everything like this, I apologize, but bear with me.
The other person was talking about what I would call a handshake. A handshake is useful in communication systems with an unreliable medium. If you have used the Internet, you have probably done this without knowing it. The transmission control protocol (TCP) incorporates a handshake to ensure that the devices between two hosts on the Internet actually deliver the packets from the sender to the receiver. When the receiver gets the senders information, it sends back a message that it got it. If the sender does not hear back from the receiver, it tries again.
That is how a handshake works. That is how it manifests itself in our workflows. We send a work order to the next queue in line. The receiver sends back an email saying they got it. Is that feedback? Yes, technically it is. Unfortunately, it was not my point. It just took me a week to realize it. Sorry. I am a little slow.
So, if a handshake is a kind of feedback but not the one I meant, what did I mean? That is the problem. I do not think it has a name. Just “feedback.”
The feedback I am talking about is the kind I learned about in Circuits 101, where you connect the output of an amplifier back to its input to allow the amplifier to change its behavior based on what is happening at the output.
Geeky. I know.
Let me give a more relevant example in the form of a conversation with an anthropomorphic freezer that uses a handshake, but not “feedback” in the sense I am using it.
User: “Honey, I’m going to put this steak in the freezer.”
Controller: “Cool the freezer compartment.”
Chiller: “Cooling away!” ←Handshake
…time passes…
User: “Hey! The freezer is a big block of ice. Where’s my steak?”
Controller: “What’s going on?”
Chiller: “Just doing what you asked.”
Controller: “So you’re saying this is my fault?”
Chiller: “If the shoe fits…”
Controller: “Want to step outside and say that?”
Chiller: “You and what army?”
User: “Hey, guys. What about my steak?”
Chiller: “Get lost. This is an internal issue.”
Controller: “Yeah. If you knew anything about refrigeration, you wouldn’t need us in the first place.”
User: “Honey? I’m going to Big Box for a new freezer. This one’s broken!”
It turns out that the new freezer includes the type of feedback I mean. Here is the new exchange.
User: “Okay, I got my steak moved to the new freezer.”
Controller: “Cool the freezer compartment.”
Chiller: “Cooling away!”
…time passes…
Chiller: “It is cold enough.” ←Feedback
Controller: “Okay. Stop cooling.” ←Corrected output
Chiller: “Stopped.”
…time passes…
Chiller: “It is getting warm in here.”
Cooler: “Okay. Start cooling.”
Chiller: “Cooling.”
…time passes…
Chiller: “Frost is starting to build up.”
Cooler: “Okay. Start heating.”
Chiller: “Heating.”
…time passes…
Chiller: “It is getting warm in here.”
Cooler: “Is the frost gone?”
Chiller: “Yes.”
Cooler: “Okay. Start cooling.”
Chiller: “Cooling.”
…time passes…
User: “Honey? There’s a steak in the freezer. Could you get it out so we can grill tonight?”
That is what I meant when I said “feedback.” The system gets information about how close its actual results match its desired results.
How does that fit with our group working together?
Suppose we have a big system to install for a particularly visible application, but the vendor of the equipment has made a change that makes it so it cannot work.
Designer: “Here’s a work order for the big design.”
Installer: “Got it.”
…time passes…
Installer: (to himself) “This doesn’t work.”
…time passes…
User: “This doesn’t work.”
…time passes…
Installer: (at bi-weekly meeting) “The vendor of the equipment we used in the big system installed two weeks ago made a change and now it doesn’t work.”
Middle Managers: “What are you talking about?”
In defense of the installers, they brought it to the only forum they had available: the bi-weekly meeting. The drawback is that those people are out of the loop. In fact, that is the problem. There is no loop to be “in.” Our workflows always go forward. There is no way to send that message back to provide input to the designer so they can change the design to more closely match what was wanted.
Here is what I would like to see happen.
Designer: “Here’s a work order for the big design.”
Installer: “Got it.”
…time passes…
Installer: “The vendor made a change and it does not work like that any more.” ←Feedback
Designer: “Okay. Try this instead.” ←Corrected output
Installer: “Got it.”
…time passes…
Installer: “That worked.”
…time passes…
User: “I like working here.”
How do we make that happen? How do we make it so the folks actually doing the work can work issues out amongst themselves rather than having to have big meetings with a lot of middle managers who do not know what is going on in the first place? How can we do it before our users get a new freezer?