As software developers, we're great at communicating with computers. But we're typically not so great at communicating with other people. Esther Schindler's recent interview with Steve McConnell illustrates how this aspect of our personality tends to work against us:

Marketers, sales staff, and upper management all tend to be better negotiators than technical staff, so when marketing (or whoever) says "get it done," technical staff ends up losing that negotiation. But it isn't really the technical staff that loses. The business loses, because it sets up a situation in which it pretends for months or years that it can do something that it can't.

We present our best estimates, but we aren't assertive enough to stand up for them.

Because we don't fight for our estimates, we get negotiated down to an untenable position:

Executives and managers tend by nature to be more assertive than rank-and-file technical staff, which is not a problem. The problem is that they assume, incorrectly, that technical staff will be assertive with them if they need to be, and that isn't the case. Technical staff often feel that they're being very assertive, but an objective observer would probably say the technical people cave in far too easily. Business executives with non-technical backgrounds don't have any objective ability to judge the analytical validity of an estimate, so they probe the person they're talking with to see where they hit that person's point of discomfort, and they make an assessment based on that. Technical people who don't push back hard enough, soon enough, are implicitly sending a message that they can do more than they really can. When I talk with executives, I emphasize that they need to account for the fact that technical people are intimidated by them. Most executives assume the people around them are as assertive as they are, but that isn't true – there's a reason that they're executives!

Assertiveness doesn't have to mean loudmouthed and obnoxious. Nor is assertiveness "getting all up in someone's face". Assertiveness is, quite simply, the ability to convey your position to others as an equal participant in the conversation. Dr. John Welford explains:

To be assertive is not, as some people imagine, to be overbearing and aggressive, but to be straightforward, open and honest. It means that you relate well to people, able to express your needs freely, take responsibility for your feelings and stand up for yourself when necessary. In conflict situations you seek, where possible, to reach a 'win-win' outcome, in which the needs of all parties are fully acknowledged.

I'm reasonably assertive, to the point that I've found myself interceding on behalf of my teammates. But I really shouldn't do that. I should encourage them to stick up for themselves, instead.

If you'd like to be more assertive, I recommend starting with Dale Carnegie's classic book How to Win Friends and Influence People. Dale's central thesis is truly timeless: show a genuine interest in the people you meet, and you'll find it reciprocated tenfold. It's the kind of book you should re-read every year, and it's short enough to make that possible.

Beyond the Carnegie book, it's clear that being technologically savvy isn't enough. It's important to cultivate your negotiation skills and assertiveness, too, if for no other reason than to avoid being easy meat at your next salary review. One of my friends took the initiative to sign up for a public speaking class. Improv classes would also work.

What are you doing to improve your assertiveness?