In this paper, we describe work to investigate the creation of engaging programming learning experiences. Background research informed the design of four fieldwork studies involving a range of age groups to explore how programming tasks could best be framed to motivate learners. Our empirical findings from these four studies, described here, contributed to the design of a set of programming 'Learning Dimensions' (LDs). The LDs provide educators with insights to support key design decisions for the creation of engagmg programming learning experiences. This paper descnbes the background to the identification of these LDs and howthey could address the design and delivery of highly engaging programming learning tasks. A web application has been authored to support educators in the application of the LDs to their lesson design.