My eldest son has a simple morning chore. After breakfast, he's supposed to empty the dishwasher and load up the breakfast dishes. He has had this chore for three years, and for three years he has forgotten to do it every single day. He promptly does it when reminded, he simply just doesn't remember. I could punish him for forgetting, or I could simply remind him every morning.
At first he was punished. We would ban TV on the days he forgot, or take away another privilege. After many grumpy mornings I had to ask myself, “is this the hill I want to die on?” On one hand, I believe it's very important to learn responsibility as a child, on the other hand this is such a minor thing and he does promptly and cheerfully do it with a small reminder.
I finally decided it wasn't worth the battle. Instead, we implemented logical consequences. If the dishwasher wasn't empty by dinner time, I couldn't cook. So dinner was delayed. It took about two weeks of delayed dinners before my growing, hungry 12-year-old realized he wouldn't get dinner unless the dishwasher was empty. Nowadays the dishwasher is empty on time, without the morning arguments or grumpiness.
I've found logical consequences work most of the time to manage improper behavior. For example, with a young child that's hitting, telling them that their behavior is hurting someone else so they must do or play something else, then physically (but not roughly) leading them to a different activity often eradicates the problem. Eventually, they learn to remove themselves from the situation on their own, with only a small reminder.
Of course, behavior that is dangerous to the child or others must be dealt with promptly and sometimes with more traditional discipline. But the small battles, where children aren't purposefully being disobedient, can usually be solved by applying logical consequences instead of punishments or engaging in a drawn out battle.