My team-mates used to say that I do marketing. A lot of marketing.

I tend to speak a lot about what we (as a team) do, how we do that & why it's so freaking awesome. Obviously I'm still careful about what precisely I can tell & what is strictly confidential (so can't be discussed in public), but usually even those scraps of information I can reveal are enough to cause comments like that:

Nice stuff, you're a lucky git. Unfortunately, my latest 3 projects were all about customizing Poo module in ScheisseCRM package. We were doing that using CrapTalk language & TOA (Turd Oriented Architecture). I hate it, but that's what current client needs.

Shame.
And loss.
Your loss. Loss of time, talent & potential.

Here are my rules:

  1. Whatever I do is always value-driven (for the one who's paying). I don't do stuff just because doing it is cool or makes me learn things I can use in future. My work contract is supposed to be a win-win scenario: both sides are to get benefit. Freaking always. That's always rule #1.

  2. I don't do stuff that depends significantly on external factors I don't trust. I hate victimship & I would prefer not to be forced to say that I can't do my job because of someone else screwing up their work I can't help.

  3. I don't do stuff I don't believe can be done (within assumed timeframe, costs, etc.) - my definition of challenge is not to do something that's quite unlikely to happen because it's just unrealistic or plainly dumb. The real challenge is something that needs creative thinking, skillful engineering, daring execution - not just overtime or working weekends because of massive amount of shitty work to be done.

  4. I don't do stuff I am not capable to do and I don't want to become capable to do. Simply. Examples: I don't like PHP, so I'm not going to touch PHP stuff. It's just beyond my area of personal interest, find someone else.

  5. I expect something more than money as an outcome of my work. Work's supposed to make me learn & self-develop. I will not get stuck for years in a position I can't learn anything. Even if it was cool & engaging in the beginning. By 'anything' I mean - 'anything I could find useful'.

Think about these rules in your context.

Money is important, but if you'e ambitious & you want to achieve something - there are far more important things. Remember - you have just one career, spend it wisely: spending years on stuff that won't make you learn new stuff, develop new abilities - is clearly wasting time you can't get back. You'll earn some cash, but you won't increase your job market value, you won't raise the bar, advance to the next level.

These rules doesn't work well in any industry, but IT (& especially software engineering) are different: if you're really good & skillful, you won't have any problem with finding a new job. I really know how it works - if we're moderately happy with our client situation (we're paid, workload is bearable, team is neat), subconsciously we're afraid of making a bold, radical move (like changing a job), but if you never dare to make a change - you may never lose, but you will never win either.