I've been very blessed at my current job. I started in the lowest development job title and I'm currently in the highest non-management development position. I've received 3 promotions over the span of the 7 years I've been with the company. Getting a promotion without job hopping can be really challenging. I think there is much more respect to be earned by staying at a single company working your way through the ranks. Here is a collection of helpful tips I've seen through my own promotions and other people's promotions. Keep in mind that all companies are different and these may not apply to every job.
Let your boss know you are interested in a promotion. I was once a holiday hire at a retail store and there were 2 spots for permanent hires after the season. I was the top holiday hire, but they overlooked me because I had been talking about applying somewhere else. I missed out a pretty decent gig because I didn't let him know my intentions.
I would encourage you to sit down with your supervisor and make sure he knows your career goals. Follow up with them regularly to make sure you are on track.
Have you ever thought "I deserve a promotion!"? If you have, go ahead and slap yourself really hard in the face. Like, right now! This is totally the wrong attitude to have when looking for a promotion. You need to prove you are worth a promotion.
Every company has a different method to determine the value of their employees. In my scenario, clients are charged per hour for my work. I pushed myself to learn as much as I could. This allowed me to work on more projects and being good at it.
You should not confuse this with working extra hours. Working 60 hours a week to prove you are Sr. Developer material will do more harm than good. You will set the expectations that you will always work those hours and you wont ever be able to get back down to a 40 hour a week work load. You should spend time outside of work reading and trying to expand your skill set. You wont always be provided opportunities to try new stuff and outside dedication will demonstrate your desire to improve and grow.
It's important to never judge a promotion based off another employee's experience. I helped out Sr. Developers on jQuery all the time when I was a Developer 1. I frequently thought the roles should have been switched and I was the one getting help. I thought that I should be the Sr. Developer because I was more intelligent on the subject. I didn't think about the fact that the other developer had 8 years experience in the field and was much more experience in planning and execution than I was. Never assume that you should have the same title as someone else because you THINK you are better at the job .
This kind of follows what I said above. Keeping a positive attitude can go a long way. Never fight for a promotion as a response to someone else getting the promotion you wanted. This is more of an emotional response and will prove to be more harmful than good. It's impossible to know what the other person went through to earn the promotion. They may have been lobbying for it longer than you or they are really good at some aspects you over looked. Occasionally, politics come into play in another person's promotion, but you just have to get over that. Worry about yourself and not other people.
Whatever you do, don't threaten by saying you are going to look for a different job. You are just going to burn bridges by doing this. The job interview with offer and counter offer maneuver just for a raise is really risky and could also damage relationships.
You also don't want to push a promotion to get away from someone or to report to someone else. I've seen this backfire many times. It's more beneficial to actually work through your problems with other employees than avoid them.
Not all companies can issue promotions on the spot. Figure out how your company handles them. Company A may only have 5 Sr. Developer positions and only fill them when there is an absent seat. Company B may only do promotions every six months due to budget forecasting. Get the conversation going and make sure your superiors are aware of where you are wanting to go when these scenarios arise.
Job titles and responsibilities also change a lot. You need to keep up with this. A Sr. Developer for a company of 50 employees may have completely different responsibilities than when it becomes a company of 100 employees. Mold yourself and take on the additional responsibilities to prove you are ready for the title you want.
Stay consistent with what you want. Do you want to go into advanced coding or leadership? Sit down and really think about it before you start pushing for it. Bouncing back and forth will give the impression you really don't know what you want.
I cannot stress this enough. It's really easy to get bent out of shape if things don't go the way you think they should. Keeping a level head and a mature attitude can go a long way.
I hope you found something useful here. Let me know if you found this useful or if you think it's hogwash. Thanks for reading!