People Skills 101
You‘re probably thinking to yourself what does people skills have to do with writing software? After all, isn‘t being a software engineer made for people with poor social skills? Consider for a moment that very few of us create software in a vacuum. Most of us write our software with a team, and that is where people skills matter. Listed below are some rough guidelines to good people skills in the context of a software team.
Critique the Code, Not the Coder
Most open source organizations have this nice cliché as part of their community rules. It‘s a good start, but there are different kinds of critique. If you liken it to the use of force, you have a couple of choices. You can use what amounts to nuclear attack with all of its collateral damage. You can also use a precision strike intended to address one problem. Believe it or not, there is place for every type of critique. The trick is to use the right amount of force for the offense. If it is someone‘s first attempt at bringing something new to the table, it makes sense to be gentle with the guy. If someone is trying to force their agenda through after being repeatedly told “no”, then it makes sense to take the gloves off.
Since email is usually the primary means of communication with dispersed teams, more care has to be taken when you write them. We infer tone from the language in the email, so what isn’t said is just as important (or sometimes more important) as what is said. When you use harsh language when it isn‘t warranted, even if it is toward code, the collateral damage takes out the coder as well. Communication is a tough subject. Try to put yourself in the person‘s shoes and judge whether or not you might be a bit heavy handed.
When a Decision is Made, it‘s Made
For better or worse, whether you agree or not, when a team arrives at a decision they need to follow through with it. When the decision isn‘t finalized yet and it is still being debated, you have a responsibility to add your input. If you are silent at that stage you will have lost any input later. Once a decision is finalized, like it or not it is the will of the team. You then have two choices: find another team, or swallow your pride and go with it.
There is nothing worse than a broken record constantly rehashing the same thing again and again. Why should a team have to keep justifying a decision to you? If everyone else is OK with it, or at least doesn‘t see any harm with it, what makes you so important that everyone needs to answer to you? One of the definitions of hostility is “opposition or resistance to an idea, plan, project, etc.“. No one likes hostile environments, or hostile people. The action of rehashing a decision because you don‘t like the outcome is creating a hostile environment. Should you continue pursuing that course of action, you will find yourself alone.
Mean People Suck, Play Nice
It shouldn‘t need to be said, but apparently it does. We‘ve all experienced someone who has the personality that grates your last nerve. It would be better to listen to fingernails scratching a chalkboard than being around mean people. How can you tell if you are being mean? Mean people insult, demean, and are otherwise critical and selfish almost all the time. If all that comes out of your mouth (or is written in email) is generally negative, you are a mean person. If you always have to ram your decision through no matter what, you are likely a mean person.
Playing nice means using a little give and take. Give props when they are due. It means being honest, but not brutal, with both yourself and others. If someone came up with something you wouldn‘t have thought of, but it really works or is cool, say so. If you have a question, ask it. When it comes to teams, it means looking at decisions with the perspective of what is best for the team. Sometimes it means letting a decision you may not like pass, as long as it doesn‘t damage the project. Ugly disagreements have a way of tearing up teams, causing more damage to the project than the decision you might not like.
Playing nice does not mean coating everything you say with sugar. No one trusts “yes men” or people who do nothing but pay compliments. They come across as suck-ups, and there is always the underlying fear of what they really think. The suspicion is that you have a hidden agenda. That is why you should be honest, but not be brutal about it. If you don‘t like something don‘t pretend that you do, but don‘t stand in the way if you don‘t have a good reason.
The bottom line to playing nice is having mutual respect for the members of your team. It‘s hard to be nice to someone you can‘t respect. It feels false and dirty. Try to find something about the person you can respect, and work from there. Building respect is a difficult proposition, so when it comes to people you don‘t know, extend the same amount of respect you think would be appropriate for you when you are new to a group. If they mess it up, that‘s on them. You do need a starting place other than zero to build mutual respect.
