Jon Eaves describes what he refers to as the consulting dilemma, that is, the fact that as a consultant you are usually brought in to work with companies that you wouldn’t ever choose to work for and often in the worst of circumstances (the project has run off track, the team has no process defined, the architecture is a mess or nonexistent).
While I’m not a consultant, I have thought a lot about this issue. The reality is that I work in an environment that is quite a bit like that. In fact, I have worked in a number of environments where I felt that there was a fundamental conflict between the values I have held dear and those of management. I think to some degree this is often the developer’s dilemma.
Quite often you have teams of developer’s stuck in corporate structures whose values are fundamentally different from that of the status quo. It seems to me that developers tend to thrive on change and hold generally (at least somewhat) forward thinking attitudes, whereas outside of the most progressive of companies maintaining the status quo is the rule (because that’s what’s been PROVEN to bring in revenue and anything risky might not go over well with the shareholders).