
Text Is Keeping Kids from Coding - dyarosla
https://medium.com/@dannyyaroslavski/text-is-keeping-kids-from-coding-b70988dd7541
======
avaer
I actually don't know any great coders that learned to code through these
kinds of games. They might move the programming-is-interesting gradient, but I
don't think the hard part about learning to code is the text.

The hard part about coding is the problems that aren't in the code. Doing
research, setting up environments, understanding platforms, dealing with
crashes, dealing with crappy tools, debugging, understanding other people's
code. None of this is taught by isolated sandbox games like this. Sandbox
games might teach some very useful analytical skills, but it's pretty far from
coding.

The only thing you really need to get kids coding is to give them the tools
needed to do interesting naughty things. Many of the programmers I know
learned to code at an early age by hacking games to cheat against their
friends. Reading text was never, ever a problem, but the disillusionment of
finding out that coding doesn't involve pretty foolproof user interfaces might
have been.

~~~
mattmanser
I'm not calling myself great, but my initial introduction to programming was a
Logo robot at the age of 6 or 7 in the 80s, so I'm not sure I agree with you.
A turtle shaped robot we could get to draw things. All primary schools at that
time usually had a BBC Micro in each class too.

Perhaps it was just a British thing. After that it was some BASIC on
spectrums, some BASIC on Acorn Archimedes, then some random OO language on
Amiga that I've never really been able to track down what it was called.

And I wasn't even that keen on programming, I was just exposed enough and
wanted to build better games than my friends at lunch or on our graphical
calculators. I remember running out of memory on my graphing calculator trying
to get a working version of poker (which I now realize was wildly more
ambitious than the versions of blackjack we all made).

A lot of programmers of my age will remember the turtle with fondness.

I guess all of those were incredibly simple to setup to start programming (for
the spectrum it would go straight to the command line), but then again these
days so's pressing F12 on a web browser to get a working command line.

~~~
donjoe
My first steps I did with Robot Karol (which uses Karel as a programming
language):
[https://en.wikipedia.org/wiki/Karel_(programming_language)](https://en.wikipedia.org/wiki/Karel_\(programming_language\))

Fun times, I could sit there for hours trying to figure out how to build
shapes like pyramids:
[http://www.wschellenberger.de/informatik/inf_robotkarol/inf_...](http://www.wschellenberger.de/informatik/inf_robotkarol/inf_karol_baut_pyramide.html)

------
crikli
I started my professional life as a stockbroker and I remember my mentor
saying "Money Magazine does not exist to advise individuals to make great
trading decisions, it exists to sell copies of Money Magazine."

I've since applied this logic fairly universally and I'm going to apply it
here: SpriteBox does not exist to teach kids to be great coders, it exists to
sell copies of SpriteBox.

The challenge of text undoubtedly is a blocker to the sales of SpriteBox.

I do not believe that it is a blocker to a kid becoming a great coder.

Coding absolutely requires a high level of comfort with abstraction. It
requires the ability to mentally model abstractions, maintain relationships
between abstractions, and make a (sorta) concrete reality of those
abstractions.

Coders must be able to make intuitive mental leaps based on disparate and
distributed data. Often the solutions that coders come up with are based on
little bits and pieces of the puzzle based on SO answers, documentation, blog
posts, example code found on github, etc. The solutions to tough problems are
rarely found in a single neat all-explaining resource.

So... if a kid is having trouble with text I would candidly posit that the kid
may not have the ability to deal with abstraction that coding requires. Not a
problem for the industry as there are already enough coders who have this
issue, but it creates a sales problem for SpriteBox.

EDIT: typo, clarity

~~~
TazeTSchnitzel
As someone who's grown up with computers, I think the biggest difference I see
between ”technical” and “non-technical” people is a willingness to try things
out and not be put off by intimidating new things. If you are willing to
explore you will eventually figure it out, but if you are afraid you'll never
get anywhere.

------
otakucode
I learned to code when I was 9 years old. It was in text. No one helped me. I
found a couple books with my parents computer, 'Introduction to BASIC' and
understood that if I learned what was in the book, I could make the computer
do what I wanted.

I don't know programming was supposed to be hard. I didn't know some adults
did it as a job. I just knew that if I learned what was in the books, I could
do stuff. So I started reading, and I never ran into anything that was beyond
my grasp. I do recall reading one part that said a person who did not draw a
flowchart before writing a program was either a genius or a fool and resolved
to be a genius (hey I was 9). Not even refusing to create flowcharts prevented
me.

I feel in love the day I wrote: 10 PRINT "I LOVE YOU MOM" 20 GOTO 10 And
filled the screen then called my mom into the room to look at it.

Text is not keeping kids from coding. Adults are. Adults making kids think
it's difficult, adults standing in the way and shuttering them into
unnecessarily dumbed down environments, standing over their shoulder and
making sure they don't do anything inappropriate, etc. But more than anything,
adults filling kids free time and never giving them the opportunity to just
sit down, have a quiet few hours, and figure things out.

~~~
szatkus
"we got responses that estimated ages 9, 10 and up- "

The point is text looks too complex for younger kids. 5 year old won't sit
down for a few hours and figure out things. He will just get bored.

~~~
mi100hael
Other than sales of this app, why is it necessary for 5 year olds to be
programming?

~~~
dyarosla
People lie on a spectrum of ability. An app that works with 5 year olds that
have a knack for programming will work well with 8 year olds who may not.
Striving for an app that's approachable at any age is the real goal.

------
wiremine
I'm the dad of an 11 year old boy and a 8 year old girl.

Text IS scary, because it's nontrivial. There's a reason schools start with
the ABCs and spend the first four years of school teaching kids to read. And
even then we don't stop there: middle school focuses on grammar, and high
school focuses on creating long-form content.

Programming is similar: it's non trivial to stand up a knowledge base to be a
programmer.

I think the big difference is that most programming classes start in high
school or college, well after we've mastered text in general.

But that doesn't mean it can't be done. The key is to start small: don't
expect novel-sized programs, expect words and sentences, and make those words
and sentences FUN.

For example, my son has had a TON of fun with the micro:bit [1], and it's
scratch based system, and Swift playgrounds. [1]

[1] [http://microbit.org/](http://microbit.org/)

[2]
[https://developer.apple.com/swift/playgrounds/](https://developer.apple.com/swift/playgrounds/)

------
rb808
I dont understand why elementary school kids need to code at all. Most of the
developers my age didn't even see a computer until high school or college and
they're great developers.

A great preparation they should learn some math or ideally be having fun with
their friends, running around outside or perhaps art or something creative.

~~~
iamatworknow
I feel like this needs to be higher up. While of course any parent would want
their child to meet and exceed any academic standards you or the school system
set, childhood is the only time in your life where you're relatively free to
make mistakes with friends and relationships, and that's how you learn to be a
better person.

It's a lot more difficult to learn that later in life than programming, in my
opinion as someone who didn't start coding until he was in his early 20's but
still struggles with relationships because of a unrelated, intense academic
focus as a child.

------
Jtsummers
Your text notation was:

    
    
      move(.up)
    

What does the `.` do? Why can't it just be:

    
    
      move(up)
    

What purpose do the parentheses have? Are they essential or optional?

Why not:

    
    
      move up
    

Ok, you wanted it to be like a "real" language, I guess? Look at Logo and
Basic. They largely eschewed punctuation (not entirely) for text and newlines
and meaningful names:

    
    
      pen down
      forward 100
      right 90
      forward 50
      pen up

~~~
dyarosla
OP here.

So yes, we could have gone the "move up" route. In fact, we did at one point!
Even then though, icons were far and away less intimidating.

The problem is, real programming languages don't eschew punctuation, Logo
included (once you include loops and such). AND our primary goal was to get
kids familiar with reading real looking code (in this case, Swift).

The last option would be to start with "move up"s, and then introduce
punctuation later... but then players would get confused as to why
punctuation, unneeded before, suddenly becomes required?

Finding the middle ground of jumping from icons to textual code (with
punctuation) resolved all of these issues best.

And yes, we've read Mindstorms ;)

~~~
Jtsummers
Fair enough. I still disagree with your conclusion. _Text_ isn't keeping kids
from coding, throwing them at _Swift_ 's text (in your case) was. A simpler
and more forgiving syntax, or a UI (a very capable IDE in this case) that
walks them through the syntax (showing them only the valid options at any
given point) since you chose a relatively complex syntax would also have
helped. You achieved that via pictographs transition via pictographs, which
ought to be effective (you won't be changing the rules of the game on them,
from their perspective, just the notation used).

Pictographs are useful, and effective. I won't deny that. But kids can, and
have, learned to code with textual languages when those languages were more
effectively chosen and developed for the task of teaching kids. It's
unreasonable to make such a strong claim.

We could make the same claim about math and kids (Notation is Keeping Kids
from Mathing!), and it would be superficially true, if you started kids off
with a notation like geometric algebra (bi-vectors, tri-vectors, multi-
vectors, oh my!), instead of arithmetic.

~~~
dyarosla
The point I want to stress is that text _is_ keeping kids from coding. Like I
said, even with punctuation-less text, the game was deemed difficult. Simpler
and forgiving syntax simply would not help. The IDE in the game is actually
extremely forgiving and could just as well walk players through the syntax,
but interest levels then drop off. This is the difference between in theory
and in practice.

Yes there are kids that had no problem with text or without text. Of course
kids can and have learned to code with textual languages. Same with math.

The main idea here is that you can get an _even larger_ population of kids
doing math and coding, and engaging, by adopting pictographs first. As
demonstrated in DragonBox. As seen in our own testing.

------
NikolaeVarius
Why is is this a problem?

\- Numbers are keeping kids from learning math. \- Text is keeping kids from
reading. \- Too many words are keeping kids from listening to lectures.

I don't understand why people find it difficult to just teach a kid how to do
something rather than wait for some miracle solution.

~~~
0xdeadbeefbabe
I offer my miracle solution: text is a bunch of tiny pictures.

~~~
kps
Text started as tiny pictures. Trouble is, there's an unbounded amount of
things you need pictures for. The great thing about phonetically-based writing
is that a tractably small number of symbols can combine in a natural way to
express anything.

------
MarcScott
I took a break from teaching for a year, to be a 3D graphic artist, using
Cinema 4D. The software had a drag and drop, node based, coding environment
called Xpresso, that I became quite adept at using. I can remember showing it
to my programmer brother, and he told me if I liked using Xpresso I should try
a proper language. I dismissed him, saying that typing text held no appeal for
me.

A couple of years later, and I was back teaching ICT and the curriculum was
being axed, in favour of Computer Science, so I decided to teach myself a
little Python, and ended up being a secondary CS teacher in a fairly elite
school.

What strikes me now, is at no point did I make a connection between the
graphical language I was using back then and the text based languages I would
go on to use later. In hindsight it seems obvious that if I enjoyed
controlling pixels on a screen with blocks, I would probably enjoy doing it
with text. It's anecdotal, but it has turned out to be true.

In my professional capacity as an educator, I have seen how engaged young
students can be with graphical languages such as Scratch, and how those same
students eventually want the power and control of more powerful languages.
These types of games don't teach _everyone_ how to code, but they do awaken a
desire to control and manipulate computers, in people who might otherwise
never have realised this ambition.

For people who say that the hard part of programming is "not in the text",
watch a seven year old try to control a turtle in Scratch and then watch them
try to do the same thing in Python. Typing speed is a major factor, as is
understanding the importance of case and white space. Not to mention the
symbol nightmare of commas, full stops, colons, semi-colons, single and double
quotes, hyphens, underscores, equals and double-equals, square braces, curly
braces, angle braces, and parenthesis.

~~~
gasbag
You might be interested in the Luna programming language/dev environment. It's
designed to have a 1:1 correspondence between the visual, node-based
environment and the written forms of the code. I haven't been able to try it
yet since it's still in closed alpha, but it looks very intriguing! Given your
experience with a similar visual language and later interest in more
conventional programming, you could make a good case for getting into the
alpha. There's a signup form on their site (one for the alpha and one for
their newsletter, depending on your level of interest).

[http://www.luna-lang.org/](http://www.luna-lang.org/)

Last HN discussion:
[https://news.ycombinator.com/item?id=14612680](https://news.ycombinator.com/item?id=14612680)

------
payne92
> We showed the above to playtesters (kids and parents) who told > us what we
> didn’t want to hear: the game looks complicated.

That's because real programming _is complicated_.

Software systems, with billions or even trillions of switch points, are the
most complex things humans have ever built, by far.

We have tried mightily, for many, many decades, to make programming simpler
and more accessible. The problem: instructing a computer precisely and
unambiguously what to do means you have to precisely and unambiguously
specify...what to do! There's no getting around it, just like there's no way
(yet) to write a novel without choosing words and pushing letter keys.

The graphic approaches quickly get tedious beyond toy examples. Graphs are
fine for telling your Lego robot what to do, but with the Web and app store
overflowing with cool apps, the bar for grabbing and keeping a would-be
programmer's attention is now quite high.

My bet: non-programmers will "program" at scale when where's a fundamentally
new computing model. Machine learning & deep learning are the most promising
for this, I think: instead of telling the machine precisely _what_ to do (and
how), you show examples of the behavior you want and give feedback when it's
wrong.

~~~
cr0sh
> The graphic approaches quickly get tedious beyond toy examples.

The things I have seen created in LabVIEW would absolutely astound you - not
just in their complexity, but in the fact that they work at all (for various
values of "work"), and that someone somewhere out there is able to maintain
them without going insane.

/then again, maybe there are more insane LabVIEW developers than I know...

------
hzhou321
Text is scary. They had the same barrier transition from picture books to
books without pictures. It takes kindergarten where the set up of school give
them the perception that they had no choice but to embrace the initial
difficulty opened the door of wonder for them.

I don't see much difference teaching them programming with a real programming
language. They have to be forced to embrace it first.

~~~
kbsletten
Well, to be fair programming is (currently, at least) an optional skill
competing with soccer, guitar, and video games for mind space. Reading is the
lowest bar for practically everything in modern life so there's more tolerance
for sub-optimal teaching since we all are willing to hold feet to fire. Until
coding is as ubiquitous as reading, we're going to have to do better.

------
Adamantcheese
I wonder if it isn't the text that's putting parents off, but the specific
lesser used symbols like parentheses and the such. For that same reason I
believe parents think that math is hard in comparison to writing, due to the
large amount of domain specific iconography. I also wonder what effect
leetspeak might have on bridging that gap, even though it's probably not the
best solution.

~~~
mysterydip
That's a good point, and one reason I enjoyed BASIC and its dialects so much.
Which is easier to explain to a new programmer:

For i = 1 to 10

Or

For (i = 1; i <= 10; i++)

Once you understand how things work, translating that knowledge to another
language and adding on concepts is relatively easy.

~~~
captainmuon
This is an interesting example, because back then when I learned BASIC (around
age 7 on a Vtech Precomputer 1000 [1]), I couldn't understand why the for loop
was called "for". Why am I doing this "for i"? How does "i" benefit from this?
I didn't know the mathematical idiom "blabla for a value of i equals 10".

I was also strangely afraid of the word INTEGER, which I read as INTER-EGER.
"Integer" has no meaning to a kid, it's just called a number (as opposed to a
dot-number or a fraction).

On the other hand, I never had problems with the fact that is was using text.

[1]:
[http://www.vintagecomputing.com/index.php/archives/324/324](http://www.vintagecomputing.com/index.php/archives/324/324)

~~~
jgamman
i read all the Asterix comics pronouncing Julus Kazar ;-)

Then repeated at post-grad chemistry when first asking a question out loud
about Orger Electrons (Auger - more like Aubergine, prior to lectures
introducing them) - prof was non-plussed... Reading and talking huh ;-)

------
Xoros
I don't know for US, but here, in France, children start to really learn to
read at school after preschool, around 6-7 yo. Some succeed, some have
difficulties to achieve.

Of course they start learning concepts in preschool, but it's not an
obligation to put your kids in preschool (most parents do, but you don't have
to)

So isn't it a problem with text, reading, words... than a specific code
problem ?

As a parent, I'm going to teach coding to my kids, starting next year, they'll
be 8 yo. I'll start with scratch then probably some python. And I'm lucky my
kids are both fluent readers. But I'll still start with scratch.

~~~
hacker_9
The problem isn't reading ability, it's the rigid structure of words that
confuses them (this happens at any age range). What is or isn't allowed?
Grammar rules are invisible at the end of the day and to be honest what does
'move(.left)' signify? Even after 15 years as a programmer I find this grammar
confusing, is it shorthand for 'this.left'? shorthand for an enum? I'm even
wondering if this grammar is even useful, if it doesn't look anything like
languages in commercial use.

Using icons makes a lot more sense, as they are immediately recognizable
pictures that come with the expectation of no structure to learn, and it looks
like from the article they just simply put one icon after another in a list.

------
jrimbault
I routinely send large text files to people around me, I noticed many people
just refuse to read pure text.

So I convert the text to pdf and add some flavor, pictures etc. Then people
read it.

edit: by "large" I mean, by my standards, ridiculously small, like 300 to 3000
words top, but people are scared by simple text.

~~~
0xdeadbeefbabe
It could be a layout thing too. White space magically helps sometimes.

------
dTal
Lack of human factors knowledge in people who write software tools is keeping
kids from coding. And adults, for that matter. There's a huge amount of
incidental complexity and fragility that we just tolerate.

I mean, how does move(.up) look like plain English? What's wrong with "move
up"? Are we really so blind as to not realise that any normal person looking
at that is going to get the strong impression they don't know what the hell is
going on? Hell, _I_ don't know what's going on. What's with the period? What
happens if I don't type it? Fragile and incidentally complex.

Now to be fair there are intrinsic differences between typing in a blank text
box and dragging and dropping icons. You can type anything in a text box,
while icons present a limited selection. This hurts discoverability, which is
why the author saw better results when they gradually swapped out the icons
for text. Dragging and dropping is an atomic transaction which can be
cancelled with good feedback if the user attempts something invalid; this is
not quite so easy with typing, because valid code must be reached through
invalid states on a letter-by-letter basis.

But proper coding in a Turing-complete sense (which none of the games seem to
offer) involves defining your own symbols and wrestling with abstract notions
like iteration that lend themselves increasingly badly to representation in
sprite form. Scratch is a good example of a system that attempts to use the
best of both worlds - its building blocks are text-based, but selectable from
a limited number, atomically placed, and statically checked to practically
preclude syntax errors. Text itself isn't intrinsically bad.

Lastly - it's a shame the industry moved on from BASIC. Programming was never
more accessible than when the average personal computer booted to a REPL of a
standardized, easy-to-use language.

------
Bjorkbat
The title makes me cringe a little. It implies the text-based nature of most
programming languages is a problem, even THE problem. It is, if you're trying
to simply get young kids to use <insert language here>, vs get them to use
said languages to interesting problems.

The problem as I see it is that parents across the country are trying to
prepare their children for a job landscape which may change radically between
now and when they graduate high school by getting them while they're young and
attempting to introduce them to coding as early as 3. Not programming, not
learning how to solve problems with an algorithmic mindset. Coding. As in
getting them comfortable with slinging around functions that build a website
using magic.

Really, we should be teaching them to do the thing that we're trying to do
with programming languages in the first place, which is solve problems with an
algorithmic mindset. I think SpriteBox gets it, kinda, where it falls short is
that in the end they're still hung up by the whole "let's teach kids how to
code" trap and gradually replace the icons with text and do this weird thing
where icons are indented because text-based code is indented. In the end kids
know how these languages work, and how to do simple things with them, but
they've learned all of this within the context of what looks like a
platforming game. Extending this to the act of creating something is
different.

If you really want to teach kids how to program, create an environment that
teaches them how to build and create something cool using a few simple and
easy to understand rules. Allow them to experiment with the rules to see what
happens. Make it so that the upper threshold for how you can bend the rules,
combine rules, etc, is to all concerned essentially non-existent. Enable and
reward creativity, which is something a lot of "coding" games and toys and
whatever simply don't do. They enable and reward you to help a cute robot walk
in a damn line.

~~~
yorwba
My gateway drugs into programming were AutoIt
([https://www.autoitscript.com/site/autoit/](https://www.autoitscript.com/site/autoit/))
and Ren'Py ([https://renpy.org/](https://renpy.org/)).

AutoIt lets you control the mouse, simulate keyboard input and so on. It was
pretty fun as a kid to make a "can't press this button" game and watch others
try to beat it. There wer also bindings to various Windows APIs, which I used
to build GUI solvers for my math homework.

Ren'Py is a framework for creating visual novels, and I made one that mocked
the vocabulary tests by having each choice be a pun on bastardized French or a
running gag in my French class. I think pretty much everyone in that class
played it at some point.

My point being, there are tools out there with a special-purpose scripting
language used by content creators who might themselves not be expert
programmers, and I if you let kids play around with that they will probably
build something they find fun without anyone telling them to do so.

------
xigency
I have a halfway decent solution to this problem.

Currently, I'm working on a web-based game development language. Essentially,
I would like to create a simple programming language, like BASIC, Lua, or
others, and provide built-in libraries for 2D game making.

Much of my formative programming experience was using using Blitz Basic, a
game language. As a teenager, I was able to use it to create games easily.

With all of the visual and graphical game development kits available today, I
feel that it has become more difficult to learn programming in the way that I
did. Providing a programming-based offering is the only solution, I think.

When constructing functions and loops to coordinate and move or draw sprites,
I think it becomes much easier to think about the logic of a computer program
and how that knowledge can be practical.

~~~
RepressedEmu
I think this is an amazing idea! I played with Basic and Visual Basic when I
was younger and it taught me all about logic loops, basic data structures,
etc. Putting that type of playground on the web sounds interesting. Have you
started yet?

~~~
xigency
I'm working on porting the language VM to asynchronous JavaScript. The
language that I'm using is one that I've shared with HN before, although I've
made major changes and added some nice features.

Here is the Duck source code: [https://github.com/gregtour/duck-
lang/tree/duck2](https://github.com/gregtour/duck-lang/tree/duck2) The
documentation reflects the original version, but duck2.cfg shows the new
grammar and the /js folder shows the current progress.

I have a mockup of the interface here as well:
[http://brainplex.net/gamepad/](http://brainplex.net/gamepad/)

One big issue is finding time.

------
pjmlp
Text didn't prevent me to learn Timex 2068 Basic and Z80 Assembly at the age
of 10.

What I would concede is that we had fun books to learn from, like these ones
for the Atari [http://www.atariarchives.org/](http://www.atariarchives.org/).

------
zitterbewegung
Scratch is another solution for this problem

[https://scratch.mit.edu/](https://scratch.mit.edu/)

~~~
cesnja
I don't think it is - after learning how to build things in Scratch, one still
has to transition to a language with different syntax which is text-only. What
was presented in this submission might just be the solution that helps reduce
the anxiety of transitioning from icons to programming languages with text-
based source code.

~~~
spacelizard
Scratch is intended for older children who already have a certain level of
literacy. There is another product, ScratchJr, for younger children that uses
an icon-based UI: [http://scratchjr.org/](http://scratchjr.org/)

The transition path between them is indeed what you described.

------
sevensor
There's a discussion of this on the Bootstrap blog:
[http://www.bootstrapworld.org/blog/blocks/Block-Getting-
Star...](http://www.bootstrapworld.org/blog/blocks/Block-Getting-
Started.shtml). (That's Bootstrap, the teach-scheme-to-middle-school-children
project, not Bootstrap the JS library.) They've tried it both ways. I'll quote
their bullet points:

    
    
        > Things we love about blocks
    
        > 1. Blocks lower the barrier for entry
        > 2. Less frustration
        > 3. Useful hints
        > 4. Visual reinforcement of structure
    
        > Things we don't love about blocks
    
        > 1. Penalizes fast typers
        > 2. Higher demand on short-term memory
        > 3. Small space of visual cues
        > 4. Poor Accessibility
    

They go into detail on each of these.

------
mjw1007
Context: they're working on something aimed at children no older than 8.

~~~
0xbear
Why do children under 8 need to know how to code? They don't even have simple
things like cause and effect established in their brain until they're about
11. I.e. "if it's raining outside I should wear a rain coat or I'll get wet".
Nor do they have much logical reasoning capability. That's also why they don't
get sarcasm.

Edit: paper on pre-adolescent and adolescent brain development, especially as
it relates to cause and effect and abstract reasoning:
[http://www.sciencedirect.com/science/article/pii/S1878929314...](http://www.sciencedirect.com/science/article/pii/S1878929314000516)

~~~
jkaunisv1
You have a really weird idea of what an 11 year old is capable of.

~~~
DanBC
Prefrontal cortex is still developing in 11 year olds which means they're not
great at understanding consequences of actions or making complex future plans.

~~~
vidarh
But most of them are certainly capable of making the evaluation used as an
example above.

~~~
xigency
Not to be the "prodigy" kid, but I began game programming at 10 years old
because I wanted to know how games worked. I tried to buy a Visual Basic 5
book from Borders before my parents gave me "Beginning Programming for
Dummies" instead.

Not sure why these people don't believe that Boy Scouts and Girl Scouts can't
tell the weather.

------
steego
Good article. I hope this article inspires more people to come up with clever
solutions that help bridge the gap with kids and coding. It's easy for most of
us to discount the barriers of syntax because it's so familiar to us, but try
to remember this: People consistently fail PEDMAS tests online. That's a
trivial syntax.

I like their approach to transitioning from an icon/diagram approach to a text
approach. It highlights that text and iconic/diagram representations don't
have to be a false dichotomy. These two ideas can complement each other if
done carefully.

If there's one thing I'd love for every person who aspires to create a visual
development environment is this: Visual representations should be used to
enhance and project program structure, not to replace text altogether. Much in
the same way that the CoffeeScript --> JavaScript translation page illuminates
the language, I believe we should be projecting our text languages into
various clear visual representations.

Having been made to suffer through a few Enterprise Integration Tools
(BizTalk, MuleSoft) that take a diagram first approach, I concluded they would
be much better served if they took a text-first DSL approach that is
isomorphic with a diagram representation. By binding the two at the hip,
working with the diagram based UI would visually teach the user's
understanding of the DSL syntax. In the other direction, playing with the text
interface could instantly reveal how the parser is interpreting the intent of
the program.

Again, I'd love to see more people take perspectives past the usual false
dichotomies and start researching how different approaches can complement each
other rather than compete for attention and mindshare.

------
otterpro
I definitely agree that text is very intimidating, no matter how well it is
represented, compounded by inclusion of numbers and punctuation like (, ), ;,.
+,-,<,>, etc.

Another is that we no longer have the text-based interface in things that we
use. In the classic computing era, text games like "Zork" were popular, and
even DOS and *nix text shells were the norm. Even adventure games like Sierra
Online games had graphic view but had text interface. Perhaps text-based user
interface could lessen the anxiety of text in coding, but I think that we no
longer value text UI.

Instead, everything is GUI now, with touch-interface on iOS/Android in the mix
- and perhaps someday, we no longer will have mouse/keyboard, but rather just
verbal and physical interface. By then, we can program things using complex
language such as "I'd like to move the yellow box sprite on top of the tree to
the left about 50 pixels", then programming code becomes more approachable to
average human. We are already on our way, with Alexa and Siri.

------
ankitrohatgi
I had an excellent math education growing up (not in US) so programming did
not seem intimidating to any of us as it looked a lot like math. For me the
main motivation to code was to have my computer do the math and physics I was
learning in school. US parents and teachers really need to push for better
math skills rather than run away from it.

------
exelius
All we're doing here is separating logic from syntax -- which totally makes
sense.

Ironically, a lot of business software development works like this (not that
it should, just that it does). You have a bunch of BAs who churn out flow
charts and hand them over in the form of requirements to developers who
implement that logic via syntax.

------
bitL
I think it's due to only 10% of humans primarily thinking in text/sound,
whereas 40% are visual and 50% are emotional. This was exploited in e.g. Harry
Potter books. I think we are due visually or voice-driven development
environments that should be now possible with Deep Learning, even if initially
a bit cranky.

------
lostcolony
Umm...where's the research on the efficacy of the change on how skilled the
kid becomes at programming? All I see is they self-assessed that it was easier
with pictures, and they were engaged longer. Great. But DID THEY LEARN TO CODE
BETTER?

The algebra comparison is telling; "a study was done that showed that 92.9% of
kids using the app achieved mastery of basic algebra after 1.5 hours of play"
\- where's the similar comparison?

And, how do we measure 'mastery'? Because the mathematical lexicon requires
numbers, not pictures, and coding non-trivial things are done with languages
that are text, not pictures, the way we test that is also important.

Note that fundamentally I agree with their conclusion that, pursuant to being
marketable, they HAVE to use pictures, because people's impressions matter.
But in terms of actual benefit, I'd want to know more details.

~~~
wikwocket
They did not do hard research, since they are still designing their game, but
they did present it to playtesters. I think this is an appropriate level of
diligence for a product early in the design phase, it's the equivalent of the
"hallway usability testing" recommended for agile teams.

It may be impossible to say right now whether this change helps kids get
better at programming faster, but presumably, more kids will play a game that
they feel is more approachable, similar to how the playtesters responded.

~~~
lostcolony
Like I said, I don't fault their methods for what they're optimizing for:
sales. I -do- fault them for implying that it will improve coding skills when
they never tested for that.

------
NumberSix
IMHO the more likely explanation for these results is that the human visual
system has built in mathematical, logical capabilities actually far beyond
advanced college math. These are used to identify and track objects at a very
early age. It is much easier to access these abilities using pictures and
icons.

Text is an additional layer of abstraction probably involving language and
communication systems _outside_ the human visual system. The text is a label
or abstraction for the visually represented concepts which must be encountered
and learned first.

There is a consistent pattern in learning mathematics and other technical
areas that most students learn better and faster with pictures and concrete
examples. Abstraction comes later.

------
a-nikolaev
By starting with icons first, you intuitively teach the idea of _tokenization_
of the program code.

This idea is important, but trivially simple to an experienced programmer so
easily dismissed. It is not that obvious to a beginner tho.

------
andybak
> From our perspective, we’d simplified the code to what looks like plain
> English.

How do they square that with the presence of parentheses and the use of a
syntactically significant period?

It seems strange they didn’t start with something that looked more like Logo
before concluding the text was inherently off-putting.

I’m not sure their conclusion was wrong — but I’m confused about the point
where they gave up with text.

Also - the final syntax at the end is ugly as hell. Is that the best they can
do?

Finally - not even a hat-tip to Scratch/Blockly? If they aren't aware of it
then it's very odd. If they are and decided not to mention it - I find that
equally odd.

------
jlebrech
I learnt to code with logo, and that was text based. why are we trying to
force kids to learn how computers till they are interested in it. They should
be learning to ride bikes or climb trees.

what we lack in the computing world are games they can make by following a
book, eventually they'll want to diverge from what's in the book and make
their own stuff, the problem is no games are too complex and a simple game
might not hold their attention.

Something like Mario Maker is where they probably should start but the extra
options to change variables and access scripts later on.

------
Zigurd
If software had started in China, we would not have these problems. There
would be an ideogram for each operator or keyword. For one thing, the equals
sign wouldn't be misused as an assignment operator.

------
githubber123
And yet I hate game engine visual programming, whatever you call connecting
those boxes together. I started out thinking the windows commands were doing
something cool and then wanted to make games so i asked my parents for the
Dark Basic software set and began moving images around that shoot sprites I
drew. From there I asked for a Borland C book that came with a compiler and
then jumped into web design a bit. That was about 20 years ago for me and now
I'm a system admin and reverse engineering/making whatever I can on the side.

------
brandonmenc
Didn't Alan Kay and team get a bunch of elementary school-aged children - who
had probably never even seen a computer before, since this was in the 70s -
programming in Smalltalk?

~~~
scroot
Yes. Not only that, but by observing the kids they iterated on different
versions of Smalltalk. The approach there was quite different from what you
see today. They built upon actual psychology and spent the money and time
conducting studies. From that we got things like GUI, OO, etc.

When you see Kay harping on about the dismal state of affairs today, I think
it's that he sees this constant pedantic bickering about static vs dynamic
typing and all the rest as meddling around in the complexity of things that
should be irrelevant.

To the point of the original post, it's also worth noting that Smalltalks were
not just text environments, and that while yes much of the code was written in
text, these kids were not writing text files that they then
compiled/interpreted using their PDP Terminal emulation programs. They were
doing everything in the live environment itself.

Considering the existence of things like Smalltalk and Hypercard, whenever
some uber programming expert tells you this-or-that reason we cannot have such
systems in wide use today, it's akin to saying: "See all this great stuff we
used to have? We can't have it anymore"

------
Clubber
This is a really good idea, separating the logic from the syntax. I remember
when I was learning database design and they taught us using Access, so we
didn't get bogged down in the syntax. When I had to switch to Oracle
professionally, I noticed I was constantly translating what I saw in Access to
the PLSQL in Oracle. After a while, I just thought in PLSQL rather than
Access.

Something I've noticed all the years, teaching is _HARD_. Well, teaching
effectively and efficiently is.

------
kazinator
The kids they are working with are in an age group in which some children are
just beginning to _read_. Yes, text is a problem if you're _not yet literate_.

------
MisterBastahrd
Are you a coder if you don't understand what syntax is? We used LOGO when I
was a kid, and for good reason. It had a limited syntax for classroom use and
gave you instant visual gratification.

Sometimes I wonder if being limited to text adventures when I was really young
was a benefit. If I typed something that the computer didn't understand, it
told me so. It forced me to have patience and to learn to look up the right
way to ask for something.

------
honoredb
Cool! I feel like you could go further and let the student control the
transfer to text. Give all the built-in functions both icons and names, and
let student-defined functions be icons they create if they want. The point
where it's less cognitive load to use text is going to be different for
different students, so let text-based coding be a tool they discover, not a
requirement imposed on them.

------
cordite
I was at a conference lately. After one talk, the presenter talked about his
experiences with his children presenting how to code and teach other children.
He commented that one of the biggest barriers he saw in his own children is
that it took them so long to type out the ideas they have in their head. It
requires immense focus to retain what to do next.

------
wikwocket
There was some great prior discussion of the topic of kids, text, and coding
in a thread about Scratch 3 months ago:
[https://news.ycombinator.com/item?id=14274249](https://news.ycombinator.com/item?id=14274249)

------
thanatropism
I thought this would be "kids are texting rather than messing with their
computers".

------
5trokerac3
> Problem is, many newcomers, kids and adults alike, believe that code is
> inherently complex simply because it looks complex.

But it is complex. Anything beyond the most basic examples delve into the
concepts of calculus.

If we don't expect most children to comprehend advanced mathematics until
they're teenagers, why would we expect most of them to grasp anything but the
most basic conditional logic until then.

That's not to say that we shouldn't attempt to teach children coding at a
young age, but the idea that anyone but a few would understand genuine coding
at the same developmental period where they're learning to spell "dog" and to
add 2+2 is a bit ridiculous.

I wonder if the authors consulted a child psychologist before beginning their
endeavor.

~~~
savanaly
>But it is complex. Anything beyond the most basic examples delve into the
concepts of calculus.

Huh? My codebases at work have never involved calculus. Not all programming
proceeds along the lines of Project Euler when getting more complex.

~~~
5trokerac3
The very concept of functions is calculus.

Kids are in their teens before we even have them solving x=y algebra.

~~~
savanaly
Maybe we're working from different definitions of "calculus".

To me, equations and relations between variables are not calculus, just
algebra. Only when you start studying the infinitesimals of change does it
start to count as calculus. I don't have any derivatives or integrals in my
programs, and very few do.

~~~
carapace
[https://en.wikipedia.org/wiki/Functional_calculus](https://en.wikipedia.org/wiki/Functional_calculus)
maybe?

------
hartator
I was playing this kind of games when I was a kid. More like a puzzle than
coding though.

Kids who want to learn how to code should just do it with regular tooling. You
don't need any special approach.

------
Froyoh
I wonder what it's like growing up in today's world learning to code... Very
different from how I was introduced to coding.

------
cutler
Kids learn to read music at school so why should learning to code be any
easier? Skills have to be learned. Simple as that.

------
jaequery
if i had learned to code using those graphical things when i was growing up, i
probably woupd not have become a coder. wheres the joy and fun in it? looks
laborius and boring to me.

------
21
Are 5 year olds expected to read these days?

I learned it at 7-8.

~~~
hathawsh
I remember getting frustrated with my kindergarten teacher because she
insisted that the letters "T-H-E" spelled a familiar word, yet the word has no
T sound, H sound, or E sound. What a garbage language, I thought.

So yeah, I'd say kids start to learn to read at 5 or earlier.

------
cr0sh
I can't comment too much on this, except to say that it did cause me to recall
something from my early childhood.

I remembered that in the first grade of elementary school, when I was 6 years
old, that we used these workbooks with tear out pages to do these "math"
problems. Simple addition and subtraction, IIRC.

But these workbooks didn't use numbers and symbols; instead quantities were
shown by fixed objects (like coins, or other images), symbols were replaced by
something else, but I don't recall exactly what (maybe simple words - so not
completely "text free").

On a different note - a few years ago my wife asked me to look over a friend's
child's homework, to try to figure out how to do the problems, and what the
answers were, because her child was having problems doing the homework, and
neither she nor my wife could figure it out (neither are very math fluent).

I looked at it - and at first it was "gibberish". There were some "standard"
symbols for multiplication and addition, subtraction and the like. But
everything else was symbols.

Like, there'd be a problem that visually was something like "circle + ? =
triangle" or "2 square + 3 triangle = ?" (I may be mis-remembering things,
too). It was very confusing, but fortunately the worksheet (which was all I
had) had a couple of "example problems" and their solutions included. I
studied things for a bit, then it dawned on me:

It was algebra - but it was being taught with symbols instead of numbers, and
the solution (and how to arrive at it) was pretty simple to understand, once
this was realized. In short, numbers are symbols (hey, I'm not a big math whiz
myself - I know just enough to blow my foot off) - so it made sense that
swapping these out wasn't that big of a deal, provided you had some base
knowledge about the rules (which were provided by the examples).

I was able to figure the problems out, then write down how things worked for
her (and her child) to read and understand. AFAIK, the homework was completed
and turned in with correct answers.

At the time, her child was probably in the 4th or 5th grade, and it was
interesting to me that the school was using such a system to teach algebra at
an earlier age than what I recall having learned it (my first real algebra
class wasn't until 7th grade, though in elementary school in 5th and 6th
grades we had been doing some of the basics beforehand - I guess for "prep"
for the coming years).

So, in the case of coding, I can see how this idea of starting with "abstract
icons" (somewhat) to represent certain coding statements and ideas - and
gradually phasing in text - seems like something that should work (and they
seem to prove that it does, too).

Oh - another early example from when I was younger; arguably I first started
to "program" when I got my first programmable toy - a Milton Bradley Big Trak.
It's keypad used mostly symbols (plus some numbers) - but had other symbols
for other actions...hmm.

------
ibn_ibid
If you give your kids books, text isn't scary

~~~
Insanity
If that held up, I wonder why (at least from the article) it seems that
parents thought the same.

~~~
throwaway2016a
I think that sometimes parents "protect" their kids from complicated things.
They underestimate what children are capable of.

