"If you want to increase your compensation over time, continue to put yourself in a position where you can deliver the most value."
This assumes an efficient market. In the real world, however, value of a software engineer's output is really difficult to measure. Indirect value (like helping a team member) is even more difficult to measure than direct value (like implementing features or solving bugs and so on).
> value of a software engineer's output is really difficult to measure
True, but you can make it easy for your boss to conclude that you do deliver a lot of value. For example, don't assume he knows what it is you're doing, or the value of it. Show it and tell it and remind him. It's what any good salesman does, and face it, we're all salesmen one way or another.
This assumes an efficient market. In the real world, however, value of a software engineer's output is really difficult to measure. Indirect value (like helping a team member) is even more difficult to measure than direct value (like implementing features or solving bugs and so on).