Here's one quick way to tell how good a colleague is: How does he respond when he finds out he made a mistake?
In my youth, I had a little obsession with Ayn Rand's novel, Atlas Shrugged, and with the Objectivist philosophy behind it. Or maybe I just had the hots for Francisco, the dashing mysterious character who broke Dagny's heart. I can still recite whole passages by heart, even though I did, eventually, get over my fascination with the book. (Eventually, most of us survive our 19-year-old idealist phase, for good or ill. I do still love Atlas Shrugged, though when I re-read it, I skip over the preachy parts.)
However, an incident today brought to mind one Atlas Shrugged scene that I think is an important lesson for developers — or at least it's another way to explore your relationships with your coworkers, and perform a mental check on oneself.
My friend was complaining about "Frank," a programmer he works with (who was the focus of two earlier posts, When the Job Changes But the Programmer Doesn't and Saving Frank's Job — Yes, dear reader, Frank is still employed). The irritation du jour: When my friend demonstrated that Frank had written his code poorly and showed how to fix it, Frank became sullen and petulant and whiny. Frank didn't want to hear he had been wrong.
My friend's criticism wasn't meant to put the guy down; it was intended to be mentoring, useful feedback from someone more experienced who could help Frank become a better programmer. By Frank getting defensive, he was preventing himself from additional wisdom. (Frank was also pissing off a senior developer who can influence his career; maybe that's another issue. Or maybe not.)
One of the delightful side effects of my job is that my opportunity to interview and interact with some of the smartest, most accomplished people in our industry. And I long ago observed that they have two things in common. They attribute at least part of their success to luck. And they are always looking for opportunities to learn from other people — to find out where their own knowledge is lacking or incorrect. "Being wrong," to these famous people, is an opportunity to get smarter.
I'm obviously a great fan of mentoring and I easily can gush about what people can accomplish by learning from one another. In a regular office, you might be lucky enough to work with someone who takes you under her wing and gives specific advice about how to improve your code. Or a senior practitioner encourages you to talk his ear off about your hard choices and suggests solutions you didn't think of. Or, in an online community, some stranger helps you figure out what's wrong with your code... and helps you get smarter. All those require you to embrace the possibility that your existing assumptions are wrong. Because the first step in learning is to recognize that you don't know everything.
The people who look for lessons from "I was wrong" (so I can make better decisions next time) are, of course, the people with whom you want to work. Some might call this "egoless programming" but I think of it as something larger: an appreciation of rightness, no matter who the Right Person is.
As the brilliant-but-flawed scientist Dr. Stadler explains to Dagny Taggart in Atlas Shrugged: "Miss Taggart, do you know the hallmark of the second-rater? It's resentment of another man's achievement. Those touchy mediocrities who sit trembling lest someone's work prove greater than their own — they have no inkling of the loneliness that comes when you reach the top. The loneliness for an equal — for a mind to respect and an achievement to admire. They bare their teeth at you from out of their rat holes, thinking that you take pleasure in letting your brilliance dim them — when you'd give a year of your life to see a flicker of talent anywhere among them. They envy achievement, and their dream of greatness is a world where all men have become their acknowledged inferiors. They don't know that that dream is the infallible proof of mediocrity, because that sort of world is what the man of achievement would not be able to bear. . . . Of what account are praise and adulation from men whom you don't respect? Have you ever felt the longing for someone you could admire? For something, not to look down at, but up to?"
I like to think that you would prefer to work with someone you can look up to, and that you would be dismayed to have a coworker who's motivated by proving how right he is and how wrong you are. I wish I could give you some clever way to find out which sort of person you're dealing with early on, such as during the job interview process. Perhaps there is some kind of early warning system, but I don't know what it is; if you have suggestions, by all means add them to the comments here. In reality, this appears to be the kind of observation you can only make over time.
But I think it's worth the time to consider this: How many people do you work with fit that definition of "second-rater"? And how the heck can you avoid them?
Am I wrong?
This story, "Looking Forward to Being Wrong" was originally published by JavaWorld.