Visualization is Child’s Play
Feb 03, 2009 In Development By Joshua AllenA recurring topic of conversation among parents here at Microsoft is, "how do I teach my children to program?" This desire is motivated in part by the belief that programming ability was important to our own career success, as this funny comic from xkcd.com illustrates. Confirming this diagnosis is the fact that parents often tend to look back to their own introductions to programming for clues to motivating their kids -- whether you started with Logo, GW-Basic, HyperCard, or Perl; chances are that is one of the first places you're tempted to look when predicting what would be useful in teaching your children.
Children are naturally drawn to other creative pursuits on the computer; kids will spend hours with painting programs, 3D modeling tools like SketchUp, and creating stories or slide shows. But they tend to be less drawn to writing code. Unspoken in many parents' desire to "get my children interested in programming" is an implicit assumption that these other creative pursuits are less valuable than coding. This assumption is, in my opinion, fundamentally incorrect.
When my generation got hooked on coding, coding was the top of the value chain -- it was the way to do things that simply weren't possible before. That's why we were excited. The truth is, the capabilities of computers have advanced dramatically in the past 20 years, and today's children have already moved up the value chain. Just as we would have found it silly to write all of our programs in assembler language or construct our logic gates manually, I believe that most of the new generation will see little point in building their programs in a general-purpose procedural language.
The first example of this trend is the rise of markup. People building client user interfaces using markup now outnumber those writing their user interfaces in code by an order of magnitude or more. We used to have to write code to generate our UI. Producing good markup requires every bit as much craftsmanship as writing good code; but the effort is focused more on what really matters -- the user experience. Of course, most markup-driven experiences still have code behind. But the code no longer dominates the value proposition.
Closely related to this is the rise of domain specific languages and simplified scripting languages. In fact, markup such as HTML or XAML is really just a domain-specific declarative language for building UI. I believe that the future belongs to some handful of as-yet uninvented domain-specific languages.
Next is the rise of simulation games. Kids today build and manage simulations that would have stymied the fastest machines and best computer scientists of 20 years ago -- and they do it for fun. Any typical game of The Sims or Zoo Tycoon will have literally hundreds of parameters and moving parts configured by the players, and it's natural for kids to experiment with things and see how they turn out in the simulator.
This is a dramatic shift from when we were kids. When Apple II was released, "artificial intelligence" was practically synonymous with "decision trees", and the popular simulation games (ZOrk?) were essentially big "choose your own adventure" trees. Procedural programming fit neatly into this mindset that saw computers as being deterministic robots following a decision tree. And that was pretty much what computers were.
But today, computers are a lot more than that. Very little of life is actually suitable for modeling as a decision tree, and many fields of science have moved on to more probabilistic modeling techniques hand-in-hand with a computer's ability to perform large simulations where randomness is a factor. This isn't to say that your kid will automatically become a scientist by playing Zoo Tycoon. But kids today are already predisposed to understand things like numerical analysis using Monte Carlo simulation, and a whole variety of other indispensible tools in science or business. Kids today learn from an early age to think critically about the configuration of the model, and just expect the computer to handle the simulation for them. That's the way it should be.
A good example of this is the project from Microsoft Research called Kodu. It's a blend between simulation and procedural, where kids focus only on the parts of the program that actually matter.
Finally, we come to the topic of visualizing information. To realize how much things have changed, you need to remember how things were when we were kids. The first spreadsheet programs didn't even have simple visualizations like bar charts and pie charts. It seems absurd to think that someone could build a software empire by implementing bar charts and pie charts, but that's what Mitch Kapor did with Lotus 1-2-3. People made massive financial models using Lotus and Excel, and MBA students were trained on "chart literacy" to learn how to read and produce proper charts.
As revolutionary as these developments were, they are child's play for kids today. Charting software is commodity. Commercial packages include vastly more powerful visualization capabilities. "Chart literacy" is a given, and children grow up immersed in communication packaged as visualization. Children have higher standards, and far more powerful machines to crunch data than we had. Communicating difficult data visually will be a valuable skill, and will require creativity and craftsmanship.



Follow the Conversation
9 Comments so far. You should leave one, too.
If you live in the USA there’s no reason to teach your kids programming. The Govt. & Corporations will simply outsource the programming jobs to other Nations. Teach your kid a skill like plumbing. Something that’s in demand no matter what.
The Govt. & Corporations don’t care about the USA. Why set your kid up for a life of misery where he/she ends up hating the decisions YOU MADE FOR THEM.
I pledge allegiance to PROFITS.
Or, have your child invent software so people in the USA can understand the unintelligible English spoken by outsourced Tech Support. FFS.
Good post, Joshua.
If you live in Canada and the USA there’s every reason to expose your kids to engineering and in some cases programming. It all depends on interest and aptitude. These are critical skills that are needed to help spur critical thinking, help build imaginations… and as Bill Gates said, “to maintain a competitive edge in technology innovation.”
http://www.washingtonpost.com/wp-dyn/content/article/2008/03/12/AR2008031202216.html
Kids are surrounded by an incredible culture built and supported by new technology. Growing up in such a culture, the ones who will be successful in the future are the ones with a working knowledge of the technology and engineering behind it. But many schools don’t challenge children: Gates noted that our children are “digital natives caught up in an industrial-age learning model,” which does not prepare them for a challenge that many other countries realize is the underpinning of future success.
Kids should experience many different skills, including good trades. They should be comfortable with a hammer just as they are able to read and draft the plans that map out future innovations.
Great article!
I used to think I am part of new Gen*, but I’ve seen some younger kids these days just simply demand highly visualized data representation and find anything but simply un-acceptable.
Almost all of my college text books were massive data visualizations presented to capture patterns in data for me to learn from.
@Simple Reality –
Sorry to hear you so upset, but I think you are wrong. There is a need to have a Programmer in US, but she/he needs to have basic Business Analyst skills and communications skills – those kids would be just fine! Simple programmers, moving forward the demand is low. But value add of knowing programming and logic is priceless.
[ Wish there was a rate up/down for comments, kinda like Engadget ;) ]
A great read Joshua. As a designer I couldn’t agree more with what you’re saying. but as M3 and Nikita touch on, learning programming is something that I think is perhaps fundamental to what learning and education in the future MUST look like. Walter Bender of all folks said something interesting once that I quite agree with. “Teaching children Excel is not the future, but teaching them how to program is.” It’s something that’s fundamental to developing the cognitive and decision making processes that will serve anyone well in life regardless if they grow up writing code for a living. Perhaps the future is reading, writing, arithmetic and programming.
@Nikita: Exactly — it’s a good thing when we move up the value chain and spend less or our time on lower-level stuff.
@M3, @Chris: Totally agree. I think it will remain important for kids to learn programming, but it will no longer be the top of the value chain, and it will be sufficient to learn “simpler” higher-level languages designed for specific domains rather than these low-level general purpose procedural languages. As with all predictions, I could very well be proved wrong, of course :-)
Quote: “Chart literacy” is a given, and children grow up immersed in communication packaged as visualization.
Hmm … I wish it were so. There are unfortunately few adult that are literate in charting, let alone children! It is easy to create a simple visualisation (just look at the 28473 so far on Many Eyes) but how many of these actually convey much information to the viewer. For instance we see some bar charts with 2 data items (wouldn’t the number be sufficient) and some with 1000’s of data items presented as large coloured blobs, where all one can say is “there’s lots of blobs”!
Even worse than Many Eyes are examples produced by Excel. Not that Excel is bad (it can produce good charts) but just look at the 100’s of really bad chart types which confront the user … can we blame the user for picking one that is colourful and ‘looks good’. In addition to this ‘candy store’, the default colour schemes, labels, etc. are poorly chosen and it’s time consuming to alter them. The same goes for other visualisation creation tools from such as Cognos and Business Objects … just look at their web sites to see what they consider are good visualisations. It makes me cringe!
‘Looking good’ or interesting or colourful has nothing to do with getting across information to the user but these unfortunately adorn the media and if children (and adults) are immersed in this then they will believe it is visualisation … when in fact it’s visual but almost informationless and hence defeats its purpose – communication.
@Geoff: Thanks for sharing your perspective. Agreed that chart fluency isn’t a given, and still takes time to develop. But let’s not forget how things were not long ago. I’m convinced that basic literacy is much broader than it was 20 years ago. Every criticism about the poor quality of tools, poor judgment when people create charts, etc. would apply treble back then.
Good post Josh,
I live in Cape Town, South Africa and I have two boys (6 and 8 years old). They have been exposed to computers from an early age and the games they enjoy the most are real time strategy games like zoo tycoon. I am a programmer myself and I can already see in them that they do expect the computer to handle things differently from the time I was learning about computers. The future of programming is definitely the graphical way and maybe also the virtual reality way.