I encountered one more aspect of collaboration, and I would like to elaborate on. This involves communication with the user. Here is how the story goes. A designed lays out the UI. Proposed UI is discussed with the user, who subsequently approves the design. At this point the UI is given to developer to work on. Well, developer finds that the UI is not workable within the constraints of the development environment. For example, UI design results in highly inefficient communication between UI layer and business layer or database layer. Or, the sample UI lists a handful of items on the screen, but database has hundreds, and the full list does not even fit on the screen and looks unreadable. So, what is the solution you ask? Involve a developer in review process prior to demonstrating UI to the user. I think this procedure should minimize the changes to UI after the user’s sign-off.