It's harder to get all Bs than all As and one F
I hit a point in school where even my best efforts couldn't get me all As any more, and that led to the difficult but useful lesson in how to get all Bs.
When you're getting all As, you don't need to ask if you're working too hard on something or guess when you're "done". You just meet or exceed the requirements to get an A for each task and that's it. For me, near the end of this period, I just knew I had to use all my time on homework and studying, and that was good enough for all As.
But when you start being unable to get all As, you probably don't have a mental model for "good enough". If all you know is how to classify "A quality work" versus "everything else", then learning exactly how many corners you can cut from "A quality work" to get "B quality work" (but not "D quality work"!) is a whole new skill.
Not to mention, if your reward circuits are all tuned to doing work perfectly, how difficult it is to stop improving something when it's "good enough" and you need to move on to the next thing for the sake of time.
I'm entering this period with work where things are falling apart a bit and I'm catching a lot of plates before they hit the ground. While I can normally just use all my time to do The Things That Are My Job and people tell me the outcome is good, now I need to pick up responsibilities from team members who left. I'll be disappointed in myself if my old tasks aren't done to a high level of quality, but the whole org will have serious issues if I do F quality work on some of my new tasks.
Since my role is technical and all my code is open source, I'm kind of frustrated that having to take on these other responsibilities is tarnishing my public profile, as I have less time to think through new code or review PRs. It's tough that, if things continue deteriorating and I need to find a new job, potential future employers may judge me on the current pace/quality of my coding.