Today I’m discussing graphical vs text-based coding for kids. In the realm of children’s coding education, there’s a prevailing assumption that kids should graduate from graphical programming languages like Scratch to text-based ones such as Python or JavaScript. This notion always tickles me, considering I’ve spent a significant chunk of my career developing graphical languages to make software development more accessible to adults with subject knowledge rather than coding expertise.
Table of Contents
Coding for Kids – The Real Question
When considering coding for kids, the crux of the matter isn’t about graphical versus textual. It’s about whether a particular language allows your child to do what they want to do in a way that’s efficient and enjoyable for them. The starting point should be what they want to create, and then finding a language that suits their expertise level and thought process.

The Purpose of Teaching Kids to Code
Why are we teaching kids to code? Some will become the programmers of the future. Others will have jobs that require some element of coding to support other skills. And some will just need to have been exposed to coding to better understand the world they live in and to take control of it. Coding for kids is a great thing to introduce to their skillset.
The Goal of Teaching Kids
When teaching young children, my goal isn’t to teach them vocational skills. I’m trying to teach two major things: the ability to make projects that are useful, interesting, or entertaining to them now, and transferable knowledge about computational thinking that will enable them to make things that are useful, interesting, entertaining, or profitable in the future. That said, coding for kids has to be fun.
Graphical Language vs Text-based Language
Text-based programming languages are easy to define. They are languages that are typed using a keyboard and stored as text files. A graphical or visual language typically uses drag and drop rather than typing. It may use icons or textual labels on blocks or elements. GUI elements such as dialogues and drop-down selection menus are often used.
Block languages such as Scratch and Blockly-based languages are very popular for coding for kids. Typically when people talk about text-based languages they are referring to programming languages such as Python, Lua, and JavaScript which are ‘real’ programming languages that are used by professional software developers.
Interestingly, there are text-based programming languages for children such as Logo and Sniff (based on Scratch, but textual) which can be seen as a stepping stone between graphical languages and textual ones, so it’s a good option for coding for kids when they are older.
The Ease of Learning and Remembering
One of the key features of graphical languages is that children don’t have to remember a list of commands or a complex syntax, it’s just there in the environment. This is a massive advantage when kids are learning a programming language, so coding for kids is often easier to grasp when they are using graphical language.

A lot of professional software developers spend tens of hours each week programming in the same language. This means they can remember lots of knowledge about syntax and APIs so it’s instantly available when they need it. Kids tend to have other commitments.
Many children will only write code once a week in a 45-minute lesson for a few weeks each year, so they never reach mastery and are constantly needing to look things up. Don’t expect coding for kids lessons to lead to a master programmer – It rarely does.
Syntax Errors
Syntax errors are a nuisance for adults and kids alike. Who wants to spend ages working out that they’ve missed out a colon that should obviously be there, counting brackets, or spotting a spelling mistake? Yes, good editors can help you spot these errors, but even better editors mean that you can’t make those mistakes in the first place.
In Scratch, you work directly with a coding concept rather than having to break it down into something you can type. This is often too complicated for coding for kids newbies.
Icons vs Text
Some graphical languages rely on pictorial symbols or icons, for example, LEGO Mindstorms uses an icon-based notation in its software. Pictures are often used to enable children who can’t yet read to code. Once children can read, an icon-based system needs to be very well designed to compete with textual labels. If a child is having to map from a picture to a word in their mind to understand what they’re seeing then you’ve just added additional complexity.

Graphical Doesn’t Mean Simplified
Professional software developers often assume that languages such as Scratch are ‘simplified’ versions of programming. That’s not the way it works. What Scratch does is remove the extraneous details that aren’t actually necessary so that kids can quickly get from an idea to running code.
Linear vs Alternatives
One of the features of text-based languages is that they are inherently linear. Text-based languages aren’t good at showing connections between different bits of code. Graphical languages typically support non-linear layout. Modern programming, especially games, hardware, and internet-of-things based coding is often event-based and concurrent. Code isn’t like a book, it doesn’t progress sequentially from beginning to end. This logic often makes coding for kids tricky.
Graphical isn’t Necessarily Slower
Adults who don’t spend a lot of time with children who are learning to code often assume that coding in a graphical language is slow. It might feel slow to an adult who is comparing with the time it would take them to write code in a text-based editor. Very few children can touch type so actually watching them type textual code is a very painful experience. They also introduce lots of errors like spelling mistakes and extra spaces.
What about Touch Screens?
For many kids growing up now their first experience of a computer is a phone or tablet with a touch screen. Graphical languages translate very well to a touch interface. Lots of young kids can work much more quickly with a drag and drop interface on a tablet than they can with a keyboard and mouse/trackpad. And lots of teens have a phone with them at all times.
Children are often Creating Graphical Apps
Children are often creating graphical apps and games. Graphical languages often have a closer connection between the end result and the language used to create it. For example, you can click on a sprite in Scratch to edit its code. This direct connection reduces the cognitive overload in developing a graphical app, so coding for kids is easier.

Kids like Graphical Environments
Most kids prefer a graphical environment, it’s more fun and feels less like hard work. A text-based environment can seem quite dry for coding for kids newbies. Companies like Tech Rocket are trying to make text-based coding more fun – see their free Python Tutorial.
Harder isn’t Better
It can be really frustrating for a child who is good at coding games in Scratch to move to an environment where it’s actually harder to create similar games. It’s not ‘more grown up’ to have to do more work than necessary. Coding for kids has many challenges.
What about Graphical and Text-Based?
There’s a trend towards offering children tools that allow a block-based and text-based view of the same code with the text-based view being a ‘real’ programming language. For example, this is offered in Code.org, Code Kingdoms, and the Microsoft micro:bit block editor.
What about Kids Versions of Languages?
The Ready programming language allows children and teens to write games in an environment that runs on top of the Unity games engine. This is an interesting approach which addresses one of the main criticisms of languages like Scratch – you don’t end up with an app that you can just run outside of Scratch or submit to an app store.
Adults use Graphical Languages too
Graphical languages can be more efficient when used only for occasional tasks, or by people who have subject knowledge rather than just being programmers. Programming is increasingly entering everyday life. IFTTT (if this then that) is a very popular service that allows people to automate their lives. It uses a visual editor to create rules. You don’t have to learn a complicated syntax to use IFTTT you just use a custom editor. Is it really coding? Well, it achieves something that you would have to write code to do otherwise, it’s what’s needed to enable more people to code their lives without needing to learn a complex language.

Some Kids will Love Text-based Coding
Some kids will absolutely love text-based programming from a young age. There’s certainly no need to stop them and every reason to encourage them. Plenty of young children are capable of writing HTML & CSS and learning Python, JavaScript, or Lua. And for some, the lure of writing Minecraft mods will get them learning Java.
At the moment those languages are the best tools for many tasks. And some kids will just love learning to program for its intrinsic academic value. This is all great stuff. I would have been one of those kids! (It was Spectrum Basic and C on the Amiga in my day though.) But it doesn’t mean that all young kids need to learn a text-based language or that text-based languages are ‘better’.
Summary
Text-based coding isn’t the goal for young children. Coding in Scratch and other graphical languages isn’t just a stepping stone for getting to Python and Java. It’s useful in its own right and some children will go on to use graphical environments as adults.
The goal is to give kids the skills to make digital projects and to give them transferable skills that apply whatever programming language they are using. Of course, some children will go on to be software developers and they will need to learn the languages that are in use in industry. But they should learn a text-based language because it’s the right tool for the projects they’re trying to build, they are interested and/or it’s a useful vocational skill and it should be when their typing is good enough to avoid frustration.
Until then, there’s plenty to learn from graphical programming languages. I’d rather teach a child to be able to use Scratch to create fantastic projects enthusiastically than have the same child struggling with syntax in a text-based editor. They will have learnt far more about computational thinking and have a better understanding of the world of technology around them.
