Tuesday, 11 August 2015

Scratch isn't Proper Computer Programming is it?

Scratch is a drag and drop programming environment for children. Kids can write games and animations, control robots, take input from sensors and lots more. Scratch is great fun and educational, but it's not really programming is it? I mean dragging coloured blocks around the screen, that's just for little kids, right? It doesn't teach proper coding skills surely.

I've heard lots of parents make comments like these. Sometimes parents think their child must be too old for Scratch. Others assume Scratch is just a brief stepping stone and are eager to find out about the next thing. IT professionals also tend to assume that Scratch is just a toy and that children using it are just playing at coding.

I'm a computer scientist and parent and I also teach kids to code. I can tell you, Scratch is most definitely real coding. It uses just the same skills that professional software developers use. A child who becomes an expert in Scratch will have a fantastic grounding when they move to so called proper programming languages.

There will be additional things for them to learn, but the core thinking skills are transferable. Scratch is an excellent environment for learning the basics of computers science and some fairly advanced concepts too.

Let's take a look at some of the misconceptions that parents and IT professionals have about Scratch.

But Scratch is Drag and Drop - It can't be a REAL Programming Language

A lot of parents and educators who are not experts in computer science assume that a graphical drag and drop language can't be a serious programming language. This simply isn't the case. There's nothing special about typing in text rather than sequencing blocks with text written on them.

But Scratch is Drag and Drop - It can't be a REAL Programming Language

Scratch prevents a lot of the annoying syntax errors that you get in a text based programming language which does make it more accessible. But there's nothing particularly educational about spending lots of time fixing syntax errors. It's something adult developers would like to avoid and increasingly development environments help coders avoid them. 

There are also professional development environments that support graphical programming and drag and drop. Video game development environments are often graphical and support drag and drop. There's nothing childish about this, sometimes it's the right approach. 

Whether you work with colourful blocks or text the individual elements are ways of getting instructions into the computer - the abstract representation of the concepts in a child's brain is just the same. 

Drag and drop vs typing text is a complete red herring. With practice, typing will be faster than dragging and dropping but there's no conceptual difference.  And most kids can't type quickly so drag and drop is faster for them. (Yes, they should be able to type quickly, that's a different discussion!)

But 6-Year-Olds can Write Scratch - It can't be a REAL Programming Language

It's true, many 6-year-olds, and even younger kids, can build cool projects with Scratch. There seems to be an assumption that because quite young children can do some things in Scratch that older or more able kids will quickly reach the limitations of Scratch. 

That's a bit like saying that because 6-year-old children can write simple stories that they will soon outgrow the English language. 

Scratch does have some limitations, but it can be used to build incredibly sophisticated projects that will challenge the most able of kids and tweens, and most young teens (and many adults too!) 

Scratch is deceptively simple with its palette of brightly coloured blocks. The thing about programming though is that you can do amazing things when you combine the blocks in interesting ways. 

As children progress they will be able to use Scratch in more and more advanced ways.

Scratch has a low floor, but a high ceiling.

But Scratch Only Teaches Really Simple Coding, Right?

Actually you can build some really complex things with Scratch. You can use complex maths to simulate gravity, you can draw fractals, you can import data from files and work with it, you can explore event-based and prototype-based programming. 

It will be a long time before most kids start bumping up against the restrictions of Scratch.

The way Scratch naturally supports concurrency gives kids a real headstart on developing complex systems. Scratch encourages the use of multiple sprites which means kids must think about how to organise their code. Scratch also encourages a 'run early, run often' way of coding which develops good working practices. Scratch also encourages learning from other people's code.

But Scratch Doesn't Have Feature X

A common complaint from IT professionals is that Scratch doesn't have some particular programming language feature that they consider crucial. Sure there are some gaps, but I don't believe that any of them will cause long term harm! 

It might irritate you not to have a feature you are used to having, but kids probably won't expect the feature and will find another way to do things. 

Wouldn't Their Time Be Better Spent Learning a Real Programming Language?

Some parents see their child spending a lot of time developing Scratch projects and wonder whether that time wouldn't be better spent learning an actual programming language that is used in industry. 

This might be a valid argument once a child is close to an age where they could be employed to write code. But for a young child it doesn't make sense. Who know which programming language they will end up writing in (and whether they even exist yet.) 

Don't Be in Too Much of a Hurry to Move On From Scratch

My 8 year old has had a go at writing text-based languages and there's no real barrier for him, other than his slow typing! He readily understands the concepts because of his Scratch experience.

But he really enjoys Scratch and can create what he wants more quickly using it. He's still learning loads and will continue to do so for some time. I'm in no hurry for him to move to textual coding just because he can.

I think he'll spend the next few years trying out other languages and then returning to Scratch where he can be creative and productive.

The most important thing he's learning isn't a specific programming language or even computational thinking skills, it's that he can use computers to express his creative ideas and solve practical problems. This is where Scratch excels. If Scratch can empower kids to be digital makers not just digital users (and it can!) then it doesn't matter whether it's a proper programming language or not.

More from Tech Age Kids:


Post a Comment