I meet and work with a lot of programmers in my line of work. Some are also friends whom I have known for a long time. I find programmers are generally pretty smart people. The one question that seems to come up when chatting with programmers is salaries and hitting a wall when one has gained a few years of experience.
To answer this question one has to think like a company/employer and also take a hard look at your comfort and skill level.
Most employers hire programmers to fulfill specific tasks. Whether you know a lot or little is immaterial as long as you can perform a job well. In an employer’s mind there is a certain amount of experience that is required to do a job but beyond that requirement, the experience may or may not be useful.
For example whether a programmer has 3 years of experience programming in Java or 10 may not really matter because the experience that is relevant was probably gained in the last 3 years or less.
And here a young programmer, out of school 3 years ago, may get the same amount of pay as compared to a seasoned programmer who has been working for say 15 years (assuming both are applying for the same job).
To a large extent, many employers also will not care where you are based provided the work is of a high quality and if sending work to a different geographic location does not jeopardize the company in any way. This is another often overlooked factor that affects programmer salaries, especially in the U.S.
The solution here is to first think about how much money are you looking to make. And then to ask yourself some questions such as:
1. Can you make a transition to management at the company your are in?
Is this really an option at your company? Most companies will not push programmers onto management positions because there are plenty managers to go around.
2. Are you willing to work as a consultant rather than an employee where your fees are spread over multiple companies?
Being a consultant comes with its own set of problems. You need to be really sharp, up-to-date with a wide variety of technology, and also be a good communicator and salesperson to land good gigs. To a large extent a good recruiter can help with securing new contracts but interviewing and working in a new environment takes some getting used to.
3. Are your skills really in demand where you can get plenty of work and where employers are paying a premium for premium talent?
It helps a lot if you have experience in niche technology areas. For example if you have specific “Big Data” experience, Hadoop etc.
4. Can you put in 70 to 80 hour work weeks as a consultant provided the employer is willing to pay you a $150+ /hr rate?
A lot of dot-com ventures who have a proven idea and funding can pay top hourly rates just to scale a product up fast provided you can work crazy hours. Its important to know how many hours you wish to work and how important a work-life balance is to you.
5. Are you putting a value at other incentives that your company provides you such as: 401k, profit-sharing, stock options, health insurance etc?
There is a certain value in being part of a corporate structure. Alone, you have to figure everything out.
If you think about the points listed above and spend some time being really honest, you should be able to arrive at a reasonable conclusion of where you stand in terms of pay. Where its clear to you that either you are under-paid, fairly paid or being paid really well. It important to attach a value to everything (and not just direct pay) in order to make a fair assessment.