Take the 2-minute tour ×
The Workplace Stack Exchange is a question and answer site for members of the workforce navigating the professional setting. It's 100% free, no registration required.

I have only been working at my current position for a little over 3 months and I feel that some of the coding standards that are in place go against my personal best practices. The biggest clash seems to be when writing SQL code, I like to make my code very readable, easy to understand, and easy to test but apparently that is not part of the standards here and I am asked to remove items I put in place to promote my best practices which again makes it easier and quicker for me and I am sure others who come behind me to understand and test.

The enforcer is my manager and very strict about the standards and makes it nearly impossible to get a word in and completely disregards any reasoning behind my actions falling back to "this is not standards". Why can't they be then? Why not make them standard? What is so wrong with having easy to understand code that makes it easy to test and tweak?

The other part of my frustration comes from feeling like I am the only person that these standards are being imposed upon. I have found many times code that makes me cringe and does not match what our standards are yet.. it exists and is recently written.

Right now this is my biggest concern with where I am working, I like that we have standards and that they are enforced but I am not digging the inflexibility and closed mindedness of the standards and it is becoming very frustrating.

On top of it I started hearing a new line this morning, "[Director's Name] does not like..." though he is no longer writing code and I feel his personal coding style should not dictate a possible improvement to the standards.

What would you do? I feel like I am stuck between a rock and a hard spot.

Though, this post is less about what my standards are and more about how to handle a conflict of standards especially when you feel they hinder the speed in which you work.

share|improve this question
6  
I can't tell if you're asking for help with coding standards (off-topic here, try Programmers), or if you're asking how to persuade your manager to change (in which case the detailed coding issues are kind of distracting). In any case, discussions of SQL coding standards don't belong in comments here (because they're about SQL coding standards and because they're discussions), so I'm deleting those. I suggest editing your question to focus on the workplace-specific aspect. Thanks. –  Monica Cellio Jul 15 at 20:25
4  
Remember that coding standards are about establishing conventions across the entire codebase, so that the programmer who will have to maintain the code five years after you've left the company doesn't have to figure out each programmer's idiosyncratic conventions. You aren't becoming less efficient by following the standards -- you're essentially investing that time in documenting your work. (Yes, a good programmer should be able to read any common style. On the other hand, I've seen some coders who, left to themselves, wrote code so idiosyncratic that it broke the debugger!) –  keshlam Jul 16 at 2:10
2  
@Tony - See my question about being new and advocating for change (How soon should I advocate for making changes after starting in a new job?). Might be useful. –  kce Jul 16 at 5:27

5 Answers 5

up vote 60 down vote accepted

You aren't a special snowflake nor working in a vacuum

my best practices

Unless you are your own manager, you don't get to dictate what standards you use. And even if you are you likely will do work for others and still need to abide by their standards.

This is a significant part of the reality of working for others.

Also keep in mind standards have a lot of history in many cases. Perhaps some previous dev did something which caused a ton of problems when the dev left. Perhaps a manager had a power trip. This will never be immediately clear, especially as a new person.

The other part of my frustration comes from feeling like I am the only person that these standards are being imposed upon.

I suspect this is partly if not entirely because of your attitude. There are a lot of factors other than simply your work which affects your bosses perspective on you.

By this point, it is likely your boss feels you are a problem employee. Everything in your question reads like, "I am right, why won't the idiots I work with understand and believe me! It's so obvious!"

What would you do?

If you want to have significant influence in your workplace learn to "play" office politics.

Another reality check: if you want to start influencing people you need to do so in ways which are effective. This means people skills are more important than technical knowledge. Before you disagree with this, realize your entire question is a result of this problem - if technical skills/perspective was of the highest importance you wouldn't have had to ask this question.

This is the dreaded "politics" component to work which most technical people shy away from.

A key component to politics is realizing the "how" is more important than the "what."

People will forget what you said

People will forget what you did

But people will never forget how you made them feel.

New person arguing with management (especially if directors get involved) is not a good career move, almost ever. This is different than disagreeing constructively.

Action Steps

  1. Talk with your manager. Indicate you are sorry for arguing and ask if you can talk through the current standards
  2. In this conversation, stop arguing. Understand the "why" to what your manager is suggesting. Don't automatically assume "you are an idiot"
  3. Listen to what your manager says for "why." If you don't get this, try to get the why - don't even try disagreeing with it or saying "but, but, but." People generally get defensive when people argue with them. And get a lot more willing to listen if you listen and seek to understand first.
  4. After fully understanding why your manager wants these standards (you probably should say something like, "So if I understand correctly, the reasons for these standards are X, Y, Z" - if you can't do this, you need more information), ask something like: "Would it be ok if I explain what I have been doing and why to determine if they could be included in the standard?"

Tread lightly in this conversation. If you have any level of argument you are likely to lose badly, given you have history with your manager.

share|improve this answer
2  
@Tony sometimes the primary problem people have is recognizing their attitude is hostile/argumentative. I can't count the number of conversations I've had, about either myself or others, which basically go "you were really confrontational" followed by, "really? how so?" This is a big part of politics too, understanding the impact/image you present. –  enderland Jul 15 at 14:37
5  
@Tony it's also worth noting you're pretty new to the company. So your ability to influence change is limited. I, like yourself it seems, am the sort of person who enters a company and perpetually probes and prods to try and shift things in a better direction. I will say though it's a very delicate dance politically speaking, and it's almost entirely politics. Any change you try to make will be met with resistance of some kind, some is easy to overcome some will be a long campaign of attrition to wear down the opposition. Pick your battles, one fight at a time, tread softly, and keep metrics. –  RualStorge Jul 15 at 14:50
1  
Marking this as the answer as I feel it was well written despite some misconceptions and provides some good feedback in general that other people in other industries could also find useful. –  Tony Jul 15 at 15:12
2  
+1: Welcome back, dude. –  Jim G. Jul 15 at 21:49

Great answers above, but I would like to add one more point.

Good bad or otherwise, there is a history to these standards. If they are being followed, there is likely a significant code-base written to these standards. Your request to change the standards would create a need to revisit the entire code-base to restructure the old code. This could be a significant effort and adds risk for inadvertent code changes. If the team doesn't touch the old code, you are now leaving by two (or more) standards.

In my experience, if you have more than one standard, you probably really have none.

share|improve this answer
2  
Whenever a new standard is introduced, this standard usually is not applied to legacy code until this legacy code requires a logical update (so a new feature or a bugfix). Changing code just to adhere to a new standard is dangerous and irresponsible. –  Nate Kerkhofs Jul 16 at 7:52
1  
I would agree about legacy code, but there plenty of current projects out there that have a multi-year history that could be impacted. One if the apps my team has built and is currently enhancing has over 200K lines of code. If somebody suggested a new standard for that code, the answer would very likely be no. –  cdkMoose Jul 16 at 12:53

Just because the reason for a standard is not visible does not mean it is irrational.

While I agree with everything said above (about new employees needing to maximize their people skills and learning the local company politics) one thing that may help lower your frustration level is understanding that some coding standards are based not so much on illogical-and-arbitrary factors but rather on valid-but-invisible ones.

Consider your example which you described as

"one more WTF standard which I just roll with but seems completely pointless"

I have actually seen this exact standard in two different organizations and there was a very valid reason for it.

In both of cases I discovered that management was using certain software to analyze the code development & evolution process and this software had strict expectations of how the comments would be formatted (aka standards). The "TICKET" lines you describe might only include "comment:" in your department but later on down the line in production there might be live incidents that arise which requires troubleshooting and modifying the software. Techs and management involved in those events might add TICKET lines with things like "problem:", "fix:", "change:", "reference:", "evidence:", "decision:" and even "policy:". If you get assigned to work on fixing/upgrading legacy code you may see some lines like that yourself.

One concrete thing I can suggest for you is to try and learn about something called "ITIL" and/or "ITSM". These are collections of world-class best practices for IT, both from a technical viewpoint and a management perspective at the same time. I kid you not that it can be very hard to understand them at first if you are a pure techie (non-management) but in the long run it will dramatically improve your ability to see the "big picture" and it can be considered a marketable and/or promotable skill if you decide to go as far as to become ITIL certified.

share|improve this answer

I know this isn't what you want to hear, but the sad truth is that companies (Or rather the people running them) don't always follow logic or the "best way". This is for a variety of reasons, some reasonable (Compatibility, compliance, standardization etc), some not (Fear of change, lack of understanding etc).

The other unfortunate truth is that you're not always in a position to change that. Some things will never change, other things you may be able to influence over time. What I will say, however, is that you're a new member of staff and it's clear there is a real driving force to do things a particular way. My suggestion would be to mold to these, whether you like them or not, and assess your position when you're further embedded in the company.

Picking a fight with senior management and company leaders is a dangerous game at the best of times - even when you're top of the technical tree, the people who own and run the company can (and sometimes will) over rule you. Doing it when you're new is bordering on suicide.

share|improve this answer

All good advice re: new guy should not make waves, etc. and yes, sometimes it is best to just hold your nose and follow standards, policy, etc.

But sometimes management is wrong; sometimes a company's 'standards' really are bad or worse.

In that case, find another job; long experience taught me that it is impossible to fix a dysfunctional organization. Those places have a self-reinforcement culture, and if you stay there for too long, you too will become broken.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.