Our kid presents his share of challenges, but thankfully shoving isn't one of them. The daycare tells me that if shoving happens. They give the shover a quick and stern correction, then turn their attention to the kid who was shoved. They make the "aggressor" "help" in making the "victim" feel better by giving gentle touches, hugs etc. The intent is to teach empathy.
Not sure if this strategy works in a playground setting, or with older kids. Maybe the best thing is "natural consequences." Three year olds are old enough to make the decision not to play with someone if they don't play nicely.
Last thought, maybe you can offer up some rules and consequences, and have your kid mull them over. Our boy is 2.5. We were at a neighbor's this weekend. He threw his toy car on the floor. I told him that if he threw the car again, we would have to leave. He repeated my directions several times (internalizing the rule perhaps), but did not throw the car.
Choose other consequences if you aren't prepared/ willing to leave a place. Or if you think he is behaving badly to bring about a quick departure which is what he is really after. A time out can be administered anywhere, as can a spanking, if you are so inclined.
Good luck to you and yours,
F. B.