Want to keep learning?

This content is taken from the Raspberry Pi Foundation & National Centre for Computing Education's online course, Programming Pedagogy in Secondary Schools: Inspiring Computing Teaching. Join the course to learn more.


When you were a child, did you learn to read or write first? Like most people, you probably learnt to read first. So why do we get our learners to write code before they can read it? When you look at programming pedagogy in this way it becomes obvious that we should be showing our learners plenty of examples of working programs before letting them loose on coding for themselves. This is where Use-Modify-Create comes into play.

In 2011, Lee et al. wrote a short paper where they introduced a three-stage concept that helped to reduce anxiety in coding while supporting growth. A diagram that demonstrates this approach can be seen below:

On the left is a small square  titled "Not mine", while on the right is a larger square titled "Mine". Inside the left box, an arrow  'Use' points towards another arrow labelled 'Modify', which crosses between the boxes. This arrow points towards an arrow labelled 'Create', which is entirely within the "Mine" square. The 'Create' arrow points to a circle of arrows labelled 'Test', 'Analyse' and 'Refine'.

Below you can look at the three stages in more detail.


At the “use” stage, learners are given a program or model to explore. They are simply consumers. They are given the opportunity to spend some time looking at another person’s program to figure out what is happening and how it works. They are usually given questions or prompts to aid their investigation.


As your learners become more comfortable with the program, they are encouraged to start changing it. If the game was produced in Scratch, the first thing that a learner would typically do is change the trivial aspects of the solution by modifying the sprite colour or costumes and the initial variable values. They will then move to changing simple behaviours to more complex ones as their confidence in the program grows.


As learners take on increasing levels of challenge, they become more comfortable with writing their own programs. Just as with the “use” stage, it is important that the projects chosen here are at an appropriate level of challenge. Removing scaffolding too fast can increase anxiety, and conversely, giving your learners something too simple can lead to reduced engagement.

The create stage is where learners move fully into the “mine” phase of the process. They will work on programming challenges that use the skills that have been nurtured during the “use” and “modify” stages to complete their own projects.

When the learners create their own projects they should be encouraged to test, analyse, and refine their programs frequently.

Some words of advice

It is key to remember here that Use-Modify-Create is an iterative process. This means that you should continue to revisit phases with increasing levels of challenge. It is important to ensure that the project you choose is pitched at an appropriate level. Programming projects should increase in complexity over time.

The writers of the 2011 paper specify that the three stages shouldn’t be used “too literally”. You might spend a lot of time iterating through the “use” and “modify” stages before ever reaching “create” because you might feel that your learners aren’t ready for this stage. This is completely fine and is encouraged. This is why it is so important to know your learners and know their limitations.

An example for your classroom

This worksheet demonstrates how Use-Modify-Create could be used to teach Boolean logic through a simple Scratch game.


  • Do you have a programming challenge in mind for your learners that would allow you to practice the Use-Modify-Create approach in your lessons?
  • Have you tried Use-Modify-Create before? If so, what challenges did you face?

Share your answers to these questions in the comments section.

Share this article:

This article is from the free online course:

Programming Pedagogy in Secondary Schools: Inspiring Computing Teaching

Raspberry Pi Foundation

Get a taste of this course

Find out what this course is like by previewing some of the course steps before you join: