The design and implementation of GIS user interfaces is receiving more recognition as a research area that could yield improvements in GIS usability. Designing a bad user interface is easy. There are many examples to follow and numerous established principles. Interfaces are developed by computer programmers working in isolated environments, with no sense of the end users' needs, skills, habits, or working environment. In the first twenty years of computer technology, the majority of computer users were programmers, and user-interfaces of command-lines, macros, and programming languages were appropriate. Today, the GIS user community includes domain specialists, whose needs and skills are very different from the programmers'. Domain specialists demand custom interfaces that can only be developed with a deep, application-specific knowledge that the average programmer does not have. Contemporary GISs address this need by providing macro languages for system customization. A user faced with learning the intricacies of GIS will typically not have time to learn a macro language, and a professional GIS specialist must be employed to transform a user's request into a form understandable by the system. This results in two barriers between the user and the task: the final user communicates to the GIS analyst, who then communicates with the system. These barriers slow down use, reduce efficiency and effectiveness, and are an impediment for exploratory data analysis.