- Make branch for the ticket
- Make periodic commits to branch
- Open PR from branch to main
- (optional) if the changes are big, I have a meeting with devs to discuss it. If I can't easily explain to the junior devs what I did and why, it means I did something wrong.
As a senior dev, I've found "can the junior devs grok wtf I did/made" to be an excellent "did I overengineer?" Litmus test.
A good implementation should be not too hard to explain to the juniors, and they should be able to "get it" in a single short 20-30 minute meeting at most.
If they are curious/interested and ask questions, that's a good sign I made something useful and worthwhile.
If I get a lot of "I'm not sure I get it" and blank stares, I probably have overcomplicated the solution.
If that "ooooh, okay!" Comes quickly, then we are good!