site banner

Wellness Wednesday for September 7, 2022

The Wednesday Wellness threads are meant to encourage users to ask for and provide advice and motivation to improve their lives. It isn't intended as a 'containment thread' and any content which could go here could instead be posted in its own thread. You could post:

  • Requests for advice and / or encouragement. On basically any topic and for any scale of problem.

  • Updates to let us know how you are doing. This provides valuable feedback on past advice / encouragement and will hopefully make people feel a little more motivated to follow through. If you want to be reminded to post your update, see the post titled 'update reminders', below.

  • Advice. This can be in response to a request for advice or just something that you think could be generally useful for many people here.

  • Encouragement. Probably best directed at specific users, but if you feel like just encouraging people in general I don't think anyone is going to object. I don't think I really need to say this, but just to be clear; encouragement should have a generally positive tone and not shame people (if people feel that shame might be an effective tool for motivating people, please discuss this so we can form a group consensus on how to use it rather than just trying it).

14
Jump in the discussion.

No email address required.

Why is TL2's code shit? Like, is it buggy, or poorly-designed? Or are you truly just nitpicking, maybe about style or other non-critical path type stuff?

Talk to your manager again. You seem worried that you're being a problem, but don't be afraid to bring it up: it doesn't reflect poorly on you. This is why you have a manager. Provide examples of the shit code if necessary.

Also the environment in general might just be shit. I've never worked at FAANG though so idk. But if TL3 is unsatisfactory in some other way, then it might be time to update your resume.

A sample size of two is too small to pull conclusions in either direction. You are overthinking things.

What's the approach to code review on your team? Is it "pls review pr, we need to push it to prod rn"? If it is, explicitly budgeting enough time to do a relaxed review and fix the code should help with the issue.

I would prefer having a tech lead that constantly makes me defend/rationalize my code vs an incompetent one that might make a stupid decision down the line that could create far more work for me than aquiecing to dumb nitpicking.

Are you overly opinionated about coding and style?

As an engineer, I've worked under several different principals and every one of them had a different set of specialties, priorities and quirks.

My favorite was very "wild west" and valued constructability and cost for the client above typos, minor errors, unclear language. One of my most eye-opening experiences with him was catching him on the phone leaving a deposition for a lawsuit with tens of millions in the balance. He non-chalantly told me not to worry about this technical question I had because the risk was low and the factor of safety would more than account for it. This was the highest ranked chief engineer in one of the largest companies in our niche in the world.

My second favorite mentor was more or less the opposite and fit the mold of your overly-detail oriented, micro-managing engineer. His emphasis was on details, specificity and minimization of liability at the expense of client goodwill. The right answer is the right answer, after all, feasibility be damned.

Any way, that's a lot of lead up to say that you're missing another interpretation of the situation: you're not necessarily better or smarter than your leads, but have gained some kind of detail-orientedness from your last one and eventually may learn something yet from your new lead (hard to say, but maybe delegation to technician types? Alternatively, he could actually be useless, not enough info to determine). TL1 may have this trait in over abundance and TL2 may not have it at all, in which case having a healthy-but-not dysfunctional quantity of this trait may make you a better, well-rounded programmer than either. Have a little self awareness and communicate with TL2 and this may work to the benefit of both of you.

Alternative: within some bounds of acceptability, there is no such thing as objectively good code, and you three are just trying to push your personal tastes onto each other. This would explain why no one seems to be able to convince any one else of their point of view, even in as seemingly objective a domain as CS.

You'll make spaghetti code and code debt just rubber stamping or giving minimal input on the reviews. My philosophy is to try to make it as easy on my future self or future coders as possible, because in my experience teams never have time to do refactoring or clean up work. There's always something else to make a priority.

To be less nitpicky sounding, I focus on the why of my comments. I try to explain what good it would do, with the level of detail I include based on the coder's level of experience. With a more senior dev, I may also ask why they chose to do it that way to see if there's something I'm missing. Basically, make it a conversation with learning opportunities. Mileage may vary with the results.

Give that a try, and if nothing improves then, yeah, slip in the rubber stamp and maybe start looking for another team. My current team lead talks a lot about good, clean, reusable, readable code and then in practice barely reviews code on my project and will add subpar code as a quick fix to a bug. I've lowered some of my expectations to cut back my frustration and sneak in a code cleanup here and there.