Swift Playgrounds & Creativity

I saw a blog post making its way around iOS developer networks last week. It was retweeted and included in newsletters, but I kept avoiding it because I was afraid what it was going to say would bother me. And here we are.

The post is titled Swift Playgrounds: Should we teach coding, or creativity? and it argues that Swift Playgrounds only teach kids how to code, and not how to create. The author describes their own experience first learning to program when they were ten using HyperCard. They believe that constraints like a blank canvas and no tutorials provided a better atmosphere for them to learn to create. They also describe the knowledge gained from inspecting other HyperCard stacks, to learn by example.

It’s a not-uncommon programmer origin story. If you’re a programmer today and your family could afford a Mac when you were growing up, then it might even be your origin story.

Let’s start with the author’s description of Swift Playgrounds:

It’s an iPad app that’s meant to make it easier for children and teens to get into coding and learn the fundamentals of Swift using real time feedback and gorgeous visuals.

A more generous description might be “it’s an app meant to make learning to program easier” (not just for children and teens). And I’m at a loss to describe why real time feedback or gorgeous visuals would be a bad thing.

Swift Playgrounds don’t start with a blank canvas because (I suspect) not many people thrive in the blank canvas learning environment. But they still welcome the blank canvas learners, because you can always create a new, blank playground.

Besides, it’s premature to base an opinion of Swift Playgrounds on the impression of their first beta. In fact, the educational materials included with Swift Playgrounds even draw attention to the fact that they’re not yet complete. And Apple has also built a means for any educator to distribute their own materials, which is really exciting!

There is every indication that Swift Playgrounds will support a variety of teaching techniques and learning styles, including the style that the author used to learn to code.

To explain why their method of learning to code is the best for fostering creativity, the author quotes a plausible hypothesis:

[…] experts like sir ken robinson think that creativity can be facilitated through the right tools and exercises.

I agree with this: creativity is something that can be encouraged or discouraged through educational resources. And then the author spends most of the blog post detailing how great their experience learning to program with HyperCard was.

But here’s the thing.

There’s no reason to assume HyperCard in 1993 is the right tool – or that learning it without tutorials is the best exercise – to foster creativity.

What made HyperCard so great for the author?

You had to work hard to learn

[…]

In my experience, this is the best way to learn

It sounds like the author is claiming that learning should be hard work. That it should be difficult. Which really is to say, learning should be less accessible. Swift Playgrounds reduce the incidental complexity of learning to code, and there’s nothing essential about being limited to starting with only a blank canvas.

Lots of people learn best in the environment the author had, but lots of people don’t. Swift Playgrounds and other resources open up learning to code to a broader audience; they make it easier for people with different learning styles to learn to code.

Don’t get me wrong: teaching yourself to program is great – it’s how I learned to program, too! But not everyone thrives in that environment. We can’t even say for certain that people who learned to program on their own wouldn’t have done just as well – or better – with education resources like Swift Playgrounds.

The author suggests that learning things like variables and loops and functions is best done in way that resembles how they learned them. But that’s not likely because a) that’s largely been the only way to learn to code since we invented programming, and we probably didn’t get coding education right on the first try, and b) not enough people the author’s age actually ever learned to program. We need more developers and we need higher coding literacy.

Not everyone who learns math becomes John Conway, not everyone who learns guitar becomes Eddie Van Halen, and not everyone who learns programming will become Donald Knuth. Swift Playgrounds are a tool to teach anyone how to code.

Different people learn different ways, and the Swift Playgrounds educational tools can only broaden access to programming education. Immersive educational resources built atop Swift Playgrounds can be distributed by educators, and learners can share or live stream their experiences with friends. And of course, the blank canvas of fresh playgrounds isn’t going away.

As a developer, I’m really excited to see the impact that Swift Playgrounds will make in programming education. As an author, I’m even more excited to participate in it.


Please submit typo corrections on GitHub