Brandon Flowers of The Killers fame has a point:
“How do you know you’re right, if you’re not nervous anymore?”
It turns out I work in a profession that possesses a serious lack of humility and empathy.
Recently, I’ve been witness to several “design sessions” that degenerated into everything short of a shouting match. Given that we weren’t in a conference room in an office building, I perish to think what it may have come down to.
“Cut me, Mick.”
I’ll admit straight up, I’m a bum. I’m young and stupid.
But it’s been my experience that, in this strange amalgam of professional service and software design, at some point there’s a disconnect between what it is we are brought in to do, and what it is we actually attempt to do.
I’ve had conversations with a few others in this regard, and it seems to happen to almost everyone.
I understand that we all want to be right. I do too, even though it doesn’t happen. I also understand that we do become consummate professionals; smart ones at that, who bring experience and knowledge to the table that we want to share.
Also fantastic.
However, what I find to be completely counterintuitive is that, rather than accept, discuss, or incorporate our ideas into the overall design, or even incorporate others ideas into our own, most designers end up defending their own designs as if they were personally attacked.
What exactly is this reaction?
I personally buy heavily into the theory of egoless programming: the idea that the code you write, the job you do, isn’t a direct reflection of yourself as a person.
You are not your code. You are not your design.
The final goal of any software project is to create a tool. If you are your code, guess what you just called yourself. No, really. I’ll wait*. (Hint – Try the transitive property of mathematics: If A = B, and B = C, then A = C, except for large values of two)
Frankly, the rest of the scientific world has to adhere to the peer review process. Why shouldn’t software design require similar rigor? Case in point, see the software development subtopic of said article. It’s anorexic at best.
Personally, I believe egoless programming allows us a security blanket. We can feel free to submit ideas, designs, code, even stupidity, and not worry about having to be right or wrong. Plus, in any case, there would be no need to prove that one approach was the best, since it can be re-examined, then improved.
Sometimes, it’s good to be nervous.
- Wow, you really are such a tool.