Sacrifice is standard fare for me. I've been at my current position since 1993. Since I've been here, I've learned 4 new languages, 2 for my job (useless and out-dated) and 2 in hopes to where my job might take me. I've learned through my experiences, and those of my co-workers, that sacrifice is expected and not rewarded, unless you are a political animal.
A friend worked herself sick to find out that she wasn't behind schedule as she thought all along, but rather ahead of schedule. Her/My boss, at the time, got many accolades for meeting and exceeding the schedule. That boss has gone to a higher profile project. Under my own interest/initiative, I went and got certified by Sun as a Java 2 Programmer. I did this to be ready for the next move in our company. I was then told I was needed elsewhere in the company. I learned C++ twice because I find that knowledge unused is knowledge unlearned. That left me with the skill-set wanted in the world, but my lack of real experience with this skill set put a damper on 3 interviews and my own self-esteem. Also, the fact that I'm under-paid makes people ask the question "What's wrong with him?"
Do I give up? Nope. I'm learning the Linux OS which brings with it a compliment of programming languages and scripts. I'm learning it not for my job, not for advancement, but just to have fun. I'm going to sacrifice for myself now. I've joined SourceForge.net and hope that I can make a positive contribution. My new boss even encourages programming growth. I was able to get onto a side project where I've used and learned a tremdous amount about Java. We are looking to use .NET and he lets me keep a Linux box around for fun. So maybe I'll have a career worth fighting for after all.