[I'm going to set aside the many, many points that I'm tempted to bring up about the assumptions and mindset underlying this question, and instead answer its mercenary core. Realize, though, that the answer I give you will not address several far more important issues -- but I'll stick to your question.]
Issues With Your Premises
- You earn 40% more now than when you started. What multiple of your starting salary did you expect to be earning now? I'm struggling to see how your salary "is almost stagnant over these 12 years," even in inflation-adjusted terms.
- Nevermind inflation, which between 2001 and 2013 would have made your starting salary $127k. You mention that "freshers from Good college are getting around 100k/year now," so they're getting paid worse than you did when you started twelve years ago. From a comparative superiority perspective, you're netting out well.
- "But due to the salary ranges set by the companies, I am not able to earn more." This is not the reason. You probably know that, or you wouldn't have posed this question. More on that below.
- "... the diff between a fresher and experienced software engineers is very less." Patently false. I've managed many software engineers, and assure you this is false.
Some Groundwork
First, some principles:
- You are paid your replacement cost. There's not some sort of intrinsic value to your awesome skillz. Your boss pays you what she thinks it'd cost to replace you.
- Don't compare yourself to the 24-year-old friend of yours that made millions when her company went public. You can't plan for that sort of success. Anyone who tells you differently is implying he'd make billions as an angel investor. He hasn't.
Now some questions:
- Is the absolute value of the money what's most important to you, or the comparison with peers? I'm going to assume the latter for the rest of this answer, since your current income is already 3x the median American household income.
- How high of income variance can you tolerate? There's a way to build slow and steady, and then there's a way to maximize your odds for a huge windfall.
On Pay
- Industries pay differently. I'd recommend banking, preferably hedge-fund coding. Some niche industries are even more lucrative.
- Companies pay differently. Shop around. Either go for a cash-rich company with declining prospects (since they need to pay more for the same talent), or go for a desperate startup that'll load you up on stock.
- Locations pay differently. Silicon Valley = Good. Thailand = Not So Much.
- Think about disposable income. Gross income might not be what's most important to you (unless you truly are most interested in mentioning some impressive base pay figures at cocktail parties). Think state income taxes. Think local cost of living. I might suggest a city like Seattle for a good balance of no state income taxes, several local cash-rich tech companies, and a reasonably low cost of living.
On Improving Your Value
- Consider developing a rare but valuable skill. Like COBOL during the Y2K scare, web skillz before the dot-com crash, or security in the mid 2000's. You need both rare and valuable. Too many folks like you = lower pay. Skills aren't easily monetized = lower pay.
- Get some honest feedback. No one can debug your career over Quora. But if you want to maximize your value, get some honest feedback. And act on it. Rinse, repeat.
- Take inventory of your talents and abilities. If you're just as smart as everyone else, and you work just as hard as everyone else, you're average (by definition). Your question suggests that you're mostly interested in comparative superiority, in which case this advice is really key: you need to know whether you are truly more able and more dedicated than people you want to out-earn. Not just in knowledge, but in personality, composure, communication, temperament, stamina, etc.
- Find a mentor. I recommend connecting with several people making the type of money you want to be making, and asking them how they did it. Decide which of their choices are available to you, pursue those, and prune out the aspects of their success which are due to luck.
- Learn from others. There's always someone whose skills you can aspire to emulate. Find those people, gain those skills.
On Improving the Odds of Success
- Consider high-variance plays. If you can tolerate income variance, and feel you have a knack for assessing early-stage businesses, you might consider joining a series of startups in order to hit a jackpot. Since no one can reliably predict the winners, you need to also exercise discipline on when to cut bait and move on to the next attempt. This approach will take patience and luck, but can net outcomes hugely disproportionate to the talent and effort you contribute.
- Consider ponds and fish. Big fish small pond, small fish big pond, etc. But I belabor.
- Consider promotion strategy. Many ambitious software engineers make the huge mistake of asking for promotions aggressively. In most companies, there are generous overlaps in pay bands between levels. It often pays in such environments to consistently exceed expectations at a lower level rather than to barely meet expectations at the next level.
Final Thoughts
Have a goal in mind. What, exactly, do you want to achieve? Knowing this will make subsequent decisions easier. It'll also help you know when you can finally relax, having achieved it.
On a personal note, I'd strongly counsel against fixating on income maximization. I don't think it'll make you happy. But I promised not to preach, so I'll stop there.