“I don’t understand”
I’ve noticed that the most mature and accomplished developers I’ve worked with are also those who most frequently say “I don’t understand” when they’re listening to a technical explanation. This has been the case with coworkers both at Fog Creek and at Khan Academy.
In one way, it’s counterintuitive. Shouldn’t the senior devs already know everything? But it makes a lot of sense. Those who are most secure in their own abilities are the most comfortable to admit when they haven’t fully wrapped their minds around something. Newer devs assume that their confusion is their own fault. They don’t want to interrupt others due to their own perceived shortcomings.
New devs should try to really get just how common it is to not fully understand a technical problem. Most tech stacks have crossed the threshold of one person being able to hold the entire codebase in their head, especially at companies that are hiring. And once that threshold’s crossed, you’ll start hearing from people about the new javascript rendering framework or the latest mapreduce pipeline or a bug in the deploy script or a proposal for a new caching pattern, and a little voice in your head is going to start saying, “Wait…I don’t get it.”
“I don’t understand” is the perfect response. You’re not insulting anybody. You’re not showing weakness. You’re building a culture of respect for how smart everybody is, because you know that after a few minutes of explanation you will get it.
Either that or you’ll find a bug. I like to think of “I don’t understand” as a kind of reverse rubber ducking. Except in this version, the duck comes alive and quacks and stomps and “I don’t understand"s all over your keyboard while forcing you to explain various things.
"I…don’t understand.”
It’s most said by the best, decades after they’ve become a master. We newer devs should follow their lead and get rid of any stigma associated with those words.