When I first joined my current company, there was a colleague(developer) on the same level as I was, who has got reputation of not producing any results, got involved in my first project during my 3 month probation period. He is very close to my boss and the only thing he contributed with my project was to throw some stones at my boss's face and pray that it hit him ( => he gives worthless ideas that might fail/delay the project). I was too worried to approach my boss directly and explain why his ideas are crap, instead as he is also a fellow developer ( not a superior) I just proceeded with what is required for the project and released it successfully (4 yr and still working without a single bug).
Based on the success of this project, he got promoted to project manager! (even though he is a developer he hasn't written a single line of code, all he did was attending meetings and providing some input that is very trivial) And I finished my probation period successfully at the same time.
4 years passed and I am still with the same company and the same thing is happening again and again. As he is now the project manager, If anything is a success my boss assigns the credit to him and the blame like delays etc on the team and most of the times on me, if I am part of the project. [I know this as my boss mentioned the delays in last years appraisal meeting and he asked me to meet deadlines - but in truth he got records and he knows clearly that the delays are not because of me or the team.]
I have got myself 3 certifications since I joined, I am now more qualified and experienced than anyone in the team and all the projects I involved in are a success [I was usually given carefully picked up tasks that are internal to the dept. or taks/components/services that are finally consumed in the projects]. Still I am in the same position and since he is the project manager, he keeps recruiting newbies and he is even giving more exposure to them than me. I am currently in the lowest of the food chain and even newbie rookies are acting as leads, but I am not being allowed to lead on projects. I have discussed this and even documented it in my appraisal, but that was hopeless.
What should I do? Please help.
Update ( based on the comments)- I can provide partially what's going wrong. Both my boss and the manager guy are incompetent. The company was old and all the people are old school. They have been there for 30 years and both of them got a reputation for not providing what the business needs. They don't want anyone on the management ladder who can claim to provide better results. But the problem is, even if we provide suggestions to genuinely help them and move towards better project mgmt. and results, they still get innovative and do what they think is right the old school style and make a mess. They even scrapped a project which involved REST services (none in the team knows WCF other than me) for an external marketing campaign which I did (coz I got too much exposure and the stakeholders involved are offshore and knows me as the person worked on it). In short, they feel insecure.