This paper reviews the design and implementation of several video telephony systems at Bellcore as a case study in iterative design. In contrast to single user computer applications, communication systems consists of both the interconnection technology and the people who are interconnected. From a user's point of view, the capabilities provided by the system, the rules for its use, and its reaction to their actions depend jointly on what its developers implemented and how other users behave. This fact has wide-ranging implications for system design, use, and evaluation. In reviewing our design experience, we identify four dilemmas for iterative design that flow from the inherently social nature of communication systems. We conclude with methodological and theoretical suggestions to supplement conventional iterative design principles as applied to communications systems.