I'm currently working in a project with 3 other developers. One of them isn't really experienced with one of the technologies we are using (an ORM), but he is higher in the hierarchy and doesn't take criticism well, specially from those below him in the ranks (like myself).

He is unhappy with how the technology is supposed to work and is setting up all kinds of workarounds to not use the tool the way it's meant to be used.

I can see how those workarounds are going to be harmful to the project in the long term, I have already told him, but he simply disagreed, said I'm wrong and continued on doing it.

I have thought about just waiting for him to push the code to the repository and then changing it anyway, but I don't want to go around him like that. I have considered going to the manager and telling him what's happening, but I don't want to be that guy. In all honesty, I am currently thinking about doing something I hate -- saving the chat logs to prove I objected and letting things take its course. I know it's going to harm the project, but all other options seem to harm me.

What is worse? To be unprofessional and let the project be negatively affected or to be professional and be hated by my colleague(s)? He is going to hate me if I either change what he did (after he explicitly rejected my corrections) or tell the manager on him.

Edit: Some people are skeptical, apparently. Dude's using an ORM (Doctrine2), which has a few limitations concerning multi-level inheritance. All 'leafs' have to be in the top-most class DiscriminatorMap, and therefore their IDs are FKs that points to the top-most class in the hierarchy, not to the class' imediate parents. He figured it's more important to have leafs pointing to their parents and keep the mapping wrong (he doesn't agree that an ORM's job is to handle the database, he wants to do it manually -- "no, this way the database will be wrong"). Obviously, having a broken mapping broke some of Doctrine's repositories native functions (such as findOneBy). His solution was to keep the broken mapping and override Doctrine's native functions to "fix" the issue. This is absolutely insane.

  • What is your position compared to the other 3 developers? If you are the team lead it is different than if you are their peer. – IDrinkandIKnowThings Sep 10 '13 at 14:06
  • I think that the question might be better if you present it as I think X dev B did Y how should I communicate that Y is the wrong way. – IDrinkandIKnowThings Sep 10 '13 at 14:16
  • You might find this answer worth reading. This question really reads like, "my colleague is an idiot." – enderland Sep 10 '13 at 14:23
  • @Chad, I'm not a team leader, I'm just a developer. – Pedro Cordeiro Sep 10 '13 at 14:37
  • @enderland, I don't know how you got that from my question. I just said he doesn't handle criticism well and is not experienced with the tool at hand. – Pedro Cordeiro Sep 10 '13 at 14:38

In general, you simply need to do your job.

If you job is reviewing the work of others on your team (perhaps through a formal code review), then you need to review it, present your findings, and live with the consequences.

If your job is not to review the work of others, then you need to let it go.

Often, there are many roads leading to "good enough" in the software world. While your colleague's approach may be different than yours (and may or may not be "wrong"), the approach he chooses may be outside your control. If so, let it go and move on with whatever work is really your job.

The exception here is if someone is making a critical mistake that will potentially harm others physically, or financially. In that case, you should consider being the whistleblower, talking with the manager, and accepting the consequences (ostracism from your colleagues, etc). If you take that route, make sure you are right in your conclusion, and make sure that the risk of remaining silent is too high.

  • +1 - and based on the edit, I'd be inclined to agree with your lead to some degree. Having members reference some global root rather their direct parents seems odd and dangerous. – Telastyn Sep 11 '13 at 15:29
  • 1
    I agree that "good enough" does usually end up being the result in a lot of projects. The big issue is of course maintainability. If someone else comes along in 5 years, they are going to have a heck of a time figuring out what the heck the original developers did since it was not in line with the ORM's documentation. So while bad coding practices may not impact others physically or financially, it could break them mentally! – aglassman Sep 11 '13 at 16:09

In addition to what Joe Strazzere answered, if you feel so passionately about using your favorite ORM correctly, how about taking a use case and showing your co worker how things can get blown ? And if things are moving smoothly teach the guy how to use the thing.

One of the most important things that you can do IMO - You can point out the issues you foresee in code review meetings and propose solutions for it.Obviously if other reviewers don't see the problem, you have to be ready with a use case for problems you see. I know from ORM experience that if you don't do it right, it can be the single most traumatic thing to debug/fix. Right from application response time to corrupt data.

As a developer, end of the day, my top most priority is the well being of the application/project am working on writing efficient code that performs at its peak and doesn't break. That is what I am paid to do and that is my top most interest at work.


You will need to lay out a good argument on paper of why using the ORM the way it is intended will be better. This needs to specify the immediate benefits, and the long term benefits. You also need to address every one of his concerns he has about letting the ORM do it the way it was intended to work. You need to put at ease his fears, this is why he is changing it. If you can write all of these things down in an organized fashion, and go over it in a meeting with the other two developers, then you may have a shot at convincing him of your approach.

Make sure you include that you've worked with this technology before. Elaborate on how you used it correctly, and no issues arised. Also, show him that the developer community around this tool highly encourages you to let the ORM do it's magic.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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