teaching kids to code has had about three stages in the world:
- computer classes or labs in primary schools, in the 20th century
- computers for developing nations initiatives like one-laptop-per-child
- the contemporary rasp-pi/mobile app stage
each of these stages was driven by significant changes in hardware; the first by the advent of the home (and school) pc, the second by the development of a radically inexpensive “netbook,” and the third by both smartphones and single-board computers (sbcs).
i grew up in the first of these, and taught myself to code at home. the question “code what?” was not important then; asking it would be like the j.k. rowling interview where a reporter asked: “what should kids read while waiting for your next book to come out?” a stunned rowling replied, “other… books?”
with logo, the question is answered before you start: logo lends itself most easily to making graphical designs, so hopefully no one has to be told what to draw– on the other hand, challenging students to draw specific designs helps them develop problem-solving logic that truly applies to all other coding.
simple “coding challenges” and practices are extremely common, so if you have read any articles recently that say this question isnt addressed, its likely written by someone who has never actually tried to learn. this is often the simplest answer to “code what?”
part of the reason people outside coding, looking in are eager to know what to code is that theres no reason to take the question too seriously– there are literally thousands (more than thousands) of things you could work on, and listing them all would barely get you started.
if you are learning to code, the first goal is to get you familiar with the language and the basic (somewhat universal) ideas about programming.
as computers have gotten more powerful, languages have gained a great deal of complexity. in the first stage of teaching kids to code that i mentioned, we (including linus torvalds, the author of the os kernel with a similar name) were quite pleased to tell the computer “say this on the screen” and then “keep doing that over and over.”
in those days, you could learn how to do things very quickly. you can still learn very quickly, but there is a lot more to learn. of course, someone will point out that computers can do so much more. and yet the basics really havent changed; we could still make coding about as easy to learn now as it was then– we simply dont.
without making this task simple enough, we reduce the exploration that is possible with minimal guidance. and now that we must hold the hand of an instructor (or tuck into longer chapters just to get to a “guess the number” game) we might as well ask: “where should we go?”
its not that there isnt an answer– the point of learning to code is that you decide. it would be nice however, if people were taught to slow down and actually learn what they were doing. you can start from “write a game” and work your way back like they do now, but this results in a lot of people who dont understand how to put things together.
that can also be a difficult rite of passage when learning to code from the other direction, but here is a formula that will work for many people:
- learn how to write simple lines of code
- use that basic knowledge of coding to learn how to interpret larger snippets of code in the same dialect
- look for code examples and take them apart, to learn how to fit more complex things together
- practice writing increasingly complex snippets of code
this is a fairly natural path to becoming a coder. if they arent teaching this, perhaps they are only teaching part of what you need to know.
as you follow these steps, they will inspire you to try out similar things– especially from step 2. but there are also basic coding challenges, and those should provide additional ideas.
a lot of modern coding is about looking things up, often online– anyone who has looked up how to complete a task can probably look up ideas for what to code as well. just as importantly, if you know how to look things up you can tailor the search to the sorts of things you might actually like.
its not a stupid question– but its not that hard to find answers, either.
- license: creative commons cc0 1.0 (public domain)