You know what I just realised, doing your best is not the same thing as being perfect. You might say that I am a little slow on the uptake, but at least I figured it out.
I caught myself mentally berating myself the other day ('cause doing it for others to hear is just plain weird) for some sloppy food choices, and feeling tired during a training session. I subscribe to the thought process that every rep, of every set takes me closer to my goal (whatever that may be at the time) and if I am not giving it my best effort on each one, than I clearly don't want whatever I'm training for badly enough.
The most important word in the above paragraph, effort. Doing your best means working your hardest despite circumstances - I was tired, and hadn't been fueling my body properly. Is that an excuse, no, more a statement of fact. My best that day was not as great as some of my other days, but that doesn't mean that my effort level was any less. And, no, I wasn't perfect but that's the point.
Anytime you decide what you want, and set about working for it, you have to understand that your plan to get there is just a guideline. Some days it's going to work, and other days life is going to get in your way. That doesn't mean you're not doing your best, that means you are giving it all you have for that day. And, that's the secret, not beating yourself up when you're not perfect, instead accepting that days like that are part of the process and that you will need to dig a little deeper to find your best effort, regardless of circumstance, on those ones.