This overview describes factors influencing user interface design when developing software in a commercial environment. In commercial environments, designers must frequently put aside lofty design goals and define the best implementable and affordable user interface, one that can actually be realized with the given resources. But the choice of tools, as well as programmers' expertise with the selected tools, greatly impact the final application design. Once a tool is selected, designers must understand which capabilities are supported easily or for free, which can be achieved at a higher implementation cost, and which capabilities might be precluded. Designers must work within the technical limitations of the tool, and consider exploiting easily supported capabilities.
Project managers weigh necessity against affordability and either include or eliminate features.
Arguing reasonably for interface components, and recommending alternate, less costly interface behavior is critical to salvaging components that might otherwise be eliminated during estimation. While these people bring different areas of expertise to a project, they frequently have different agendas. Ideally, team members will communicate to reach a common ground, and work towards a shared vision of the final product. Communication problems and lack of consensus within a diverse group can hinder the design in its initial stages, and as development progresses. After decisions are finalized, poor communication can prevent design decisions from being applied.