views:

388

answers:

10

Where I work, we employ a consultant to do a considerable amount of work for us to hold us over until we can hire/train more staff. He has been working with us for quite a long time now, and he has always had this strange habit of leaving his initials on EVERYTHING he touches, as if its his sort of branding or advertising. And by everything, I mean:

  • Database names
  • Table names
  • Variable names
  • Web service names
  • File names
  • Server names
  • etc...

Is this a common practice among consultants? We politely asked if he could remove some of the branding, but he typically scoffs and quotes exorbitant time estimates to perform such 'silly' refactorings. I guess we could leave it alone, but it's really annoying to have to type out his name every time we reference something he made. Any recommendations on how to approach this problem?

Edit: Our contract with him states that we "own" everything he makes for us.

+9  A: 

This is not normal practice in general my company does the opposite, we do our best not to put any names or even company names inside the code we create.

Your problem might reside in the fact that he is too comfortable in his situation and feels he can do as he pleases. I would create a naming standards and best practices document and outline that names should not * be included in anything that is being designed for the company. In his development environment i would let it fly, but production products should not include developer information.

Nix
+1 I agree with you
TcKs
+8  A: 
  1. Tell him to stop doing it in the future. There's no "exorbitant time estimates" necessary for him to stop doing it on anything new that he creates.
  2. Search and replace his old stuff. Unless he does something weird to embed his name that makes it hard, you should just be able to do a global replace of HisName with nothing.
Chad Birch
About #2: In ASP.NET this might manifest itself as binding to a GridView in markup. If you rename a property, the string representation in the markup won't be changed.
Greg
John MacIntyre
+4  A: 

That is not the appropriate place for him to brand himself. I'd ask him to remove it, and if he won't do it for a reasonable time estimate, bring in somebody who will. Removing names like this even on a large project is relatively little effort.

The appropriate place for his branding is:

  1. In his source control check ins
  2. Related project documentation as the author
John MacIntyre
+5  A: 

You (or whomever he reports to) should instruct (not ask) him to cease this practice, and tell him he needs to change the names on his own dime.

Jon B
I don't know that they'll be able to get him to change it on his own dime, but I just want to emphasize that this is definitely a "tell not ask" situation.
Chad Birch
+1  A: 

Tell him you'll be releasing the software as open source. That means that all of your customers will be able to see who wrote the code and they'll know who to call for bug reports / tech support.

Aaronaught
I hope the consultant is not seeing this :)
Yogendra
+1  A: 

This practice can be found in a tiny number of old shops (or rather those run by people who haven't read anything in the last quarter century) along side other disaster prone early methods of supposed "source control". As with those other methods it is not only obsolete, it is very much a disproven practice.

He is working for you, so demand that he conform to your coding standards. If you are going to receive code that requires such extensive reworking (he told you how much effort it he thinks it will take to correct it) then you might as well get it from India or China where at least it will cost less.

David
+3  A: 

Put a policy in place that your code will have to pass muster with FxCop (or whatever static code analysis tool is appropriate for your platform) before it can be checked in. FxCop will balk at the initials or any other abbreviations. As he goes from file to file, he will have to remove his initials. Do not allow any extra time for this. If he protests, just ask him how much extra time per file it will take to search/replace his initials.

Chris McCall
+1 This will enable to you not to have coding standards, but to start applying them. It's an objective measure of 'does this new piece of code he's written' apply to our standards? We're a java shop, so we use PMD for this, others like FindBugs. At code review time, we want all our files to be PMD-error free.
elduff
+1  A: 

It is fine to put one's own name in documentation (e.g. the "@author" tag in Javadoc), but it is absolutely inappropriate to put one's name into the class names, variable names, or other identifiers. It is perfectly reasonable for you to instruct him to remove it; as a consultant under "contract for hire", he should not have presumed to include his name in identifiers in the first place, and you have every right to order him to fix this.

P.S. A simple "find" and "sed" will fix this problem in a jiffy. This should not take him more than ten minutes... so if he is going to charge for this refactoring, it should not be any more than ten minutes worth.

Michael Aaron Safyan
We were quoted two weeks (80 hrs) to get rid of his name that is prefixed to ~200 database entities. This includes updating the CRUD app that interfaces to the database. Overestimate much?
James Jones
@James Jones: Hire me, I'll do it in only 30 hours (0.5 to remove his name from the code, 29.5 to manually insert mine in random places).
Chuck
+1  A: 

Has anyone warned him of people impersonating his work so he'd get stuck with the bugs from code that isn't even his? While this is a childish idea, it isn't hard to imagine many places that may use such a practice, which IOW would mean slapping his initials everywhere and letting him deal with everything. Mwhahahahahahahahaha....

JB King
+3  A: 

Can this question be an April Fool's joke? It is a pretty good one!

azheglov
LOL! I wish it was..
James Jones
That'd be nice, but I have seen this done in code. But renaming the server! That's just peeing on everything. ;-)
John MacIntyre