It's definitely made harder by having a little one as waddlelikeapenguin says. They just take over and I know he feels left out a bit.
Last night, prime example... my DM is visiting for Easter and he wanted to show her this marble run contraption he'd built at school but little DD took over, playing the cute card and dragged DM off to read her stories, leaving DS feeling totally dejected that he lashed out. Not knowing what DD had done, I then reprimanded him for lashing out. DH went to talk to him and then I felt awful when he told me what really happened.
I made sure he got first cuddles this morning and have apologised to him for reading the situation wrong.
But then he'll flip at the slightest thing, like the other night he wanted to sit in the front of the car and I said he should sit in the back, so he started ranting at me in the street. It's so hard to keep cool. It's a bloody minefield. It totally blindsides you.
When I spoke to my friend, who has 3 boys (11, 6 & 1) she advised me to not take it personally, let them get it off their chest but have lines that they know aren't crossable and stand firm with your expectations on them, giving clear consequences if they do cross them.
I know DS is good kid because he is good at school and top set. The teachers all tell me he is joy to teach, really engaged, enthusiastic, lots of friends etc etc so I know he can hold it together when he needs to. I suppose I should be happy he feels he can express himself so.... errr.... freely at home, so he must feel secure enough to do so. Bloody kids eh!