Edited by Nina Miller
When you first got out of school you probably thought, "Gee, I'm going to have a nice, quiet, low-stress desk job and just enjoy the good life, programming my heart out. Hah!!" Then you land your first programming job and find it's not the picture you had in mind. You find yourself in a team of individuals, each with his or her own idiosyncrasies and personality disorders. So you might ask yourself, "Did I sign up for my dream job, or a stint in the mental institution?" Before you high tail it out of there, please consider the following words of wisdom: All programming jobs come with a strange mix of people, so find ways to cope and survive in the milieu you fell into. Consider it just as much a part of your job to successfully interact with your cohorts as it is to write a well designed piece of software. In the end, both tasks are equally important.
If you never coded on a team before, you may ask yourself, "What sort of challenges might I run into in day-to-day encounters with programmers?" Here are a few:
The Control Freak
That special someone on your team exhibiting this quality will stand out like a sore thumb. He will want to do his task and yours. You can never do it right no matter how hard you try. Go ahead and start coding...it's already wrong to the control freak. And whatever you do, don't argue with him, because he has a certain way of doing things...his way (and by the way, it's the only way!). An extreme control freak will eventually take everyone's tasks and assigns them to himself.
Dealing with the Control Freak
I struggle with a good answer to this problem. If a control freak is really good at what he does, then he may be the best one to control the project. But you don't want him to do all the tasks. Convince the control freak that you can take some of the stress out of his life by doing a piece of work that will make his life easier.
Warning: Trying to convince the Control Freak of anything might not have any affect whatsoever.
Another solution may be to talk to the control freak's manager (assuming the control freak is not the manager), and to explain the situation delicately. Let him know that you need the tasks to be more evenly divided so the project can be done efficiently. Keep in mind that a good manager never lets a control freak get out of hand, but often the control freak is stronger than the manager and too vital a player to piss off. Again, a tough situation.
The Secret Coder
The secret coder is actually another kind of control freak that codes in his own world oblivious to the life and fauna around him. As far as the secret coder is concerned, there is no team. In fact there is no office, only some conjured-up world of coding where the secret coder and computer live happily. Occasionally, someone steps into the secret coder's world through a source control management system, or some annoying interruption such as a team meeting (but that's okay, because the secret coder can code in his head during the meeting). The danger of the secret coder is that he is trapped in the cocoon of his own world, so that ultimately, his piece of the system may not coexist in the rest of the team's world.
Dealing with the Secret Coder
Try periodically to bring the secret coder back to earth. Make it a habit to talk to the secret coder about the whole pie and insist that he learns how his piece of code fits into the system.
You may think that the perfectionist is like the control freak, but not exactly. The perfectionist is critical of his own code in such a way that he can always make it better. Better, better, better. The end result...the perfectionist never gets anything done. He just continues to improve the code to a point that it's so optimal, so efficient, so streamlined, and so...late.
Dealing with the Perfectionist.
Convince the project manager to put the perfectionist on a schedule. The perfectionist needs to hit deadlines, and if he doesn't hit them, he should be forced to give the piece of code to someone else.
Sometimes (and hopefully rarely), you get someone on the team who contributes little in the form of technical input but knows how to work the corporate system. He can BS their way through any project but doesn't get anything tangible done. Yes, he can "talk the talk" but he mostly does a lot of dancing around.
Dealing with the Politician
Ask the manager to assign him a task and a deadline. Warning: If he doesn't complete the scheduled task, cut him loose. He can destroy a project.
The soldier codes what he is ordered to code, but that's it. He doesn't go beyond what his is asked to do. The soldier is an asset to the team because he accomplishes specific finite tasks, but it can be frustrating when he doesn't embrace additional necessary tasks.
Dealing with the Soldier
Encourage the soldier to join you on leading a project. This forces him to consider the entire project instead of just his narrow task. He will be surprised about what he can accomplish once he starts thinking for himself.
Many of you reading this column may be thinking, "Yeah, I know people like that, but your advice is useless. I've tried everything, but the control freak is too impossible, the secret coder is in another universe, the perfectionist is too anal, the politician is too connected, the soldier is too stubborn. Nothing (and I mean nothing) is going to change these people."
Yes, this is all true, but then you have to ask yourself, "Who else do I have to work with?" Sometimes, the only solution to these problems is to channel the individual programmer's personality to a part of the project in which they perform best. Perhaps the control freak would be better off managing a project rather than touching any code. Perhaps the politician should be the one dealing with outside groups to smooth communications between the control freak and other players. Maybe the perfectionist, soldier, and secret coder can get together to accomplish tasks set out by the control freak. Don't lose hope! Many programming projects have been accomplished in spite of the impediments of multiple personalities. Even if you run to these personality obstacles every day, consider it part of your responsibility to work with them, and to help them channel their weirdness into getting the project done.