Dear new developer,
When you are coding, you must be precise. If not, the compiler yells at you (if you are using a statically typed language) or you have runtime errors (if not). A mistake as simple as misspelling a word or omitting a single quote can and have caused me debugging pain.
This rigor is also important when codifying what you are building in a written requirements document, ticket or other format. Agreeing on terms, error paths, and interface specifics, to the best of the team’s ability, prevents issues later.
This doesn’t mean requirements won’t change (they will) or that you should stick rigorously to them (you should build the right software, not the wrong software originally agreed to). But walking down as many paths in your mind as you can before writing code will help you build the right thing. There are many times when I’ve asked a question or two about a piece of software someone wants built and they’ve said “Hmm, I didn’t think about that case.” Thinking about as many examples of “that case” as you can before any code is written will save everybody grief.
But you know where this precision is not helpful?
When someone, especially someone non-technical, is asking you a question about a technical system.
Then, answering the exact question they asked may make you feel good, but it isn’t going to provide them what they need. I know it feels good to answer something deeply and precisely, because I’ve enjoyed it. But it wasn’t what was needed.
What you should do is try to understand what they are trying to learn. This may involve asking more questions, repeating what they are saying back to them, putting yourself in their shoes, or sitting back and listening to the entire context they are providing.
What you should absolutely not do is provide a technically correct answer, whether detailed or not, that doesn’t meet their needs. Instead, give them the answer they need, not the answer you want to give.
Tips for knowing if you are not communicating at the right level of abstraction and are not helping the questioner:
- You find yourself rambling.
- Their eyes are glazing over.
- Their attention is wandering.
If you aren’t sure, ask them!
“Am I giving you what you need with this?” is one of my favorite questions.
Another one is “I’m going to rephrase your question; can you tell me if <rephrase> is what you are asking?”
Computers require one kind of precision; humans need a different kind. Adjust accordingly. Focus on getting someone, especially a non-technical person, the answers they need.