This text concentrates on those aspects of human-computer interaction which are of concern to the software designer. It considers how a software designer might design his or her first user interface. Specific techniques have been chosen and a step-by-step guide to applying those techniques is given. The techniques chosen are those the author has found to work in practice. Specifically, they are techniques for understanding user requirements; for designing character-based user interfaces; for designing graphical user interfaces; and for designing user interfaces to systems which support groups of users.