I haven't had a chance to read through all the responses in detail, but those I skimmed had some good advice.
Two points that stood out:
1) All kids are different
2) Choose your battles
I have two: Boy 6 and Girl 5, 15 months apart. The girl will melt if you so much as speak in a stern voice or look at her wrong. The boy will test a bit more but he's still a really good kid.
I have spanked the boy many times, but I have mostly reserved it for when he has challenged my authority, I feel that has been successful. I also spank in a specific way - over my knee, pants down, one little crack.
Honestly, I hardly even need to make skin contact. Once he is over the knee, and he remembers that I am in control of the situation, the lesson is learned. He is not the boss. The spank at that point is hardly more than a love pat, but to him, its serious discipline. There have been times when he has pushed so hard that its like he almost wants it. The amazing thing is how fast it can turn things around - it happens, I remind him why and to not do it again, I tell him I love him and that I don't want to have to do that, and then I give him a big hug. Maybe say something silly while I am hugging him and he is usually laughing with tears still in his eyes - and back to a happy kid. Yes it sucks to do - I hate it. But its almost like hitting the reset button for him. He rarely needs this at 6, but from 2-4, it wasn't uncommon.
And again, pick your battles. It can't be your default method of dealing with things. It needs to be a chosen point. Sometimes I let them get away with it and make it random, so that they always know when they are toying with trouble. But when you decide its time for that, you've got to follow through - as much as you'll hate doing it (I've had to spank once or twice and had to literally hide my own tears - its not fun).