• I would agree with many of the comments.  I learned a long time ago that often, if you give the users exactly what they ask for,  it won't be what they want!  Often our job involves communicating with the end users, understanding what their needs are and how they intend to use the product we will build, and restating back to them how we see things working if we build what they ask for.  Often both sides will learn from each other and will, in turn, modify the original specifications.

    If this communication does not happen, then there WAS a failure.  Maybe not at the level of the coder who was simply told what to write, but certainly somewhere in the IT project management stream.