Problem:
Whenever I have a project intro sync with a senior engineer/product manager (Subject matter expert) to gather requirements of a project (say a backend API) - I ask SOME questions and leave the meeting, at the time, feeling satisfied with my understanding of what I need to do and THINK it is clear of what to do. (I usually do not ask clarifications on what I believe are "small details", and leave it to myself to figure out the "small details"). I incorrectly think that asking many questions about "small details" makes me look like an inexperienced/ unreliable engineer.
However-down the line during project implementation, a few weeks later, I realize there are a many ambiguous/unclear details that I need to re-ask the subject matter expert. This happens again, and again sometimes - as a few weeks later, I ask MORE questions - that sometimes make me rewrite a lot of my code, and has me chasing my tail/ making me look like an unreliable/slow engineer.
When someone asks me "Am I making sense? Is this clear to you?" - I ALWAYS say yes too early, without thinking about edge cases/ unmentioned ambiguous details. (I incorrectly think that saying something is clear to me quickly, makes me seem like a sharp/fast-learning engineer.
TLDR:
How can I gather ALL requirements upfront at a project launch efficiently? How do I ensure I am 100% clear what/how to implement a project software-wise? (Especially since I have a horribly persistent bad habit of incorrectly saying details are clear to me, almost in a "happy-go lucky" fashion, wanting to seem like a easy-going engineer, that can pick ambiguous problems up quickly, without much explanation)
THANK YOU! This has plagued me for my whole career.
Whenever someone asks you if everything is clear, just pause for a few seconds and think through whether you can visualize the implementation clearly (lines of code). The silence may be awkward, but it'll save you lots of headaches later.
I incorrectly think that asking many questions about "small details" makes me look like an inexperienced/ unreliable engineer.
When someone asks me "Am I making sense? Is this clear to you?" - I ALWAYS say yes too early, without thinking about edge cases/ unmentioned ambiguous details.
I would try to caution you to move away from a mindset of thinking more about how you perceived by the other party and more into a mindset of truth discovery. This won't make you less easy-going, but it will signal to the other party that you are curious and inquisitive.
I would try to think about:
(I usually do not ask clarifications on what I believe are "small details", and leave it to myself to figure out the "small details").
It's okay to say your thought process out loud and express an opinion given that you list reasons out for how you came up with that opinion. In this case, I would say out loud how you are thinking about the small details and how you can are expecting to implement it in your code and why you decided on doing it this way. Even by thinking out loud, you'll clarify a lot of your own reasoning in your mind.
One tip tip is to create a design doc ahead of time and ask the subject matter expert for comments. They should be able to flag anything that seems too vague, ambiguous, or lacks understanding.