If you work with a group of people, chances are there’s a peer whose words seem to carry extra weight due in large part to their scarcity. There’s an air of, "If Bob’s talking, it must be important" or "When Bob speaks, it’s worth listening". People value Bob’s words.
There are probably several people whose words seem to carry less weight due in large part to their abundance. "There goes Sam rattling on again" or "When Sam stops talking we can get back to the real discussion". People discount Sam’s words.
The Sams of the world seem to always be talking to anyone who will listen. Even to those who won’t. It’s not that they never say anything valuable, it’s just that so much of what they say is noise that their peers build up a filter that defaults to "ignore". The Bobs of the world, however, seem to speak only when they have something to contribute: data, analysis, examples, solutions, etc. If something Bob was going to say gets said by someone else, Bob checks it off his list and remains quiet.
In more concrete terms, think of it like this: If you say 20 things in a meeting and 5 are meaningful and 15 are noise, then only 25% of what you say is meaningful. If you cut out half of what you say (all noise) and only say 10 things, where 5 are meaningful and 5 are noise, you’ve now doubled your ratio and 50% of what you say is meaningful. Guys like Bob may only say 5 or 6 things, but the value is between 80% and 100%. With those kinds of odds, it pays to listen to Bob.
Every developer knows that unit tests are a good idea. Most developers know that using version control is a good idea. Some developers know that a "one-click" build is a good idea.
As you walk the aisles of the programming section at a bookstore, or browse the online equivalent you’ll see knowledge galore. How-to, what-to, why-to out the wazoo. With all this knowledge so readily available, why aren’t there more good or great developers?
The Big Swinging Developer is rarely judged by knowledge alone. As always, you have to be at least "good", which involves knowing a thing or two, but it’s your beliefs that will set you apart from everyone else. I happen to believe in isolating changes/problems, repeatable builds, and testing. Because of these beliefs, I’ve learned a lot of techniques to help me practice them.
I’ve been working on a web app this Memorial Day weekend. I’m a development team of one. No one is watching me, checking up on me, or even working with me. I have a one-click NAnt build that deploys to a Virtual Machine and have been branching my releases in my hosted Subversion repository.
You practice your beliefs because you can’t imagine doing things any other way and that defines you as a developer more than any single technology or language ever can. So, what do you believe?
I have plenty of mantras: "Isolate changes", "Be repeatable", "Put yourself in the user’s shoes", and several others. These are things that I believe, practice, and preach. My battle cry, however, is something I actively pursue and defend. If someone isn’t isolating their changes or is failing to think about their users, I’ll probably say something. If someone is being unclear, I’ll definitely say something.
In Braveheart the battle cry was, "Freedom!". In Viking Quest it was, "Victory!". For me, it’s "Clarity!".
On page 48 of Career Warfare, author David F. D’Alessandro mentions the statistic that eight million Americans have IQs over 130 and that this makes smart people "as common in organizational life as bad coffee". Reading his thoughts on the subject reminded me of several ideas that keep recurring with my own co-workers.
Smart Isn’t Enough. As D’Alessandro points out, smart people are pretty common. Being smart is the cover charge and if you aren’t, then chances are you won’t get past the velvet rope. Some clubs have a higher cover than others – Google, for example. Once you’re inside, though, no one else who paid the cover charge is going to be impressed that you made it in.
Smart != Good. Being smart gives you potential. It’s how you use that potential that counts. If you are absolutely brilliant and create something that kind of sucks, it does not matter how smart you are. Stuff that sucks that was created by idiots is roughly equivalent to stuff that sucks that was created by geniuses. As a matter of fact, I might even have a preference for the idiot version since it’ll probably be easier to figure out and fix.
Smart Is a Vector. Most people focus on the magnitude portion of being smart and ignore the directional component. What’s worse is that they often apply the magnitude to arbitrary directions. Even worse than that is applying the magnitude to multiple directions simultaneously and start assuming that someone who is good at one thing will be good at a bunch of others simply by being "smart". This is dangerous before the fact because it sets people up for failure. It’s almost worst after the fact because it will be used to explain why something can’t be done, and therefore not even attempted: "Bob tried to create a distributed .NET app and screwed the pooch. Bob created something similar in Java and it was awesome. Bob’s very intelligent, therefore .NET sucks and can’t work correctly." Oy vay. How about "Bob sucks at .NET and, therefore, Bob should have either gone to a Java shop where he could flourish" OR "Bob should have spent a little more time getting smart in the .NET direction"?
You’re Never Too Smart to Be Wrong. I think that the most important thing that you can do to reach your potential and put your intelligence to work is to know yourself. Know what you’re good at and recognize when a task just isn’t for you. Let it go to someone who is actually smart enough (magnitude) in that way (direction) to do a good job. If the direction is something that you’re interested in, then pitch in so that you can learn something and take a bigger chunk of the work next time. Don’t, however, believe that since you’re smart that you’re universally capable. Don’t let others believe it, either, or you’re bound to wind up like Bob where no one can help/save you because they think (because they were repeatedly told) that you were too smart to be wrong.