I work as a Training Analyst and have been getting my feet wet with the full stack development side of things. I have experience with coding as a database developer, and I used to teach a communication training to IT professionals. In practice, while it might be “more efficient” to separate people based on audience of “technical” and “non-technical”, I’ve found this to be not all that useful. Instead, I think what @lisalisaj mentioned is very effective for all audiences.
When meeting someone new, I always start out by asking them what do they know about X? That helps set the stage for what level of complexity we can get into. From there, it’s all about tapping into things they already know and making connections for them as much as possible. I usually like to say, if you can’t explain something so clearly that a 5-year-old could understand it, you probably don’t understand it well enough yet. The last thing you want to do is assume more technical expertise than they actually have and overwhelm them with complexity. If you start speaking over someone’s head, they’ll quickly get lost and may disengage if they’re not motivated to continue listening. Keep it simple, silly. Leave the complexity to the computers, and let us humans enjoy our more flexible communication styles. Even fellow developers appreciate other developers communicating in simple terms.
The last thing I’ll mention when things are getting really complex is - “when in doubt, draw it out.” I’m a big fan of flow diagrams and stepping through what you want to happen or what you believe is happening. Doing this in a visual form is a great way to have others follow along and share their thoughts as you go and you can course-correct if you’ve missed a detail along the way. This is really useful for pair-programming too to make sure you’re both on the same page.
Anyway, those are a few thoughts I had on the subject. I’m a big fan of Alan Alda’s book “If I Understood You, Would I Have This Look On My Face?” which gets into creative communication methods for scientists and technical people. We might think that offering a very accurate technical overview is helpful, and it might be for our own understanding, but when sharing information with others, it’s important to keep in mind, what do they really need to know about the topic, and then finding a way to connect with them using their own experience as a base.
I’m always up for talking more about this topic too, it fascinates me!