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?
Bob has great ideas / an eye for design, which has definitely helped. Unfortunately, he's here as a developer because he wanted to move away from the webdesign space so nudging him that direction isn't want he wants.
He was fully on our backend at the start and was getting help from another dev. He's now on the frontend because that dev needed a break and was hoping the familiarity/different language would help. The problems I see are language non-specific, like basic programming principals/architecture.
Bob would probably do fine on a team that's just maintaining a legacy codebase, but we're writing everything from scratch.
It's a weird work environment; HR/performance improvement plans aren't really a thing. We're basically at the step of asking if he should be removed but trying to find something for him. He's a good person and fits well socially.