I talk a lot about software development teams. I am a firm believer in the importance of teams and teamwork in software development. However, great teams take great team players and professional developers understand how to be a great team player.
I Hate Lone Wolfs
Lone Wolfs are the developers who take a task, hole up in their office and don’t communicate, or don’t check in code regularly. They just code like a mad-man till it’s done and then toss it back over the wall. I go so far as to say that I hate the Lone Wolf programmer. If you are a Lone Wolf, you may feel that you are being productive, you may be able to crank code like a mad-man, but if you are part of a team, you are hampering the team. Ultimately, you will hurt the project more than your code helps it. That’s a bad thing.
Professional programmers, are team players, even if you are on a team of one. This means that even if you are the only programmer on the project, you need to act like you are on a team. You need to communicate regularly, you need to check your code in regularly, you need to not break the build, you need to stick to the coding standard. Everything you normally do when on a team, you still need to do when you are working alone. If for no other reason than to build good habits so that when you are on a team, you don’t have to remember how to be a good team player.
Part of being a team player means moving with the team; moving as part of the team. Most people don’t consider NASCAR to be a team sport. (I am not interested in whether you think NASCAR is a sport, work with me here.) NASCAR to me is a great example of the discipline it takes to participate in any team activity. Most of the time, the focus is on one person, the driver. Going around the track, swapping paint with other drivers, avoiding crashes, etc. However, even when the focus is solely on the driver, the team is involved. If you’ve ever listened to the radio frequency for a given driver, you know that they are in constant contact with their crew chief, their spotter, constantly talking to them, letting them know how the car is handling, or asking for reports of what is going on ahead of them. Even when the focus is on one person, it is still a team effort.
The unsung heroes of NASCAR however are the pit crews. You only see them when the driver comes in for fuel and tires. They aren’t standing around picking their nose the rest of the time, they are mentally preparing themselves for action. They know what is coming next, so they are mentally rehearsing their part of the next pit stop so that when the time comes, they can do their part. When the driver pulls in, the crew is ready. They move as one, each person accomplishing their task with military precision. Get in, get it done, get back over the wall, debrief and figure out what did not go smoothly, get ready for the next tone. Sounds a lot like Agile programming to me, with 12 second sprints. :)
Here is what you do NOT see in a NASCAR pitstop.
- You do not see one of the tire carriers deciding they want use a different tire than everyone else because they understand it better.
- You do not see the “gasman” decide to try a new fuel one stop because they read on Stack Overflow that it is faster.
- You never see one crew person suggest that they switch from Ford to Chevy because people on Reddit mock Fords.
Everything is planned out before the race starts. Yes, things change during the race; accidents happen and everyone on the team has to adjust. But they plan for change, they know how to adjust as a team because they have practiced it. They still work as a single unit, not as a gaggle of individuals.
The takeaway is that if you are going to be on a team, BE ON THE TEAM! Understand your part on the team, accept your place on the team, own your place on the team. When the team swings into action do everything that is expected of you and give 100% to the project.
Show Up or Leave
There will always be times when you disagree with the direction your team is going. Professional programmers know when to voice their opinion and fight for their cause, and when to get on board and work as part of the team.
I actually wrote about what to do when you disagree with your team’s direction a few years ago because a friend of mine wrote me and asked my advice. The gist of it was that a technical decision had been made that my friend disagreed with. He felt that this decision would lead the project down a bad path and eventually lead to disaster. During the discussion phase, he voiced this opposition several times. Then he found out that the decision had been made to do it anyhow. Enough of the team decided that it was the right way to go.
In this story, it doesn’t matter who is right or wrong. What matters is that a decision was made. My friend now had another decision to make and that’s why he wrote me.
I told him he had 2 choices.
- Get on board with the direction of the team and give it 100% of his effort.
It boils down to that. If you are on a team, you were put there because someone thought you could do the job. Disagreeing with the technical direction of the project doesn’t give you the right to dig your heels in. You are being paid to do a job, do it or get out. You owe it to your team.
If you decide to leave, that’s fine. That’s a valid decision and you are to be applauded for understanding that you will never be ok with this project so it is better for everyone that you leave. Now, be an adult about it. While you are looking for your next great adventure, you still have to give 100% to the current project and team. Yes, it is gonna suck. yes, you are going to have to hold your tongue, and sometimes your nose, to do the job. You owe it to your team to do it. To give 100% until you can find that next great adventure.
Once you are ready to leave, leave gracefully. Rage-quits feel awesome, for a day. Then you begin to realize that the people you just quit will probably tell others how you quit. Those others might be potential clients or employers in the future. Rage-quits don’t hurt the team you are leaving, they do hurt your reputation. Be an adult, leave with grace.
Professional programmers are team players because they know that even if they are the only programmer on the project, they are working with a team.
Until next time,
I <3 |<