Hello again, I’m in a situation where the one the senior devs on my team just isn’t following best practices we laid out in our internal documentation, nor the generally agreed best practices for react; his code works mind you, but as a a team working on a client piece I’m not super comfortable with something so fragile being passed to the client.

He also doesn’t like unit testing and only includes minimal smoke tests, often times he writes his components in ways that will break existing unit tests (there is a caveat that one of the components which is breaking is super fragile; he also led the creation of that one.) But then leaves me to fix it during PR approval.

It’s weird because I literally went through most of the same training in company with him on best practices and TDD, but he just seems to ignore it.

I’m not super comfortable approving his work, but its functional and I don’t want to hold up sprints,but I’m keenly aware that it could make things really messy whenbwe leave and the client begins to handle it on their own.

What are y’alls thoughts on this, is this sort of thing common?

97 points

breaks tests

leaves me to fix them during approval

I’m sorry, what? If he broke it, he fixes it. There should be guard rails that prevent him from merging his code until all the tests pass, and you as a reviewer should refuse to even start a code review unless the build is green.

permalink
report
reply
12 points

Exactly, don’t even strat looking at a PR that doesn’t pass the CI pipeline

permalink
report
parent
reply
8 points
*
Deleted by creator
permalink
report
parent
reply
3 points

Yup. Nothing wrong with pushing up a draft PR and asking for feedback; but definitely need to be an active participant in fixing the issues, not just expect somebody else to do your work for you.

That does lead to some sticky inter-personal situations though. Like there’s people on my team that I trust enough to just rubber-stamp a PR that looks good but doesn’t have test coverage etc. Can generally trust those people will let me know if the failing tests uncover some substantial work that needs to be re-reviewed.

There’s other people I don’t trust and will insist their build passes before I review it. Once that person notices they’re being held to a different standard, it can be difficult (but necessary) to have a conversation about what they need to change in order to earn that trust.

permalink
report
parent
reply
72 points

I don’t understand why you’d be fixing unit tests he broke during his pr. It seems like he might be bullying you? Maybe discuss with your manager.

permalink
report
reply
25 points

This stuck out to me too. Why are you fixing things on their PR? If their changes broke the tests then they need to make the changes to fix them before merging

permalink
report
parent
reply
6 points

Unless it was directly caused by some code he wrote earlier that wasn’t caught at the time, he shouldn’t even consider that

permalink
report
parent
reply
6 points

even if it is an earlier, yet undeteced bug, whoever found it (in this case, the cowboy), should at least log it, if not open a separate PR to fix it.

permalink
report
parent
reply
67 points

I think this is far more common than one would hope. There are many senior developers out there who got their experience in a different time, when test coverage wasn’t important in many businesses. Writing test code is hard and it might be that your teammate simply don’t know how to do it.
If the tests aren’t there at approval time, they will never be there. I think it is perfectly fine to block approval, especially since you all agreed on it.

permalink
report
reply
58 points
*

Yes, it’s common. No, it shouldn’t be tolerated. Your boss/tech lead/whatever should be involved. Here is what should be done ideally:

  • not following best practices: you MUST implement merge requests (GitLab, GitHub, etc.) and his code shouldn’t be approved which means that his code won’t ever be merged in a shitty state. Force 1 or 2 approvals for each MR, and it should not be possible to merge an MR if it has open comments. The boss should ask every day “why is your code not merged yet?” and he’ll have to explain why people don’t approve his shitty code.
  • shitty unit-tests: same thing, the boss should show him how to do this, and the MR shouldn’t be approved.
  • breaking unit-tests: it’s the job of the CI to literally block MRs that break unit-tests (whether it’s code coverage or unit-tests).
  • leaves me to fix it during PR approval: NO, it’s HIS merge request, not yours.

To sum it up: devs must not approve his MRs, the CI must block MRs that break tests.

permalink
report
reply
16 points

Last point is SO painful… I have a coworker that writes so much shitty code OR it straight up doesn’t work… he once submitted a PR that didn’t work when used! Like, I just started the thing and it was utterly broken - both the implementation and the design.

More so, some of his PRs are a giant nightmare of over engineered crap that he, at some point, doesn’t even understand.

Worst of all, he gets angry at me for pointing out that either they don’t work or they are a shitty, complex, mess

Honestly, at some point I started approving his PR and calling it a day; oh we don’t have tests cause reasons, I tried to use TS too but since my boss finds it too complicated we are not using it again for new projects… funny

permalink
report
parent
reply
2 points

This thread makes me so grateful for working with competent people.

permalink
report
parent
reply
2 points

just yesterday I had to drop a lot of his commits cause they broke some core functionality lol

permalink
report
parent
reply
42 points
*

I’d start rejecting his PRs lol, why is anyone but the original developer fixing his PRs?

permalink
report
reply
2 points

I agree - if the reviewer doesn’t have the power to reject prs then they aren’t very useful reviews imo.

permalink
report
parent
reply
2 points

Right like, if we’re just doing PR reviews to do them ok but don’t I have anything better to do?

permalink
report
parent
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.2K

    Monthly active users

  • 1.8K

    Posts

  • 30K

    Comments