Ask HN: How do you deal with varying levels of competency in your team?
https://news.ycombinator.com/item?id=33106719As I've become more senior I've struggled more with working with less experienced (and in some cases maybe less talented?) devs.
A lot of things we do as developers are quite easy to build in one way or another. The majority of complexity I find is in how you build something so it's easy to maintain, test and extend. It's also important not to overcomplicate things, of course, but there's a balance between building something very specific and building something with reasonable assumptions for how it might be used or changed in the future.
I'm often asked to review PRs and I'd say upwards of 75% of the time I see better ways to do something. It's often small things, like making what's being build more configurable / hard coding less, abstracting differently so code is more reusable, naming things better, organising the code in a more logical way, etc. Other times I simply don't agree with the change because it adds complexity with little benefit. You know those requests, "could we make this button green with larger text in this one specific place"? My answer to these requests are typically, no, because unless it's extremely important it's just adding complexity and making thins harder to maintain down the road. But I find junior devs will push back less and have less of an appreciation for how these little change requests without limits can cause havoc for the maintainability of a codebase.
I guess I never know where to strike a balance. It would be very easy for me to reject the majority of PRs I review. And I'm not saying my way is always the best way, but with experience you will notice there are better ways to do things more often.
I hate feeling like I'm blocking people and being a nuance. I try to communicate why I have a certain opinion and try to welcome feedback, but it's draining honestly. And if I don't do this then I have to watch what I build become an unmaintainable mess. It feels a fight against entropy because there's only so much I can do.
Does anyone struggle with this? I suppose to explain the problem in a more succinct way, if you're in the top 5% of devs, 95% of devs by definition are doing things less competently to yourself and you either just accept that or try to micro manage every change made. Neither is ideal and the quality of the overall codebase tends to trend to the lowest common denominator of ability.