I'm a developer. We're not well known for our communication skills; at least I know I had my problems. Most of them came from the fact that my natural tendency is to ignore emotional cues and to dwell on facts alone. In many cases, that works fine. Sometimes, though, it creates unnecessary friction and can upset people.
As a consultant, mentor and coach, I had to communicate better. Practice makes perfect. I strongly advise you to do it. However, if you like to stay the way you are, but oil your interactions with non-geek entities a bit, I have a pattern for you. This pattern works equally well for written and spoken communication:
Acknowledge
State
Clarify expectations OR
We're all human, and we all need to know that we were at least heard, if not understood. The acknowledgement serves this specific need, allowing the statement to be easier received.
Here are some ways to acknowledge:
'Thank you for …' - whatever your conversation partner emailed you (document, opinion, ideas, facts …)
'I understand' - useful especially on social media or face-to-face conversations
'That is a good idea' - if you really believe it is and you want to ask more questions/build upon it
'That's interesting' - generally to introduce competing arguments. You can feel the 'but' hanging out there
'Sounds good' - if you have nothing else to say
Unless the conversation ended, you still have something to say. This is where you start saying it. Here are a few pointers:
Make your intent clear from the beginning.
If it's an opinion, start with "I think" or "My view is" etc.
If you want to build upon a previous idea, start with "To add to your …".
If you have arguments against what was said, say "I have a few arguments I'd like to discuss" or "There are, however, some things I'm worried about" etc.
When discussing in person, if you speak for longer than 2-3 minutes, your partner won't remember what was discussed anymore and this diminishes the purpose of the conversation. Instead, raise your issues, ask your questions, state your arguments etc. one by one. It's harder to do this at first, but it gets easier and it creates a nice feeling of useful back-and-forth conversation.
When sending emails, know that almost nobody reads large emails. They will probably skim-read your statements and might not understand them completely. Instead, send short statements and try to organize a business call or a face-to-face meeting for details.
Don't state anything personal. You're discussing ideas, not people. Some people think it's cool to communicate in statements like "Surely you think that …", "This is stupid" or "You're wrong". Generally speaking, these lead to unpleasant discussions and lost focus.
You've stated your arguments, opinions, facts, questions etc. What is the next step? Maybe it's clear for you, but is it clear to your partner?
Here are some ways to clarify your expectations for what should happen next:
"Please know that I will need these questions answered before moving forward"
"We should analyze these arguments before making a decision"
When communicating by email, the next step is to close. I use one of the closing formulas, depending on my relationship with the other person: "Thanks", "Cheers", "Kind regards" etc.
In face-to-face communication, you should wait until your partner processes your answer and listens to it. Some people, including myself, get impatient and start talking again. That doesn't't help the conversation since you're adding more words on top of the previous statements and your partner might get annoyed.
That being said, it is sometimes useful to ask a short helper question if you see it takes a long time to process. For example: "I see you're thinking. Do you have any questions we can discuss?".
After a while, your conversation will reach its end. You both have no more ideas or things to say. If you're in a meeting, it's time to clearly state next actions, who will do them and by when. If discussing over email, you can just write "I have nothing else to add to this thread at this time" and close. Either way, make it clear that you don't have anything else to say.
It could happen that your partner will answer with more questions or ideas, and keep the conversation going. Or, they might agree and stop the conversation altogether.
If you're on the receiving end of the closing message, really close the conversation. It's important, and many developers skip this. A simple "OK, thank you" is enough. Two reasons for doing that: people want closure, and emails get lost sometimes.
Before you go, one last hint: answer all your company emails in 48 hours. Even if you don't have time to look into details, a short "thanks, I will think about this and come back" will help (remember the acknowledgement step).
Here it is, a four step pattern for writing emails and having better conversations as a developer. Try them out!