I've gone from being an office temp at 19 to making $75/hr. as a programmer. That's called starting low and finishing high. My rate dipped well below $75 after the dot-com bust, but my next contract's going to be more than that. I'm not from the ghetto, but I can claim to have my own classic American rags to riches stories from time to time.
So please, take it from me. This is how you get a better job: you do a better job.
Whatever it is you're given to do, do it quicker and better than anyone thought possible, and use the extra time to do something else which is obviously useful, threatens no-one, and makes people happy.
It's that simple.
A lot of people think being a good employee is about obeying orders.
It's not. Obedience is what you want to give cops if they catch you speeding. Added value is what you want to give employers. And added value isn't just about doing what they tell you better than somebody else would have done it; it's about doing what they tell you better than anyone else would have done it, and then doing something else that your boss or employer or manager or what have you absolutely would have told you to do if they had even thought of it.
There's a great book on this. I highly recommend it:
Free Prize Inside is about added value, in employees, in businesses, and how defining a good way to add value is key to marketing whatever it is you want to market - yourself, your services, your employer, your favorite programming language, anything. For instance, with Seaside, you might come for the continuations, but you stay for the IDE. With Rails, you come for the scaffolding, but you stay for the metaprogramming. With this blog, you come for the business and technology, but you stay for the lolcats.
I suppose you might come for the Rails and stay for the acting, too - at least recently - so, here's another way to look at it. There's a classic improv game called "Yes, And." All you do is take something somebody says to you, agree with it, and add one additional thing.
That's really all there is to adding value. Example: "I need you to build some database code." "Yes, and I also added some unit tests." They key is first you give them the database code, and then you go, by the way, here are some unit tests, they guarantee that my code works and anybody maintaining this code can check any changes against the unit tests and this means my code will run forever and ever and ever. Hooray. And they go, wow, you rock, and you go, uh huh, I do, and then you throw the horns to prove it. And everybody's happy.
I kind of forgot my point, but that's as good an image to end this post on as any.