You don't need to look any further than to your coworkers to see how many different personalities and work styles are in effect. Despite the differences, certain predictable behaviors occur between staff and management when personalities clash. Jonathan Kohl defines a few managerial behavioral anti-patterns that could undermine your project. He also sets the ground work for ways to improve the relationship between staff and management.
Linda Hayes wrote an excellent article called "Held Hostage by Coders." In it, she describes three unhealthy behavior types (and how to deal with them) in programmers:
- The hijacker is a developer who takes control of strategic product decisions without permission or authority, holding the company and its customers hostage to his decisions through delays and diversion. Even though the hijacker's intentions might actually be good, the results are bad.
- The prima donna is a developer who enjoys writing new code but doesn't want to support and maintain it.
- The control freak is a coder who hoards the code.
I've seen the behavior that Linda describes firsthand, but I have also seen problematic behavior displayed by managers. While some programmers may be inexperienced, immature, or difficult to get along with, they also may be hard-working people who have learned to react subversively to cope in an environment where management intimidates them (either consciously or accidentally). Here are some management behavioral anti-patterns that can aggravate or cause hijacking reactions:
Underminers are leaders who won't take your answer as valid if it doesn't have the result they're looking for. Sometimes they will just go around the office asking the same question until they find someone who will give them the answer they want. In other cases, this behavior is displayed by a manager who is playing politics and trying to deflect blame onto someone else or to make a subordinate look bad.
- Focuses on short-term gains over long-term product strategy.
- Doesn't understand how much work is required, if all
- Lacks trust in programmers' estimates.
- Finds the shortest estimate, picking that and making the other people feel disrespected.
Corresponding Programmer Behavior
- Prima Donnas tend to placate underminers by promising quick and dirty solutions, as prima donnas often undermine their teammates.
- Hijackers take their maintenance work or other work underground, believing it won't get approved anyway.
- Control freak behavior is reinforced by paranoia after being undermined.
- Create a management process to handle project management tasks, and don't let one person subvert it without the approval of others.
- Set up a point person who can run interference.
- Add visibility to all the actual work involved to rewrite hacks, put in more maintenance, and advise on the tradeoffs between doing it quickly and paying off resulting technical debt later.
The Erratic Driver
This type of manager is referred to as an "unpredictable change agent," or less favorably as "management by whimsy."
The erratic driver is a leader who changes direction on schedules and projects frequently, which disrupts everyone else's work. This leader may feel that he is losing control to the technical staff, inexperience, or merely disorganized thinking. It is frequently displayed by "big picture," visionary entrepreneurs who think of a lot of ideas very quickly and expect the rest of the team to be able to keep up. Sometimes this type of leader subverts process, project management, and other managers to interrupt and direct individuals to change work tasks and projects directly, sometimes by stealth.
- Frequent schedule changes (usually attempts to ship something earlier)
- Change in product direction (we are building this now instead)
- An "I need this new feature NOW!" mindset
Corresponding Programmer Behavior
- Prima Donnas tend to work with erratic drivers, who provide escapes from maintenance with something new.
- Control freaks try to regain some control during erratic change by becoming even more controlling and less flexible.
- Hijackers avoid changing work and may continue to work on an existing project and refuse to work on new projects. They may secretly work on maintenance tasks and other activities under the budget of a new project or feature.