My job description as a developer, in my mind, was: “My job is to understand your job and help you do it better and easier.”
Peter did not fully understand Mary’s job — he understood the specs.
This was sort of covered by the statement:
… a smart programmer is not the one who fix all the problems, it’s the one who understands what the problems worth fixing are.
Thinking that it is the job of the “Product Manager” misses an important point. Every time information passes from one person to another, the concept changes slightly — the old rumor game.
If I had written the app based on the prettiest spec that I have ever seen, it would have failed miserably to meet the user’s requirements.
Management got awfully upset when I insisted in talking to the user champion before even starting the design phase.