Developer vs Manager Responsibilities

Have you ever had a manager disregard your opinion? Make a technical decision contrary what you recommended? Ever get frustrated by it? Well don't. It comes down to a difference in developer and manager responsibilities.

Your Responsibility as a Developer

You might be saying to yourself "My responsibility? Duh! Get out the code, do my job!", well, yes and no. In addition to your job, you have a responsibility to your manager to provide solid information that they can use as a basis for their decisions. You're in the trenches; you know better than anybody what they need to know. You're responsible for bringing information and situations to their attention for them to act on.

You're the data input. Occasionally, if something is important enough, it's your responsibility to strongly push an point that you think is critical. However, once your boss has made it clear that they've made their decision, it's your job to follow their direction and move on.

Don't like it? Become a manager! Give up the joys of code for the monotony of meeting after endless meeting as your hard won technical experience melts away (the sad truth for most, but not all, who make the transition).

Their Responsibility as a Manager

You may not be aware of this but managers have a lot on their plate and even they don't get to call all the shots. They're fighting office politics (so that you don't have to). They're taking the information that you provide and arguing for more time or resources or what ever else it is the team needs. They're using the information you you gave them to make decisions about what the team's tools, strategy, staffing and priorities should be and often they're presenting that information to their boss for approval.

Here's the thing: If your boss makes bad decisions it's on them. It's their neck on the line. Of course it might blow back on you too, but in an accountable organization it's still on them. And given the internal politics of most companies your manager also has to tread carefully; they can't push hard for everything. They have to choose their battles... and so do you.

Choosing your battles

I know you've heard the saying "The squeaky wheel gets the oil", but a wheel that squeaks too often can become part of the background noise and be ignored completely. The reality is that some arguments can't be won; more importantly some arguments shouldn't be won. I know that in the vulcanesque mind of the programmer arguments are weighed based on their logic and merits only. Unfortunately the real world works differently.

Social Capital

There are often many valid ways to view a situations based on conflicting priorities and there can be many conflicting, yet compelling arguments depending on the view you hold. In these situations you gain social capital by yielding to others on topics that you consider less critical to the team and you spend social capital when you push your view-point forward ardently (whether you win or loose). My advice? Yield whenever you can and push forward only when you think it's really important (and only if there a chance of winning).

I know this sounds a lot like playing office politics and to some extent it is. That's not what I'm about though; trust me, I despise office politics but the sad reality is that if you're constantly the source of conflict, constantly the one with the only right answer, constantly rocking the boat then you will quickly find your opinions shunned and ignored. Even if you're right.

Going the distance

Team structure, rules, and the status quo evolve over time; "the way things are" can't be changed over night. If you really want to have an impact then you have to bide your time and work towards what you think is good for the team over the long haul. Often you'll find that your manager is in agreement with you and already working the same long term strategy with their boss and piers. Over time you will earn respect, trust, and social capital and, if you wait patiently, you'll be ready when opportunities present themselves to share your well thought out views and to influence things for the good of the team.

What are your thoughts?