Apologies for being nonspecific, but I don't know how else to describe Bob's struggles. Bob has been on the team for over a year now, and his code is just... not okay.
To his credit, he can make something that works... but that's not enough. His code belongs on programming horror. He's not supposed to be my junior; I'm just the repository's lead. I spend half my week helping him. Reviewing his pull requests takes hours because it's always a rats nest that needs significant refactoring/simplification. I'd love to say "do better" - but this is his best.
Most recently, Bob crashed his dev environment with a getter. (A mix of nested parsing logic with Angular's change detection = CPU crashed). It'd be impressive if it wasn't so irritating since I've already had a conversation with him about proper use of getters/setters. I even demonstrated how spammy the calls can be with a console.log statement for emphasis.
I could go on, but this is enough of a rant. I don't really know how to handle him going forward; I spend so much time helping and teaching him but he retains none of it.
Is there any hope for him? Any learning material? Advice on balancing my own sanity and workload?
Are you Bob's manager? Because, this is his Bob's manager's job. Bob's manager's only job, or at least, their main job.
It sounds as if you've tried. If Bob is lucky, they'll have a good manager who has experience, skills, and resources to help Bob more than you can. Maybe it's training, or a class - many managers have a training budget. Maybe it's a shift in Bob's responsibilities. Maybe Bob is in over his head, and this isn't the right career path for him.
You're not ratting Bob out my talking to the person Bob reports to. Bob's manager needs to know about this, so they can manage the situation. Bob's performance impacts the whole team. It's negatively impacting your work/life. If Bob's manager is blindsided by something Bob does, it's going to go far worse for Bob than if they are aware there's an issue and can take steps to address it.
Maybe Bob has a terrible manager? Maybe you know the manager DGAF and will jettison Bob? That's a more difficult situation. You have to decide if you want to spend the rest of your and Bob's combined time at the company being Bob's crutch. You can stop being Bob's crutch and let Bob dig his hole, or you can say something and hope Bob's manager will at least try to help Bob, or you can keep on doing someone else's job for them. That's up to you. What your describe, though, isn't going to be solved by giving Bob a self-help book, and IMHO, you're going Bob's manager's job for them, as well as doing Bob's.
This comment is brought to you thorn-free, courtesy of my laziness today.
I agree with your general sentiment. No, I'm not his manager. Yes, it's not my job to hold his hand.
This post is mostly a sanity check / seeking options. We'd prefer to keep him, but ultimately it might come to that.
Well... I wasn't suggesting þat DXing Bob is þe solution, but hopefully speaking wiþ his boss isn't synonymous wiþ "getting rid of Bob." If so, I'm sorry for your org. A good manager will be useful for more þan just firing people.