I have not found punishments to work with my 3.5 year old. She doesn’t connect her actions with consequences, especially if they are delayed like “if you don’t brush your teeth there’s no book before bed.” We don’t hit our kids and you shouldn’t either, so the only immediate consequences are removal like “if you don’t stop hitting your brother with that ball peen hammer I will take it and put it away.”
Instead what I’ve found useful for my kid is telling, not asking. For instance bed times have been a serious struggle for weeks with her. My wife negotiated and discusses - explaining ourselves, that it’s time for bed, and why, has worked before. But not now. Instead we have a firm routine - bath, brush teeth, one book, one song, kiss on the head, love you, goodnight. Then I spend the next 5-40 minutes standing outside her door. When she comes out or gets up, I don’t argue or engage. “It’s bed time sweetie, goodnight I love you” forehead kiss, bed.
Night one she’s kicking and screaming for 45 minutes. Night 2 was 20, last night was 5. It’s not neglect or ignoring her, just being very clear and direct. It’s bed time. Goodnight. “I wanna ask momma a queeeeeeestiooooooooon” it’s bed time. Goodnight.
“It’s NOT bed time!” Same answer
So far so good, but routine has worked better than punishment IME
Specifically for hitting and hurting we’ve found redirection works. With my older son, when he was about that age, we would tell him “when we feel like hitting, we hug instead.” That helped to give him a physical action and redirect his emotions. With our daughter, again, we’ve just been very firm. “We NEVER touch other people like that.” And we disengage. Escalation makes it worse and again, punishment doesn’t really help. So we try to teach them the rules “we NEVER touch people like that” and the correct behavior “and when we do, we need to tell them we are sorry.”