54

I've been working my first real tech job (as a fullstack web developer) at a local company for almost a year now. Prior to that, I had 2 summer internships and some personal projects. At the current company, I work mostly with React, Node and Javascript (which took a while to learn, as my last 2 summer internships were both Python focused), but as of today both me and a couple of other colleagues are confident in my ability to code (I've been receiving quite positive reviews in the last 2 months, even as far as some compliments). To be noted, that I'm the youngest in the company (both in terms of age and experience) and the company structure is supposed to be flat.

The problem is that there is a senior with more than 2 decades of experience who seems to not like me. When I first interacted with him, he seemed pretty quiet, but usually quite helpful and willing to explain. Now, after a while, I can definitely say that he wants me gone. I am saying this because he raised several red flags:

  • He held a presentation about code review practices, where he said that you should not argue about the requests on your code, because it will "ruin your reputation", even if another senior said that discussing about code changes is the whole point of code review. (This came after I asked why should I implement the change he requested. I genuinely did not understand, because to me my code seemed good, but I thought I missed out something.)
  • He actively reviews my draft PRs which have the "Do not review" tag and points out things that are not done yet (comments, unused variables, unoptimised code).
  • One of the managers told us that some seniors complained about newer employees, and that they are completely useless to the company.
  • I was following the specifications given by our product manager and he said that this specifications are not good, and that I am a bad programmer for following them.
  • He requested changes on pieces of code where another colleague gave me a positive feedback. Note that this senior reviewed my code, found nothing problematic with it (but didn't approve the PR for some reason), the other colleague came, gave me a positive feedback (he liked my implementation) for a certain piece of code, then an hour or two later, that senior requested immediate changes on the piece of code that received positive feedback, saying it was "bad code" (with no other explanation, even after I asked him why was it bad).
  • He puts himself as the main reviewer then purposely doesn't review the code, only after the deadline of the feature implemented on the PR. This makes other colleagues which don't have the same seniority as him to be afraid to approve the PR, because they would get on bad terms with him. Also, for large PRs, he just reviews the code in chunks, meaning he reviews all the code, and requests a change today (which I implement right away, in a matter of minutes). Then, the following day, he requests a change, but based on the code that I wrote before the initial change (he basically doesn't give a detailed code review the first time, so he can keep me in some sort of limbo until my deadline passes so I can be seen as underperforming).
  • He flat out ignores all of my direct messages and questions to him (such as requests for review).

None of the other colleagues do this. They are all professional and quite helpful, but this guy somehow hates me and wants me fired. I never took part in office gossip, since I barely set foot in the office a few times, because of the pandemic. I never insulted or questioned this senior's ability to code. I never made any comments about the senior looks and attitude.

I really don't want to start job hunting now, but I cannot go on like this for much longer. What should I do? Contact my superiors and show them the evidence?

3
  • 5
    Where are you located?
    – Studoku
    Jan 18 at 10:16
  • 8
    In Eastern Europe Jan 18 at 10:24
  • 4
    Why do you think he's doing this to get you fired, as opposed to e.g. covering for you?
    – fectin
    Jan 19 at 2:38
110

Talk to your manager. That's what managers are for.

The behavior of a colleague impedes your ability to work effectively. Keep detailed notes. Describe to your manager the behavior and how it impacts your productivity and efficiency. Don't judge. Just stick to the facts. Tell your manager that you would be happy to change your code style in whatever way is required but you can't because you are not getting any feedback on what's wrong with it or why certain solutions are rejected. Ask for technical feedback and guidance.

It's your manager's job to assess your performance. Ask them how you are doing and whether they share the sentiment of the senior guy. If your manager thinks you are doing fine then ask them to get the senior guy of your back, so you can work efficiently again. Ideally your manager creates some space: make sure that you and the senior guy are not working on the same thing for a while. Then over time things can calm down and can get back to normal.

Going to HR should ONLY be a matter of last resort, if everything else has failed and you are ready to quit anyway. HR's job is to deal with violation of company policies and local labor laws, not with technical or performance issues. You would have to make some allegation that the behavior is indeed in violation of something. Once such an allegation is made, HR needs to act and start an investigation. That's going to be bad mark on everyone's personal file and the senior guy will hate you forever.

10
  • 4
    Going to HR should only be a matter of last resort; but, a manager is likely going to side with the senior developer no matter the circumstances. I've seen managers protect bad decisions in their tenured staff, often without even reviewing the facts behind the complaints. The reasoning goes something like "Well, X has been doing this for Y years, you need to learn from them". The best hope is to appeal to X's sympathies, and become his new pupil. This means telling X everything he says is right, until he stops targeting you. Then start improving again.
    – Edwin Buck
    Jan 18 at 15:37
  • 6
    @EdwinBuck It's possible, but only if your local area has a massive glut of programmers so they can fire you on Friday and get a replacement on Monday. That's rarely true, so a manager has to get work done with the guys they have. That means resolving interpersonal issues so work happens efficiently. The OP lists several things which are measurably damaging productivity, and that should be a red flag for any manager. If it's personalities clashing then the OP is screwed, but there are several things (late, incomplete or too-early reviews) which are clearly wrong and are wasting company time.
    – Graham
    Jan 18 at 22:49
  • 61
    One thing alluded to ("Just stick to the facts.") but wasn't said explicitly: when talking to your manager, avoid phrases like "seems to not like me" and "he wants me gone". Those are completely understandable feelings to have, but are not productive things to say, because you don't know that for certain, and even if your manager did know that, they wouldn't say "you're right, they do dislike you". So instead you want to phrase it more about how you're having trouble working effectively with the person, and are looking for you manager's advice about how to resolve the impass.
    – me22
    Jan 18 at 23:23
  • 3
    This behaviour of bullying is sufficient, if properly documented, to go straight to HR as a hostile work environment. YMMV on country-specific laws.
    – obscurans
    Jan 19 at 4:54
  • 23
    @obscurans HR IS NOT YOUR FRIEND and they don't give a damn about bullying, this isn't high school. They care about workplace disruptions, and then will make a decision based on the companies needs. While this includes exposure to liability, it is not limited to such Jan 19 at 8:12
48

As a precaution, update your resume and start putting out applications. You want to be in a strong position regardless of the outcome.

Then:

Document every last bit of hostility with an email trail. Here's a point by point way of doing this

*He held a presentation about code review practices, where he said that you should not argue about the requests on your code, because it will "ruin your reputation", even if another senior said that discussing code changes is the whole point of code review. (This came after I asked why should I implement the change he requested. I genuinely did not understand, because to me my code seemed good, but I thought I missed out on something.)

"Dear Senior, I have a question about your presentation. You mentioned that we should not argue requests on code, as it could damage our reputation. Does this include asking questions when you are unsure of how the changes will be improvements?"

*He actively reviews my draft PRs which have the "Do not review" tag and points out things that are not done yet (comments, unused variables, unoptimized code).

"Dear senior, I noticed that you reviewed my draft before it was ready for release/publication. I had it tagged as "do not review", is all code part of the review process now, even unfinished drafts? Please clarify.

*One of the managers told us that some seniors complained about newer employees and that they are completely useless to the company.

You can mention to the manager that nobody has said anything to you or any of the other newer employees, and that problems cannot be corrected if the people aren't told of them, and that you'd welcome any specific feedback on how to address any concerns.

*I was following the specifications given by our product manager and he said that these specifications are not good and that I am a bad programmer for following them.

"Dear Senior, these were the specs given to me by product manager please see product manager" (and CC product manager)

*He requested changes on pieces of code where another colleague gave me positive feedback. Note that this senior reviewed my code, found nothing problematic with it (but didn't approve the PR for some reason), the other colleague came, gave me positive feedback (he liked my implementation) for a certain piece of code, then an hour or two later, that senior requested immediate changes on the piece of code that received positive feedback, saying it was "bad code" (with no other explanation, even after I asked him why was it bad).

Again, put everything in writing.

"Dear Senior, while colleague liked my implementation of code, you told me this was bad code, I would be eager to improve it in any way you see fit, unfortunately, you only told me that it was bad code, and did not explain what was wrong with it, how I should have done it, or what improvements would make it better. Please advise.

*He puts himself as the main reviewer then purposely doesn't review the code, only after the deadline of the feature implemented on the PR. This makes other colleagues which don't have the same seniority as him to be afraid to approve the PR, because they would get on bad terms with him. Also, for large PRs, he just reviews the code in chunks, meaning he reviews all the code, and requests a change today (which I implement right away, in a matter of minutes). Then, the following day, he requests a change but based on the code that I wrote before the initial change (he basically doesn't give a detailed code review the first time, so he can keep me in some sort of limbo until my deadline passes so I can be seen as underperforming).

NAG him, and CC your manager

"Dear Senior. We are approaching the PR for feature X. To date, you have not reviewed my code, I am concerned that we may pass the PR date with untested/unreviewed code. Please advise.

CC: Manager"

Then keep emailing him, and increase frequency, including the deadline.

"Dear Senior, as previously noted, We are approaching the PR for feature X. We now have only Y days to release. I am growing increasingly concerned that we may miss our deadline"

*He flat out ignores all of my direct messages and questions to him (such as requests for review).

CC your manager on every email. Document every refusal.

"Dear Senior, I sent you a request for review yesterday. I understand your busy schedule leaves few opportunities for free time, but I have not heard back from you. If you are unable to review right now, please let me know when you will be able to review the code, so that I will be able to fix anything you find immediately.

CC: Manager"

This will build you a paper trail for HR, should it come to that, while keeping your manager informed as to what is going on. Your senior is likely saying that you don't solicit feedback and is pretending that you're not asking for reviews. This will provide proof that you are, and make him look bad to management if he is lying.

Again, have your resume updated and out there so that you can move on if you don't get satisfaction.

19
  • 4
    +1 for updating his resume and looking for a new job, but I really don't think you should nag him over email (because that would be essentially nagging your boss as well and you don't want to do that). See the definition of nag dictionary.com/browse/nag If you email him and carbon copy your boss, which I agree you should do, make sure your complaints are well crafted, but do not nag. Nagging is what children do. Jan 19 at 0:26
  • 2
    @StephanBranczyk I am quite the adroit wordsmith and my instructions to the querent will prove to be propitious if he follows them rather than continuing to the nadir of his career with his present employer. Jan 19 at 0:58
  • 9
    I was going to write this answer too. It seems to me this colleague is doing more damage to himself than the OP. Most of these behaviors described are unprofessional and just bringing them to light should be enough.
    – eipi
    Jan 19 at 2:58
  • 1
    @eipi A former colleague tried to do the same to me, that's why he's a former colleague. Jan 19 at 3:08
  • 9
    @alephzero "new hire" who's been there over a year... so not really a "new hire" anymore. If this was on day one? week one? Sure... but a year in? Seems to have passed that point... "no company wants" a senior to be sabotaging valuable employees either...
    – WernerCD
    Jan 19 at 8:03
26

Talk to your manager. Do this for two reasons.

First: because your manager is the person who can fix this. If your manager is the manager of the Senior, then your manager can talk to the Senior, find out what the issues are, and either your manager can address their performance with them, or your manager can address actual issues with you. If your manager is not the manager of the Senior, then they can address the issue with the Senior's manager - you should only talk to your manager.

Second: because sometimes in situations like this, it is possible that you are either underestimating your culpability for these issues, or misconstruing the actions of the Senior. It sounds like you're not from your perspective, but that's the thing - sometimes your perspective is wrong. I've certainly had times where I felt I was doing everything right, but it turned out I wasn't - and it took someone else, like my manager, to show me what I was doing wrong, from the other perspective.

Going to your manager with this, and doing so in an open, nonconfrontational way, gives you the most chance of resolving this - either way. If you're actually doing something wrong, then they can - and should - tell you how to fix it, and if you're not doing anything wrong, they can, and should, address the issue with the other people involved.

2
  • 9
    To be clear, you should talk to your manager and if the Senior is under another manager, let your manager talk to the Senior's manager. You shouldn't be talking to the Senior's manager unless your manager brings you into the conversation. This Answer says this, but in a somewhat unclear manner, with the use of a few ambiguous them/they/their. I had to read it 3x before I realized exactly what Joe was getting at. Otherwise this is a good Answer. Jan 18 at 20:27
  • Yes - you should talk to your manager, not anyone else's. Added some words to make they/their/them less confusing, thanks @computercarguy!
    – Joe
    Jan 18 at 20:31
20

I would play devil's advocate here and show why the behavior you described may not necessarily indicate hostile behavior.

The problem is that there is a senior with more than 2 decades of experience who seems to not like me.

First of all, you need to consider that someone with that amount of experience likely knows a lot more about tech than you do (with a year of experience and couple of internships).

where he said that you should not argue about the requests on your code

Perhaps your genuine questions about their suggestions are coming across as "arguments". There may or may not be an ill-intent here, but potentially just a lack of clarity in your communication/questions.

He actively reviews my draft PRs which have the "Do not review" tag and points out things that are not done yet

I have experienced this in my early years, but sometimes people just don't know when you are ready for review or not. With some people, you need to "announce" or "inform" specifically when your code is ready for review.

Keep in mind, when someone is pointing out mistakes or flaws in your code, they are not berating or discouraging you. They may simply intend to provide constructive criticism at an early stage of your development cycle rather than at the end.

I was following the specifications given by our product manager and he said that this specifications are not good, and that I am a bad programmer for following them.

Product managers are often not technical and may not always know what is the best thing to do - in technical implementations. It may be an expectation at your workplace for Devs to participate in the specification authoring process rather than purely consume them and implement word-by-word.

You should seek more clarity around this with your manager rather than simply assuming that whatever a PM writes is pure truth, and will protect you from any downside if you follow it.

He requested changes on pieces of code where another colleague gave me a positive feedback. Note that this senior reviewed my code, found nothing problematic with it (but didn't approve the PR for some reason),

Just because someone appreciates your code doesn't mean that it is perfect. Simply the fact that the senior didn't approve the code indicates that perhaps they are not comfortable reviewing your code in its entirety.

He flat out ignores all of my direct messages and questions to him (such as requests for review).

This can be simply explained if at a given time they are occupied with work. You simply cannot expect people to respond to your chats or emails immediately.

However, as you mentioned, if you continuously observe such behavior delaying your PRs, you can follow-up aggressively (as recommended by Old Lamplighter in their answer) in order to (a) get your manager's attention at the problem and (b) get the work approved in time.

Contrary to the opinions suggested in other answers, I would suggest that you consider the possibility that the senior is annoyed by the low-quality work that you are delivering. I would suggest keeping an open mind with them in your next few interactions and trying to get a better sense of the logic behind their actions. If you find that there is no logic, then the approaches mentioned in other answers would certainly help you.

8
  • 1
    I would suggest that you consider the possibility that the senior is annoyed by the low-quality work that you are delivering => Which could lead to delay in reviews, as then he may push back the review until a time where he can spend a larger chunk of time as he usually has more work to do on them. Jan 19 at 16:42
  • 2
    @MCEmperor the feature introduction for github draft PRs specifically promotes them as a way to start conversation; as such they don't seem an appropriate choice when feedback is unwelcome. A "Do not review" tag is arguably an oxymoron, tags aren't necessarily seen as overriding content, and if something seems headed in an unproductive direction trying to get it back on track earlier rather than later makes sense. Jan 19 at 19:04
  • 1
    I wouldn't even say annoyed with low quality work. People can point out improvements to your code without considering it either low quality or annoying. That's just an expected part of working on a team, especially when you are new. Jan 19 at 20:06
  • 2
    +1 for mentioning that it is often preferable to treat PM requests as light suggestions. Jan 20 at 2:31
  • 1
    +1. This was my first thought when reading the question too. "He actively reviews my draft PRs which have the 'Do not review' tag and points out things that are not done yet" Why create a PR if you don't want feedback? You can work on code without having a PR. Jan 21 at 7:49
3

I've been in a similar situation myself, and I'm gonna side with the other answers here: talk to your manager. Not HR, your manager.

It's important to approach and present this as a situation that's making it hard for you to work that you need help with, not a coworker you need dealt with. Try to be as impartial as you can, talk about facts, don't make inferences about personal motivation (ie. "I feel like I'm being singled out" is a much better thing to say than "$coworker is singling me out"), don't assign blame, make it clear you're ready to make any reasonable accommodations on your part to resolve the situation. Chances are, the management might already know something is up, in which case you coming to them will make it much easier for them to act. And if they don't yet, you coming to them is important, because your coworker might very well have been telling on you this entire time, and having your side, especially if it's clear you're not trying to make it a personal attack, is critical to ensuring their side doesn't become the only one.

Try to maintain a positive attitude and avoid seeing things as someone's fault. You don't know what your coworker is going through, and even if they're truly out to get you, this will make it easier to be the level-headed adult in the room. That said, be prepared for things not having a happy ending. You don't have much choice but to hope the management is competent and will be able to sort things out, or if they can't, that they will side with you. Maybe you will be able to restore good working relationship in your team, maybe you won't. Maybe they will fire your coworker, maybe they will fire you. In my case, my manager was very supportive and things ended up with the other person being assigned to a different team and ultimately leaving the company, but you don't have any guarantees. If things are bad enough that you can't continue working without resolving the situation, you must take the possibility you won't be able to continue working there at all into account.

2

I've been in the position where I felt there was a manager with an itch to get rid of me. He eventually did - by creating a fictional performance review and just firing me.

@Old_Lamplighter's recommendation that you update your resume immediately is the best course of action. You can document things all you want, but, when someone more senior than you wants you gone, there isn't much you can do. As Old Lamplighter pointed out in a comment: given the choice between a junior, and a senior with decades of experience guess who gets listened to.

I also had a very different experience when I quit a job once. In my exit interview, my boss acknowledged that there was a senior person who just plain disliked me. He also said something like "you've done such a great (and visible) job on the XXX project over the past 9 months that every time Steve bad-mouths you, he looks like an idiot. If you leave that stops". I couldn't believe that he was using that as a potential lure to keep my at the company. It upset me, but it did bring a smile to my face. Steve was part of the reason I had started my job search.

The best thing you can do right now is to actively start a job search. In your current job, look for opportunities to make yourself more marketable (for example, if there are internal training classes you can take that can allow you to put a new skill on your resume, take them). Get a subscription to a training site and take classes that you think help fill out that resume.

The other thing you should do is become relentlessly upbeat and eager in your current job. Be the person who volunteers to do extra work. You want to be seen by management to be a keeper. Whatever you do, don't become known as the complainer.

You can talk to your manager, but not to the point where you become someone he/she dreads seeing. Point out the issue, but talk about it as a way for you to learn, learning technical skills, learning inter-personal skills. If your company allows it, look up your manager's objectives/goals. Make sure that your discussions make it sound like you are aligning what you do with what his goals are (but do it subtly).

Maybe you'll get to the point where every time your senior person starts to bad-mouth you, he/she will end up looking like an idiot.

1
  • 2
    A small feedback on "given the choice between a junior, and a senior with decades of experience guess who gets listened to": it may not always be true, if a single person pushes many promising and/or good working employees to the door, the company may judge this person does more harm than good to the company. It can take time to realize it though. I used to quit a job for such a person, who did also a huge mess when finally fired. Afterwards, I got apologize from the company, and because I quit in good terms, I even got several job offers from their network, they recommended me for my work
    – Kaddath
    Jan 19 at 11:07
0

My 2 cents

I know where you're coming from. I'm a junior subcontractor working for a big company. Thing is contractors have it rough in your situation, so here's my 2 cents.

Make sure you have an email as proof for anything said that was important. When someone makes a statement like, "From now on do this..." Ask them to send you that in email so you can remember. Regardless if they are friendly or not.

You can use emails as trails of proof if anything happens to you.

If you are using Bitbucket, Gitlab or Github, usually when you create a PR there should be an email sent to you and all the reviewers. Make use of that email's timestamp. Also don't be afraid to email your senior if he doesn't do a code review within 24h.

If he fails to respond or takes too long to review the PR after multiple emails, you can raise the issue by cc'ing your manager in the email. Also having a senior and a manager you can trust on your side is always a plus. The way to do this is something I like to call mutual benefits. You help them out by doing some favors, in return you gain their trust, respect and support.

You can also email other seniors casually and ask them what they think of your code. Reason for this is, getting more feedback from other people improves your coding skill. This shows you are taking initiative and are really trying. Also makes your interaction with other seniors better, because they can vouch that you are trying.

That one senior guy might have his reasons too. One of them could be, he is scared that you might overtake and replace him or that he doesn't like your coding style. Or maybe both.

For the current state of your problem, I could say set up a meeting between you, your manager and senior that's causing you trouble and talk it out. Don't get mad or point fingers, but just ask for personal feedback. By taking initiative, you make yourself look good, because you actually care and they can see you are trying by addressing the issue head on. Remember to stay calm collected and not to make assumptions during that meeting.

Points you can talk about in the meeting:

  • First ask them to give you an honest assessment on your performance
  • Ask them what can you do to improve
  • Can you get a reasons why your code is bad for every review

You can add more points to the meeting if you want.

-1

No point in speaking to HR: they're not there for you, they're there for the company.

No point in speaking to your manager: if the behavior described by you is accurate, everyone should already know that your senior colleague is a bit of a prick. So clearly nobody cares, and speaking to your manager won't help.

Everybody else who's answering is coming up with really convoluted solutions, and I'm not sure why. Maybe they like hearing themselves talk?

Imo, your situation is simple: send applications on the side, but DON'T QUIT, and DON'T make a fuzz. Just keep working, keep making money, and if you find another job, leave, otherwise stay.

This site is temporarily in read only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .