December 19, 2013

Office Politics

Over the years I have found a commonality in the way developers think which is fundamentally different than non-technical managers. This difference has often perplexed me and I have often wondered exactly what the nature of this difference is.

It usually manifests itself in the form of developers thinking they are in some way better than management and that if only developers ran the company then things would be so much better, or from the other side, that developers are somehow taking advantage of their technical knowledge to do less work or in some way gain advantage.

During the last 14 years I have worked in a huge range of different environments from investment banking to charities and it is pretty much the same across the board. People are people regardless of where they work, so the same patterns of decision making and conflict between developers and management arises wherever you go.

Unfortunately this divide and its manifestation using creates disharmony in the team and this leads to bad moral and ultimately to developers moving on to other jobs.

The reason I thought I would write about this here, is because the moral of developers and a high turnover of staff has a huge impact on the quality of work delivered and hence plays a vital part in the quest for the perfect web architecture.

According to Joe Spolsky in his article about what makes developers want to work for a company, one of the things he attributes developers with is a sense of justice. Developers tend to have a keen sense of what is right or wrong. They tend to think that if you can argue it logically and it makes sense it is right and if it is based upon some sense of ego or political game playing it is just plain wrong.

I recently found myself in a situation when after sending out a status update I had a manager email me and my direct boss with a reprimand about not going through him before sending out the email. I had never sent it to him in the past, my role was partly to keep users up to date, so why now, was this a problem. To add salt to the wound he berated me in the next status meeting about as well. My sense of developer justice had been offended.

On investigation, it was quite obvious what had happened, he felt left out, he was defending his right to exist. In short, he playing a political game and making sure his name was still on the work even though he had not contributed to it in any way. From a developers point of view this was just plain wrong.

From a rational stand point, this kind of thing is trivial. It shouldn’t affect the day to day working and it certainly shouldn’t affect architectural decisions. From a rational stand point.

However, we are not always rational and dealing with injustice is difficult, especially for developers it seems.

So how can a developer, like me, overcome such petty grievances, not become bogged down in the political minutia of every day office politics. I am not pretending to be an expert on this, but having

worked in so many different places I feel I can offer some advice on the subject or at least detail how I manage this type of thing.

The first and most important element in dealing with conflict is not to re-act. Always get some space between you and the situation. I find I can do this by talking a walk, phoning a friend or my wife or waiting to the next day to respond.

During this time, I often remember the real reason why I go to work. It is not to get caught up in someone else’s petty world, but to earn a living, write some damn good code and if at all possible have a laugh while I’m doing it. Get the space, formulate a strategy and then act.

If space doesn’t help, and sometimes it doesn’t and you find the details of the situation going round and round in your head, and you play out the scenario over and over again, then maybe simple meditation or yoga can help. I practice yoga every morning and during this time I feel alive and that the daily life is far far away. Again, it is about putting things into perspective.

Eventually, if you really feel like you have to act, I usually do a quick check on my finances to make sure I can actually afford to leave my job and then take it up with management. If you need to have a confrontation, then it is best to make sure you are calm, have all the facts and focus not on what the other person did, but how you felt about it. No-one can argue against your feelings.

Sometimes, during a particularly bad contract, work at the office seems like a play on a distant stage. At work it all seems so important, but outside, it seems small and at best a microcosm inside a bubble which I voluntarily take part in each day. The only constant is the continuing development of my coding skills and income into my bank.

On a good contract, I am fully engaged have lively technical debates and enjoy the company of all the team members. It is a contractor’s job to take the rough with the smooth and rise above the petty politics of others.

If you find your moral slipping and work starts to get tedious because of office politics, remember that of all jobs in the world, this one is pretty damn cool and to get paid to be an artist is a rare thing.

Artists are temperamental, but don’t let it spoil the quality of your code.

Simon Powers
Simon Powers is an Agile Coach specialising in large scale transformations and agile adoption. He has a background in very large enterprise architecture which has led on to organisational design and agile process refinement. Simon is the founder of Adventures with Agile.