I have worked at a startup for 3 years alongside the CEO and another developer which I will refer to as Tom from this point forward.

Tom is 35 years older than me and is seen as the more experienced developer, which is a fair assessment to make since I was hired right after graduating college. However, Tom has no education in computer science (is mostly self-taught) and does not comply to many best practices when coding, designing databases, documenting etc.

Who cares, right?

Well, this combined with his personality makes working with him a real pain in the back. He is always defensive, offers little to no constructive criticism, does not communicate much and "always knows best".

Tom is very defensive of the code and refers to the current project as "his" even though we have worked on it for the same amount of time (only difference is a few of his libraries being imported at the start of the project). He does not seem to notice my contributions to the project and instead tend to be annoyed by them.

Whenever there is a discussion where we are on opposite sides (which happens a lot) I have to work tooth and nail to convince him that we should do things differently. He is often dismissive about these suggestions, even when I provide multiple examples of why it is the better approach. Whenever he runs out of arguments for his side he gives up and passively aggressively says something in the lines of "Do whatever you want! I don't care!", and that is the end of the discussion...

Tom gets upset whenever I make changes to the code because he "can't keep up". Mind you that these are changes that we have either discussed and agreed on beforehand or is a bug from a support case that needed fixing ASAP. Tom makes changes to the code all the time and I keep up with all of his changes just fine. He does very little to understand my changes and just "rolls with it" even though I urge him to read the pull requests before merging.

The problem here is that I try to collaborate with Tom as much as I possibly can, yet he shows no interest in collaborating with me. I rarely get any feedback (positive or negative) on my work.

Because of all this I get very little work done. Any suggestion or change I make to the code is constantly frowned upon. I get frustrated over Tom's behavior and my CEO's inability to handle the situation. The CEO is supportive of my work and tends to side with me in discussions, but never calls Tom out on his erratic behavior.

I have lashed out a couple of times and discussed changes we would both benefit from multiple times, but have yet to see any improvement.

I get the feeling from Tom that he is terrified of being replaced. This has come up at a few occasions.

I understand this question is complex and not very concise, but I would like to find a balance where we could work together. It basically boils down to the questions below.


  • How do you work with someone that "always knows best"?

  • How do you work with a man that is afraid of being replaced?

  • How do you get someone to be less critical of someone else's suggestions?

  • "Tom gets upset whenever I make changes to the code because he 'can't keep up'." noticing you speak of best practices, have you attempted to implement code reviews precisely so this doesn't happen? – lucasgcb Jun 19 '19 at 11:38
  • @lucasgcb We have at several occasions tried to make code review a part of our process. The problem is that he won't do them, the CEO doesn't say anything and I feel like I'm in no position to force him to do it. We can both accept pull requests so most of the time I end up doing it myself when some time has passed and the changes are needed. – HarryHarryHarry Jun 19 '19 at 12:24
  • @lucasgcb Please do not use backquotes to highlight quoted text in comments. This syntax should be reserved for code or data, not normal text. Abusing code markdown has ugly results, causes problems for parsing tools such as screen readers for the visually impaired, and is easily avoided by using italics and quotation marks instead. – Lilienthal Jun 19 '19 at 12:57
  • Take a look at TheDailyWTF.com If you find yourself wanting to write an article for them, it's definitely time to move on to a new job. The only person you can change is yourself. – O. Jones Jun 20 '19 at 12:16

It sounds like you may not have a very clearly defined development process - there's a team of two, and you're both fighting over how to implement every change.

This is no ones fault - as you've described it he's not used to working in a professional development team ("always defensive", "refers to the current project as 'his'", "afraid of being replaced [by a junior]"), and as you entered this team as a graduate, neither are you.

This will be a difficult situation to change as a junior, but I'd suggest that you make a goal of having a process where each team member owns a specific piece of work from start (the business has asked for this vague thing) to end (our users can now do it).

Work out milestones towards that goal (eg "our work is divided into small tasks", "it's possible for me to talk to the business users", "I can write robust automated tests", "I can own my own task and let him own his"), and work towards achieving these.

These will be hard milestones to achieve, but when working towards them you might both learn some lessons about team work.

| improve this answer | |

The focus of this site is "the workplace". Workplace issues seem to be divided into two broad classes, those related to a particular job, and those related to one's career. Most of the time, doing something which helps improve your job helps improve you career (and vice versa), but not always. This is a time where I think you need to worry about improving your career, and not care about the job.

For your career's sake, I think you need to start looking for a new job, as your current job has some fundamental, unfixable, flaws, and staying there much longer will hurt your career.

Tom seem to be an "Expert Beginner" (https://daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/), who has limited exposure to the modern profession of software development, seems to have no desire to learn, and who gets defensive and obnoxious when exposed to new things.

The CEO, on the other hand, seems unable, or perhaps afraid to manage Tom. Maybe he knows nothing of software development, maybe he's afraid that if Tom quits his project will fail.

Continuing to work with those two will hurt your career. You, especially with just a few years experience, should be in the era of your career where you are learning from multiple, experienced, experts. You should be part of a team following standard and modern software development practices. You should be part of a team with multiple developers more experienced than yourself, so you can ask questions and learn from them. You should be part of team working on multiple things, so you can be exposed to various types of projects and development. Most importantly, your manager should be someone who can provide you opportunities to learn, and make mistakes; your manager should be someone who is helping grow and nurture your career.

I suggest polishing up your resume, and start the process of finding a new place to work, one where succeeding at your job will also mean succeeding at your career.

| improve this answer | |

How do you work with someone that "always knows best"?

Demonstrate that the new approach is better and more easily maintained. I would say the use of interfaces would be a good example of this. If that is to complex, show him something small but effective.

How do you work with a man that is afraid of being replaced?

This is a bit outside of your control. It is up to the manager to let Tom know he is or isn't doing a good job. If he comments about be replaced in your presence, laugh it off along with saying something like "No way can I see that happening..."

How do you get someone to be less critical of someone else's suggestions?

In a word, patience. Keep at it with small incremental changes. Smaller more incremental changes are easier for anyone to digest.

And on a final note, I would advise you to be open to what Tom says as well. Experience is a powerful teacher and in some cases, he may know the best path forward.

| improve this answer | |

It seems that he is experienced and he gets defensive about his code. If he feels more important than you, then treat him as such. Don't attempt to go over his head. Treat him with respect. No, really, such people like that! The only thing I can think of is being polite and respectful towards him. You should make him think that he is your teammate, or helper, but not foe.

It's not the idea that irks him, but how you present it. If he thinks that the project is his, fine play the game along with him. Make changes, implement new features, and give him credit for them.

You wrote that you are frequently on opposite sides of the discussion. You should not do this! Arguing with him is the last thing you want to do. Instead, what you want to do is you want to when you're presenting an idea, make it seem that you're on "his side".

How do you work with someone that "always knows best"?

You cannot get the big stone out of road, so go around it. Don't go into a direct confrontation with him. Agree that he always knows best. Just make him compliments about his great many years of experience. Again, people like that. If he does not comply to many best practices when coding, designing databases, documenting etc. Make him thinks that in implementing these changes, you're not going over his head, but rather you're saving him his precious time, you're doing the work for him, and just tell the manager that "we wrote this code together", rather than, "I did everything myself and he dind't do anything." If you care about the code base of this company so much that you really want to make a positive difference, then do the work, and attribute any positive changes to him. You don't care who gets the credit, but the important thing is that you're changing the code base for the better. However, if you don't care about that, if this is just your 9 to 5 job, then let him have his way, don't attempt to change anything.

How do you work with a man that is afraid of being replaced?

Tell him that you're his "helper", not replacement. Again, make compliments to him about his age and experience, like "You are a valuable asset to the team", "Upon you the entire code base depends." Stuff like that. Make him compliments. Make him your friend. Ask him about his wife, his family.

How do you get someone to be less critical of someone else's suggestions?

People get critical and defensive when they perceive you to be a threat to their job. It's not what you say that matters, it's how you say it. Because you are younger than he is, pretend to be his "apprentice" or something. He will be far less critical of you once you convince him with your cleverness that you're on "his team".

| improve this answer | |

You must log in to answer this question.

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