Like A Girl

Pushing the conversation on gender equality.

Code Like A Girl

Scratch vs. Swift Playgrounds

Figuring it out.

Ultimately, for me, it comes down to a single key issue: In the limited time we have with children each day in school, what is the best use of that time for learning? How are we designing and/or supporting powerful and empowering learning experiences for our students? I suppose you could think of it as a question of ROI — with any given student investment of time and effort, what is the return in terms of powerful, high quality learning?

Full Disclosure

I should mention that those familiar with my work, blog or Twitter account will know that I am something of a Scratch enthusiast. Actually, I’m more of a passionate advocate, a champion of Scratch as a creative and thinking tool. Despite this bias, ultimately, I think we can all agree that we are looking for tools, environments and learning models that really work well with our students in terms of high quality, meaningful, useful learning.

Love-hate relationship

I have a love-hate relationship with Swift Playgrounds. I think probably anyone who is as passionate about learning as they are about computer programming would probably feel the same way. Maybe that’s just me? I just think Scratch has more to offer because it focuses far more on creative learning than Swift Playgrounds does (or could) as it stands now. More on that later.

There’s lots to love

Swift Playgrounds is a beautiful looking environment to learn to code. It’s a nice, modern, object-oriented language and I can learn concepts and conventions and put them to work later in Xcode. Children can choose step-by-step lessons and puzzles to build their coding knowledge and skills. They can choose other playgrounds to play in and subscribe to third party ones, too. They can start with a blank project and try out coding ideas. They can save their projects. There are handy shortcut buttons so you don’t have to always type in commands or statements. The code editor is very helpful and automates many syntactic and structural formatting conventions. Kids can program various robots. There’s even a new, augmented reality coding kit so kids can start to explore AR.

There’s lots not to like

Kids are learning Swift (or at least something like Swift), a programming language created by Apple to create applications on their operating systems. But it’s really a highly simplified Swift; the jump to Xcode and real application development is actually quite steep. (And Xcode also only runs on a Mac, nothing else). Yes, kids can transfer coding concepts they learn in Swift Playgrounds to other languages but why not save a step and have them learn javascript as a first typed language. Swift is also a typed language, not a block-based visual language (I’m getting worn out listening to the prejudice against block-based language as not being “real” languages; there are crucial advantages to block-based languages). It’s fairly hard to tinker and play in Swift Playgrounds. You can try but the students I’ve seen doing that almost always get the red dot and a cryptic error message. Because of this, and because Byte is so darn cute, students usually resign themselves to working through the puzzles in the Learn to Code modules.

I considered writing a section about how Swift Playgrounds and Scratch are both free tools but that Scratch is supported by a non-profit called the Scratch Foundation and that Swift Playgrounds is supported by a for-profit called Apple, Inc. Suffice it to say, I think the motivations behind each tool are linked to the organizations that create and fund them.

Learning to code

It’s probably clear by now that Swift Playgrounds was not designed as a learning through coding environment; it was designed as a learning to code environment. I don’t think anyone at Apple would have ever said that it’s a coding to learn environment. Indeed, in 2016, Apple’s Director of Tools & Technologies Product Marketing Wiley Hodges said that Swift Playgrounds is “not about learning apps for platforms. It’s about learning good coding practices.” Yet, this turns my mind back to the single key issue at the beginning: In the limited time we have with children each day in school, what is the best use of that time for learning? How are we designing and/or supporting powerful and empowering learning experiences for our students?

What makes using Scratch powerful learning?

Scratch is a unique learning environment because every aspect of it was carefully researched, designed, tested and redesigned. The experiences children have in Scratch maximize the creative, social, personal, experimental, visual and design elements and minimize the technical, syntactic, textual, abstract, and rigid elements of many typed languages. A key design objective in Scratch was (is) to support self-directed learning through tinkering and the creation of personally relevant projects in collaboration with peers. These ideas are further refined and described in Lifelong Kindergarten by Mitch Resnick.

In terms of real students in real classrooms using Scratch, I regularly see students quickly think of interesting ideas they have for a Scratch project and proceed to start to code it in their first session. The use of the Scratch environment, along with a research-based and student tested learning model, can accelerate learning and competence using Scratch to express their ideas. When I observe children creating with Scratch, the best word I can think of to describe it is intuitive. The colour-coded blocks invite experimentation based on almost instantaneous conclusions students have about how the blocks might function with other blocks. The work and the learning come from the building of their code scripts into projects that work the way they want. Typed languages are generally not very intuitive. And with modern object-oriented programming, these languages are even more abstract.

Making a game!

It’s no accident that Scratch works so well with students. I regularly engage in detailed conversations about projects, designs, and problem solving. I’ve written previously about how Scratch is the right place for coding in schools. Probably the most important aspect of Scratch is that it was designed to support a very wide variety of potential projects that can be easily personalized; this leads to children who are highly invested emotionally in their projects. Many have said in passing how much they love working on their Scratch projects.

Papert and Mathland

Mindstorms (1980)

The “powerful ideas” part of Seymour Papert’s 1980 book Mindstorms: Children, Computers and Powerful Ideas talks about the potential of the computer and computer programming as a tool for thinking and building knowledge within a carefully designed learning environment. This powerful learning environment is the opposite of computer aided instruction (CAI) which is a profoundly important distinction. Instead of designing computer applications that act as a teacher for children, Papert envisioned computers as tools children could use in order to play with ideas and build knowledge. He saw coding as a way to control a mini world, a Mathland, and developed LOGO and various mathematical learning environments. From his perspective, the children are controlling the technology, not the other way around.

Papert’s philosophy was always about how children could use coding to learn, and learning about things that are interesting and fun. Powerful learning is exciting, personal, memorable, social and creative. Scratch was specifically designed (and continues to evolve in redesigns) to be exciting, personal, memorable, social and creative. Despite the seemingly endless coding tools now available through sites like code.org and various app stores, I still think Scratch is the right place for coding to learn.

Are students learning to code or coding to learn?