You asked for numbers. I probably shouldn't do this under my real name but... who gives a fuck.<p>US, 29 years old, 6.5 years in the industry. Salary growth has been about 12-14% per year, and I've made a lot of career mistakes, hence fairly average results. I'd probably have done 18-20% if I had (a) not made those mistakes, while (b) switching employers strategically. Most of the growth, as others have noted, occurs when you switch.<p>Obviously you can't continue getting 20% improvements every year for 40 years, but if you work hard, you should be able to get 10-15% per year for a while, and then you get to a point where it's easier and more fruitful to push for more time and autonomy than salary increases.<p>What are called "performance" bonuses actually have a lot to do with macroeconomic conditions. One year, at one job, I got a 60% bonus. I was good, but nowhere near the strongest on the team. Equity allotments have a lot to do with what the board will allow. One of the reasons Facebook has been able to get so many good engineers is that the board doesn't set caps on engineer stock allotments, which is the case for many startups. Consequently, Facebook was free to offer 6- and 7-figure options packages (at valuation; <i>not</i> packages that eventually became worth that much) to engineers and get some really credible people, while many startups can't.<p>When you get into the game has an effect on what you'll make and what your trajectory will be. If I'd entered the market in 2002, I'd have entered in a time when $50k was a good salary for an entry-level software engineer. (No, I'm not kidding.) In 2006, when I did enter, it was in the $80k range. At peak in early 2012, it was about $105k.<p>Getting an increase usually involves changing companies unless you're in the top 10% for political success and can have a real career there and keep getting promotions. Why is it this way? Well, there are two things to keep in mind. The first is that salaries are low because the company is taking a risk. A good software engineer is worth $500k easily, but the salary is going to be lower because there's a risk that any specific person is not going to be any good. So what happens after someone has a chance to prove him- or herself? Well, that's the second problem. Now you've worked for cheap for a year, and if you ask for a raise, you're asking your boss to pay more for the same work. If you ask for a promotion or better work, then you're a demanding subordinate and that hurts you as well.<p>Most companies have a "real player" track that involves a promotion (and a ~20% raise, with more potential for bonuses) every 2 years, and an "everyone else" track where a promotion might happen every 6-8. If you end up on the latter track, you need to change jobs and build your own real-player track. I think the optimal leaving point (if you're on the loser track) is around 2 years of employment, because at 2 years you are likely to get a real promotion in your next job (you have to create the impression, though, that you're about to get promoted where you are, even if it's not true) whereas bolting after 6 months will just get you a lateral move and too much of that is damaging.<p>Salary reporting sites tend to be accurate regarding base salaries, but data on performance-based bonuses and equity grants seem to be dodgy. There's also a hell of a lot of false signaling that goes on there, especially in finance where employers ask about bonus history and everyone claims to have had top bonus.