Coding, Thinking, Reflection & Transfer
I am always asking and thinking about three questions regarding the use of computer programming as a tool for (co)learning, (co)thinking, (co)designing, and self-expression in schools. Within educational contexts, my questions are:
- What is the promise of coding to learn?
- What is the promise of learning to code?
- How can the promise of each be be realized?
This post is in no way an in-depth look at each of these questions; in fact, exploring these questions amounts to a significant chunk of my on-going professional learning in a career-long journey that started with this thesis.
But, recently, I’ve been thinking far more intently about the role of reflection applied to the development of coding projects by students and how reflection might enhance learning and transfer of learning. I have made observations of students coding; I have interviewed students in the midst of designing and realizing their projects; and I’ve reflected on my own experiences with computer programming over the years.
I’ve noticed that after solving problems that arise in coding projects, children often forget, or don’t attend to, the details of their thinking process when looking back at the program. While it is true that the result of their thinking process is captured in the product they created, how can we (and they) gain insights into the process?
What I have also observed, and felt as a programmer, is that the kind of reflection I am talking about is not helpful at the time of solving the problem. Keeping notes about how and what I am thinking when I am solving a problem would interfere with thinking itself! Any extra descriptive information I might want to capture in the middle of coding is usually highly practical (for example, I might want to make some notes about how a list of variables is being used in a function or I might want to write a note to myself in the future when I start to work another part of the program).
But one of the promises of learning through coding is the development of creative problem solving competency that can be transferred and applied to new contexts. That is, it is not enough that new knowledge and skills are learned… one needs also to learn how to apply the new knowledge and skills in the future. This is a paraphrasing of Papert’s Principle: Some of the most crucial steps in mental growth are based not simply on acquiring new skills, but on acquiring new administrative ways to use what one already knows.
So, this is the focus of my question. How do we as educators help, support, encourage, facilitate, ensure that learners are acquiring new administrative ways to use what they already know? I am thinking reflection could be a powerful strategy–placing value and taking the time to really think about what was learned or figured out… thinking about how problems were solved, what mistakes were made and what success were had?
In my role as an educator and facilitator, I’d been reading these reflections and having conversations with students and looking to highlight any of the following:
- creative process
- design process
- problem solving, testing, debugging
- generalizing strategies & concepts
- programming repertoire
- code portfolios & remixing
- learning transfer
What if an appropriate reflection is attached to the product, either in contextual notes within the code itself and/or by creating a parallel product such as a blog post in which reflective thoughts are captured? The criteria behind “appropriate” I think is the most important part of this and this would vary depending on quite a number of factors. I am currently facilitating a lot of 9-10 year olds working on long-term coding projects in Scratch. So, perhaps some reflective questions might be:
- Tell the story of your project. Why did do it? How did the ideas for parts of your project change after you started?
- How would describe the design process you used in your project? Imagine you are telling a friend about it who is interested in working on a similar project.
- Tell the story of how you solved problems that came up in your project? Try to name the problem and describe why it was a problem. What was the process you went through to go about solving it?
- What new ideas, questions or goals have come about as a result?
- Create a timeline, description, process steps, of the creation of your project from start to finish?
I continue to think about the role of reflection and how to incorporate reflection with these students in way that is actually useful to them. I’ve been rereading a number of resources about reflection in learning within this new context. Here are some I have been looking at; if you have some great resources or you have ideas, comments or responses to what I am thinking about in this post, please comment below.
Some learning transfer and learning reflection resources I’m looking at:
- Learning through reflection from Learning and Leading through Habits of Mind (2008)
- Learning By Thinking: How Reflection Improves Performance (2014)
- How Planning and Reflection Develop Young Children’s Thinking Skills (2003)
- Scaffolding Student Reflections + Sample Questions (2015)
- New frameworks for studying and assessing the development of computational thinking (2012)
- Skill may not be enough: The role of mindfulness in learning and transfer (1987)
- Learning about Learning enhances performance (2001)
- Transfer of Learning (1992)