Computer programming is widely regarded as a complex learning domain with high element interactivity leading to some students experiencing low levels of success due to high cognitive load. Collaborative cognitive load theory may provide a way to optimise cognitive processing by drawing on the collective working memory in situations where task complexity is beyond the capacity of the individual's working memory. The theory suggests that collaboration comes with cognitive overheads due to transactive activities, such as sharing ideas and developing a joint understanding of knowledge, and that transactive activities can be managed by developing collaboration skills. Given this, the efficacy of collaborative cognitive load theory relies on the effective use of sociocultural mediators such as language, tools and scaffolding but the theory does not suggest how this can be achieved. My research draws on Vygotsky's social constructivism to provide a framework to understand these aspects. In doing so, my thesis aims to design a learning framework that describes and provides concrete guidance to computing teachers planning collaborative learning experiences that manage cognitive load and allow students to experience success in programming.