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?

  • @undefined
    link
    311 months ago

    I’ve been dealing with similar things over the last few months.

    Went through an org restructure, joined a different team and our tech lead was relatively new to the company but has 20yrs experience, sounded good!

    Wrong.

    Poor communication skills, endless pointless wrappers over everything and even simple things are wildly over-engineered with zero documentation, poor naming and zero tests to verify his homebrew solutions actually work or not.

    We go live in 2 months for a nation-wide release. Send help.

    • @[email protected]
      link
      fedilink
      211 months ago

      I wonder, what kind of wrappers? I have seen some wrappers that seem useless at first, but they shine when we do a refactor because the wrappers concentrate logic in one place.

      • @undefined
        link
        211 months ago

        the pointless and poorly named kind.

        Here’s one example of many:

        class Group extends StatelessWidget {
          final CrossAxisAlignment crossAxisAlignment;
          final List children;
        
          const Group({
            super.key,
            this.crossAxisAlignment = CrossAxisAlignment.stretch,
            required this.children,
          });
        
          @override
          Widget build(BuildContext context) => Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: crossAxisAlignment,
                children: children,
              );
        }
        

        For those unfamiliar with Flutter, Column is your go-to out of the box widget that’s already flexible and simple enough to implement and customize. Group exists purely to set a cross axis alignment value, and by name provides no indication as to what it does or how it lays out its children.

        All that just to save one line to override the default cross axis alignment…