Designing programming languages that are accessible to elementary school children is a complex task. Programming languages that contain visual elements provide a good starting point, because they are inherently appealing to many children. As novice users, however, children require additional support to use programming languages effectively. In this paper we describe five principles for designing end-user programming languages which address some of the obstacles we have observed when users attempt to create sophisticated programs. The principles are based on extensions we have made to Visual AgentTalk, the tactile programming component of the Agentsheets system. Although our research has centered on children, we believe that the discussion is widely applicable to the creation of languages for novice users of any age