To begin with, as others have pointed out, it is difficult to get a promotion without actually asking for one and having a good case to justify getting that promotion as well. So before you go in to any sort of meeting with you manager you need to be able to answer at least some of the following questions:
- When do junior developers here generally get their first promotion?
- What is the company policy in regards to raises?
- If I were to leave the company, could I get a non-junior developer position?
- What is the average salary for other developers similar to myself?
- Do I know exactly what I want?
To address these questions in a bit more depth:
When do junior developers here generally get their first promotion?
This is a fairly obvious question that you are going to need to answer before you go into an interview and you might be able to find this out by talking to others at your company. If you find out that the range seems to be between two and five years with the average being around three years, then you have some information that you can work with. This is a good time to talk to other developers that you consider to be mentors and see what their impression of your growth and development is. Managers generally don't work in a vacuum and it wouldn't be unusual for them to go to senior developers at the company and see what their option of your work is as well. If they note areas that you need improvement in then you now have some goals that you can work towards.
What is the company policy in regards to raises and promotions?
You need to be familiar with the company policy in regards to raises and promotions so that you know how to frame any discussions you may have with your manager. If the company only has one promotion cycle a year and it's already past then confronting your manager trying to get a promotion will not accomplish anything productive as your manager might not have the ability to give an out of cycle promotion, likewise for raises. However, you might be able to approach your manager and frame the discussion in regards to trying to put together a plan to ensure that you are both eligible and a strong candidate for a promotion or significant raise.
If I were to leave the company, could I get a non-junior developer
This one might be a bit harder to research, but basically just pull up the job listings and see what they are looking for in terms of mid to senior level positions and also note the ranges for what they consider junior developers to be. Since these terms can be a bit loose it might be difficult to figure out a direct mapping between companies but if you see a trend in your area of 5+ years experience for mid level developers then you might have a hard time finding a non-junior level position if you were to leave your current job.
What is the average salary for other developers similar to myself?
Look around online for salary information for your area on a site like Salary.com to see what the market rates seem to be like for your area. If you are under market you might have a case for a more significant raise; however, if you are over market then you might find it difficult to make a strong case for a raise. Human resources departments keep an eye on what the market rates are where you are so if you are working for a good company you should find that you are somewhere around the average for the area.
Do I know exactly what I want?
This is going to be a big one, do you know exactly what you what? Are you looking for more responsibility, more money, more time off, etc? Being able to answer this to yourself is going to allow you to frame your discussion with your manager. If money isn't as big of a concern as getting some extra time off then this is something that you might be able to negotiate with your manager without much difficulty (i.e. work an extra hour each day and leave Friday at noon) where as if you aren't sure what you are looking for, your manager might have a hard time with assisting you.