I recently asked a couple of experienced software engineers (on different occasions) this question:
Tell me about a bit of useful feedback that’s stuck with you.
In each case, the answer was immediate and deeply personal. Each engineer described direct critical feedback they had received from a coworker years ago, about their communication style. When I say direct, I mean direct – maybe even harsh. They each took this feedback seriously, and have since worked hard to change their communication.
I know it’s a small sample, but I was surprised at the similarity in their answers, and the clarity with which they recalled the particular incident. There are probably several reasons for it. The most jarring feedback is most likely to stick in one’s memory. It’s also most likely to be a source of conflict, but maybe that’s what drives people to change.
My own answer to this question is not so direct.
I’m a little embarrassed to admit that the first thing that came to mind was not criticism I received from a colleague, but praise. I had a roommate in undergrad that once described the first time we met. We were in a freshman CS course together. The class, including the professor, had been puzzling over a problem on the whiteboard for a while. I, having said virtually nothing in class prior to that day, solved the problem at a stroke.
I’m sure he meant it as a compliment, but for me the story was a wake-up call. I was a smart kid, and a quiet kid. I quickly learned the synergy of those two traits, embodied in the phrase “Better to remain silent and be thought a fool than to speak and to remove all doubt.” (A sentiment with a long history.) By keeping quiet unless I knew the answers, I could look smarter than I was.
The problem with only speaking up when you know the answer is the missed opportunities to learn the answers you don’t know. I had enough model learners in my life to know this, but for some reason it didn’t sink in until I heard my roommate describe my behavior. Besides being obnoxious, I was wasting my time in school: Defending my ego when I could be learning more.
So I resolved to admit ignorance whenever possible. Asking questions when it seems like everyone else ‘gets it.’ Sharing my work before it’s finished. Saying “I don’t know.” By exposing the gaps in my knowledge I tried to become more teachable, not just by teachers but by peers as well. Since then I’ve learned that this habit maps to several desirable software engineer traits: Communication, curiosity, humility. The best engineers I’ve met do this too. I think it’s an important thing to learn.