1. Am I doing something that's worth doing?
2. Am I having to deliberately build the wrong thing (legacy reasons, etc.)?
3. Do I have the power to fix things?
I think that part of the acuity of the problem is that we don't really get to lie to ourselves about what we do. The computer doesn't care about any white lies--so, if we want it to do X, Y, or Z, we program that. And if we are told that the product we're working on does W, or !X, well, that's clearly wrong. That in turn leads to dissonance, and that gets at you over time.Part of the problem with 2 is that there is usually a sound business reason (i.e., customer wants it that way) which forces our hand. Part of the problem with 3 is that it can take enormous effort, resolve, and ultimately conflict to get at the root of what's broken and fix it--and in some cases, such as launching a new product, you can do everything technically correct and still fail.