It's very possible to improve your skills on the side for a much, much better junior position. Resume padding and climbing the corporate ladder is not as effective as it used to be.

Do the least amount required in your current job to pay the bills, then, on the side, improve your skills. You don't need to climb up the corporate chain and suck dick until it's your dick being sucked.

The "Good HS grades -> Good college -> Good junior level job at a corporation -> stick at that corporation until you get a good senior level job" is firmly stuck in the 60s, 70s and 80s for a reason. The highest salaried jobs in programming are going to kids job-hopping from company to company in the Bay Area, graduating from average colleges (some minority not even having a degree) working at top companies who's HR departments publicly disavow the previously worshiped legitimacy of the GPA (word is, Google HR isn't even allowed to look at your GPA).

I recently glanced over this test Andreessen-Horowitz was giving out to recruit software engineers for some in-house development thing they were doing. In the description for the application, they said : "A resume is a plus, but you don't need to have it."

I know that, obviously, people with college degrees from top colleges have a higher rate of success in the corporate marketplace. Killer resumes and years of experience will likely get you very far. Sticking around at a successful company for a lot of years will likely get you a very respected senior role with really awesome stock options.

But the point is, for whatever very small but still existent minority, 19 year old college dropouts that have done 3 6-month jobs are still getting hired. Which means that a killer resume and corporate ladder climbing aren't hard-and-fast requirements anymore -- the only hard-and-fast requirement is merit. Obviously years of working within a single environment will get you a lot of merit, and obviously Google will start locations in Ann-Arbor and Pittsburgh just cause UMich and CMU are there, but that's just because Google values those areas for their high rate of merit, not for their pre-existing prestige.

And what OP is describing certainly shows that he is not properly developing his merit.

Now, in the 60s through 80s, there weren't really too many resources available to improve your merit on your own. So if you were in a shitty position you mostly just grit your teeth until you got in a slightly better position to improve your merit that involved less teeth-gritting and more enjoyable skill growth, and then used that skill growth to get into a slightly better position, ad infinitum where the base case is your retirement. So the best advice was to stick in a single corporate environment until you stopped being a junior and started becoming a senior because there was no more efficient way to develop your merit.

But nowadays, there are resources aplenty and much more efficient ways of developing merit. It's very easy to get cheap access to field-defining textbooks and online lecture videos and PDFs and ebooks and cheap personal computers with which to tinker around with and yadda yadda yadda, all of which can be done by any reasonably smart and dedicated but unexperienced young person, all of which is a much better use of said young person's time than climbing the corporate ladder until you got a job that didn't make you want to kill yourself.

So it's very possible to develop your skills and your merit without the prestige that you used to need in the form of a killer resume or long corporate history or stellar college grades.

So as long as you mastered your data structures & algorithms, your theoretical computer science, so as long as you mastered programming principles and can really say you're an expert in a language because you spent many man hours hacking away with that language at home, so as long as you know your OO, so as long as you prep up with the plentiful blog posts there are about mastering interviews (even for specific companies -- Steve Yegge has written a couple blog posts about mastering the Google interview, and for specific languages -- and I've very recently come across a very useful and thorough blog for knowing the ins-and-outs of Java for mastering interviews that demand expertise in that language), you can get an awesome job. Even if you never land a interview with Google or Facebook (because at that scale, so many hopeless hopefuls apply and you couldn't possibly scale HR with the rate of applicants, so you sort of have to rely on less-than-perfect prestige requirements like college degree from a decent college or networking with other good companies in the Valley. But I'm saying that the modern age allows for extremely low barriers for finding quality applicants and getting quality knowledge to become a quality applicant, and while there are certain institutions where you still sort-of need to reply on prestige, for the most part the industry is becoming a lot better) , you can definitely land a phone screen with an awesome software shop at least better than whatever shitty position you're currently in, and then you can get the interview after you display competence in the screen, and then you can land the job. And after that, it's all improving : improving your skill with awesome workmates in an awesome environment, and then eventually moving on to greener pastures at ... greener?... companies if it is your desire to do so.

Note that I'm not saying getting a more fulfilling job is easier by any means. Top companies will still only take top people. Just that, as barriers between companies and applicants lower and modern technology makes judgment of qualification more efficient, "top" is going to rely more on merit than prestige. And you do not gain any merit from staying at a shitty job.