This had a great response on Hacker News. See everyone’s discussion/comments here.
BLUF: Sometimes you have to directly inform a team member and be explicit about expectations. Implicit tasks are not always common sense.
Recently I encountered an issue with a team leader who was dealing with a teammate who was being insubordinate. It was not the first time that they were being abrasive and clearly defying what was being asked of them. How do you handle this situation effectively? In this case they couldn’t afford to move the individual from the team. It was already a small team and there was a tight timeline for a release.
The team lead had already documented the experience 3 times, and was not advancing to a solution. The conversation in general went like this.
Lead: I need you to implement “X”.
Lead: This is not a choice. I am telling you to do this.
Teammate: You need to convince me.
This is the short version of how the conversation, but suffice it to say that the teammate decided he was in control and wanted the team lead to convince why he should implement a private variable in a class. The teammate thought it was bloat and the lead just wanted it done to finish out the pull request. Who is right? No one is right, but the lead has the authority to expect tasks to be accomplished when asked and has the responsibility of delivering the release on time.
I have had previous blog posts about decision making. You have to be able to decisions with the information given. Based on the information the lead wanted the work done to keep everything on schedule. I call this “Pole vaulting over mouse turds.” (<– I stole this from another colleague). This quote is the equivalent of “shaving a balloon” or “break through red tape” except I think it is a more accurate description of how some people treat issues with a terrible solution.
All the lead wanted was a single private variable placed in the class and the amount of effort it took to get that accomplished was a multiple day discussion. There are processes in place to get things like this removed. If you are iterating and being “agile”, then you can remove it later realizing your mistake, and if you code it right, then it will not be intertwined into code so deep that is causes a delay. Just write the less than 80 characters line to add the variable and move on.
The bigger issue in all of this is that the teammate did not want to comply with the lead’s request and decided to go the other direction, and not just stick his tongue out, but gave the middle finger and walked away. Clearly exemplifying that he was going to do what he wants. A couple of ways I would have handled this.
- Counsel the individual by explaining the roles and how tasks are assigned and accomplished.
- Remove the individual from the team before it spirals out of control.
- All else fails. Move on to the lead’s supervisor.
If the individual is not a fit, then move him to another team that might have a different control style. He isn’t a bad worker, but the relationship between the leadership style and his work style are clashing. However, to keep the team rolling this problem needs to be resolved ASAP. It is decreasing productivity and efficiency of the individuals and team.