The challenge is not simply to build something that "works". It is to build something that really works in the way the end user needs it to work, with conceptual consistency, with minimal technical bugs, and that can be maintained and extended throughout a long life.