For lithium batteries (phone batteries) it’s actually more important than draining to 0. Many studies indicate that the average phone battery should last several thousand cycles while only losing 5-10% of total capacity provided it is never charged above 80%. Minimum % (even down to 0%) and charge rate below 70% is also unrestricted.
The tl;dr is that everytime you charge to 100% is the same as 50-100 charges to 80%. Draining a lithium chemistry battery to 0 isn’t an issue as long as you don’t leave it in a discharged state (immediately charging).
I don’t think either is actually true. I know many programmers who can fix a problem once the bug is identified but wouldn’t be able to find it themselves nor would they be able to determine if a bug is exploitable without significant coaching.
Exploit finding is a specific skill set that requires thinking about multiple levels of abstraction simultaneously (or intentionally methodically). I have found that most programmers simply don’t do this.
I think the definition of “good” comes into play here, because the vast majority of programmers need to dependably discover solutions to problems that other people find. Ingenuity and multilevel abstract thinking are not critically important and many of these engineers who reliably fix problems without hand holding are good engineers in my book.
I suppose that it could be argued that finding the source of a bug from a bug report requires detective skills, but even this is mostly guided inspection with modern tooling.