This document discusses principles for designing effective m-learning based on software engineering principles. It identifies the key users of m-learning as educational institutions, teachers, students, parents and content developers. To improve learning outcomes, m-learning needs to be more personal, fun, interactive, networked, spontaneous, connected and just-in-time. Content should be delivered in short segments adapted to different devices and lifestyles. User needs and technical constraints also need to be considered in the design.