I have a 9 year old boy and things have been like this forever. Just to set the scene, we are absolutely non-violent parents, there is no violence in his life, dh and I speak respectfully, are affectionate, and know our way around parenting advice.
Nevertheless, despite pulling ds up on his behaviour nearly every time it is violent or unacceptable, we find that he isn't able in some way to learn what not to do. If there is a stone, he will throw it, and not think about where it lands. It is the throwing that he is compelled by; he isn't aiming to harm. Same with sticks. He wants to hit something. If that thing is a person, he will do it. It isn't anger, it's almost like he doesn't see the person. Telling him not to do it makes little difference, and consequences have never really worked with him. He only seems to react if we go completely over the top and shout and ban him from everything for a week/month. Even then he will shrug it off later.
While this is easy to explain away in a four year old (doesn't understand consequences/not fully empathetic yet/whatever/keep plugging away) it is worrying that it's only getting a little better by this age. Right now it's poking and pushing and stepping on feet. We can punish him and explain until we are hoarse that people do not like this, it does not make them like you or want to laugh and play, it is annoying and it does not stop him. Why can he not understand and see that he needs to try to stop?
We have always always been keen to give him (not over the top but realistic) praise for the good things he does (of which there are some, or many, depending on the day) and point up good behaviour and thinking about others and behaving with respect and now, being able to stop himself. I know he likes this. It does not stop the need for attention for the other, frankly bad behaviour, though.
I recently found out that a good friend has been saying that he is like this because we never tell him off. I'm actually furious (and hurt) at that because it's patently, visibly not true: some days I feel like all I've done is tell him off for everything, even things that other, better-natured children can do with nobody narrowing their eyes at them. We have clear boundaries and have not changed them. He is not allowed to hurt people and he should behave kindly and respectfully.
However it has made me realise that whatever we are doing is not enough, it is not stopping the behaviour, and we need to be more effective.
So please could I have some advice, particularly from people who have challenging children (it's honestly no use to me if you have a child who gets upset at the thought of having done wrong and therefore tries to put things right!). Obviously there's something up with his emotional development, but what?