Career Day

24 October 2012

Note: I half-wrote this way back, but then had to put the blog on hiatus due to commitments that make me money. I've decided to post this now that schools are back in session, hopefully encouraging others to speak at their kids' schools this year.

I did my first career day at my son's school, and it was a blast.

I'd never done one before, because either the timing was poor, or the stinker would hide the flyer from me. This year, I intercepted it and was able to sign up, much to his horror.

The lead-up

Since I signed up for a whole day, I thought I'd be speaking for the whole day. Imagine my level of peevishness when I found out I was only signed up for three talking slots. Was I not cool enough or something? I pouted with another first-time parent (also in IT), as we waited for our turns.

The cool factor of the other parents was also a bit intimidating. We had:

  • A bee keeper
  • A mobile vet lab
  • A freaking SWAT team
  • A mounted policeman
  • Loads of firemen
  • A Redskins cheerleader

Seriously? I'm going to compete with that? I comforted myself that I was at least a step above the nutritionist.

Talking to the kids

Finally, it was my turn.

We were handed a sheet of things to cover. This sheet was very important, because the kids had to write down certain things about you, like how much you can make in your career, what character traits are important, and how much education you need. You know, the boring stuff. After that, you could ad lib all you wanted.

I was tempted to ad lib all the way through, but the kids stopped me cold. "You're not reading the sheet."

"Uh..."

A girl held up her worksheet. It looked like the sheet I'd been handed, except hers was mostly blank. Fine, I read off the sheet, they filled out their paper, and they were happy. Less stressed, they actually paid closer attention to what I had to say after that.

    My spiel was pretty basic:
  • I told them I was a developer, a person who makes programs for computers and the Internet. Computers are stupid (the kids loved that I used a 'bad' word, by the way), and we give them instructions to tell them what to do.
  • We call those instructions 'code.'
  • Many things in our lives are either computers in disguise, or contain computers. Gaming consoles, phones, MP3 players, TVs, and even cars use code.
  • Being good at math is a plus, but I know many developers who aren't as good at math who are great developers.
  • What you need to be good at is breaking down a problem into parts, and being able to solve those parts.

Oh, and be good at writing and communication, I added. I figured I might as well indoctrinate some of them while I had them, because we totally need more developers who can write coherently.

I also brought up that I was way overdressed for my job, seeing as how I was in jeans and a nice sweater set. I usually wore my pajamas.

My spiel done, I brought up the code for a fairly basic number guessing game.

import random

high = 10
secret_num = random.randint(1, high)
while 1:
    guess = input("Give me a number between 1 and %s: " % high)
    if guess == secret_num:
        print "You got it!"
        break
    elif guess > secret_num:
        print "That's too high. Try again!"
    else:
        print "That's too low. Try again!"

I walked them through it, and surprisingly, the kids got it right off the bat. We messed around with it, raising the upper limit, changing the inputs, adding how many times the class had guessed. They really, really understood it. They knew what to change, and they knew what the outcome would be.

This should be a lesson to educators: You don't need to start kids off on some fake programming language like Scratch. We have something they can understand and actually use later.

I then brought up my roguelike, toyed around with it, and showed them how much more code was involved. They began to understand that you can do a lot with a little code, but sometimes you need a bunch of code to do something bigger.

Lastly, I made my Mac speak. This, hands-down, was the best trick, and it was one I didn't add until a few minutes before I started my talks. You'd think a bunch of kids who had consoles and computers at home that spouted voice acting all the time wouldn't be into this, but they were amazed. I got requests to do everyone's names, get the computer to sass me, and get it to say bits of songs that I wasn't cool enough to recognize.

Question time!

There was a time set aside for questions, and I got hammered.

    Common questions:
  • Do you know anyone who makes video games? (Yes, I know people at EA and BioWare, and a few indie developers. The kids flipped out over this)
  • Can I play your game on my XBox/PS3/DS? (No, and then I explained how distribution channels worked, and how it was very expensive to develop for consoles)
  • How long does it take for you to make a website? (It varies. I've put one up in an hour, I've had them take me a few weeks. One took a group of us a year to make)
  • What games do you play? (I'd list off all the titles I could think of, much to the dismay of the teachers. I think they wanted me to decry all games as evil. The kids, however, were stunned that I played many of the games that they did.)
  • Can you hack our teacher's computer? (Uh, no. That's illegal.)

What surprised me

The kids repeat questions. Over and over and over again. Not variations on a question: the same exact question. I would just repeat myself until the teacher intervened.

Every kid has a smart phone. I guess my son wasn't being dramatic when he said he was the only one without one.

I should have reviewed what kids call numbers before I went in. They don't call them integers and floats. They call them whole numbers and decimal numbers. I'd recommend asking the teacher before you go in, since this could vary by district.

One kid asked me if I knew anyone who worked on Grand Theft Auto. "That's rated M. What do you know about that series?" "Um..."

The kids were shocked that me, an old person, played as many video games as I do. They were also shocked that I knew what all the systems were, and that I would actually choose not to buy one.

They were really, really good at the number guessing game. Like, almost perfect. I've known adults who couldn't do the guessing game in the minimum amount of moves.

Not everyone presenting was a parent of a child there. Some had children who graduated long ago, others were friends of a teacher. Some had approached the school and had a standing agreement. I had always assumed that the adults at career day were parents to a child there, but most weren't.

So, should you do a career day?

You absolutely should. I was up against a SWAT team and a vet, and I ended up being one of the more popular presentations. It takes barely any prep: I wrote the number guessing game while I was waiting. They already had the format they needed, and it wasn't anything I had to think terribly hard about.

Getting kids excited about programming today means that one day, you're more likely to have competent juniors. If you plan on being in the workforce eleven years from now, the fifth grader you talk to today is your new hire in the future.

Share

Related tags: kids python

Comments

1 Philip says...

Great read! I've taught accelerated computer science to select high schoolers for two years, and I've seen first-hand 1) how quickly they pick up things; 2) how important it is for a teacher to relate to them.

Thanks for sharing this story.

Posted at 12:22 p.m. on October 24, 2012

2 Glyph says...

An inspiring read. Thanks for posting.

One minor thing that bothers me: "whole numbers" is an acceptable replacement for "integers", and "floats" is computerese jargon that I wouldn't expect kids to know, but "decimal numbers"? Come on, american schools. "Decimal number" means a number written in decimal, which is just one way of representing numbers. Children should know this.

I was at a dinner party recently where I discovered that apparently the majority of american college graduates (including almost all lawyers) are not aware of radixes other than 10. In this era, where pretty much all the math that's going on in the world is in base 2, that is really going to become a problem.

Posted at 12:43 p.m. on October 24, 2012

3 Justin says...

You play video games. Of course you were more popular than the vet! :P

Kids are actually a lot smarter than most people give them credit for, it shouldn't be too surprising that they can pick up that number game so easily.

Posted at 7:19 p.m. on October 24, 2012

4 Alex says...

Glyph, since I'm probably as close to grade school as any commenter is likely to be ;), I'll just throw in that we did cover alternate radixes in the 6th grade, however I'd be completely shocked if more than 5 people from our class remember the word radix, much less what to do with that information.

Posted at 11:46 p.m. on October 24, 2012

5 Aleksi says...

Next time you (or anyone) present at a career day and get asked if you can make xbox games, say YES! Check out Xbox Live indie games. VS express should work nicely and the games are deployed over your local network (no hassle with cables). Though I'm not sure if you need a paid account to Apphub or whatever it's called. Anyway the subscription is just 70$ or so for a year.

Posted at 3:39 a.m. on October 25, 2012

6 Jerry says...

Re: Your Swat Team competition, you may wish to watch Season 4, Episode 14 of Monk: Monk and the astronaut:

This should take you to it at Netflix: http://nflx.it/WKPDA9

Posted at 4:04 a.m. on October 25, 2012

7 Thom says...
  • What you need to be good at is breaking down a problem into parts, and being able to solve those parts.

This is the definition of doing maths. ;)

Nice post, thanks.

Posted at 5:23 a.m. on October 25, 2012

8 Emre Sevinç says...

A nice read was it indeed. Thank you very much for sharing your impressions.

And now a short criticism: The Scratch programming environment, being the most child-friendly system I've ever seen so far (and I have tried to teach children, as well as adults with zero prior programming experience, using environments as different from each other as StarLogo and Python), lets children create amazing programs, but most important of all introduces the fundamentals of computational thinking and creativity with almost zero barriers for entry. From a programming perspective, it definitely has a lot of shortcomings (most of which have been addresses by 'add-on's or similar systems built on top of it) but if you want to show the basics to a bunch of kids who are 7 or 8 year olds, then it is a great system.

Moreover, the social aspects of Scratch, namely easily publishing your projects and seeing the source code of others, are a gift. Try to do the same with Python and GitHub (one of my favorite combinations when I'm not dealing with children ;-), starting from scratch (some pun intended) and showing them all the tools... I'm curious how far their attention span would go.

Finally, apparently a number guessing game can be super easily implemented with a 'fake programming language' such as Scratch, too: http://scratch.mit.edu/projects/emres/2859373

And the source code, plain and simple, is probably easier to explain to children (and I had kids create much more complex games, animations, quizzes, etc. with Scratch): http://www.flickr.com/photos/64416865@N00/8121602786/in/p....

PS: For a nice account of Scratch from a veteran compile developer please see: "Teach children planning and problem solving not programming" http://shape-of-code.coding-guidelines.com/2012/09/20/tea...

Posted at 5:44 a.m. on October 25, 2012

9 Ian Witham says...

I think Scratch is a great program and I know I would have had hours of fun with it had it existed when I was a kid. But then I already enjoyed playing around with Commodore basic and Logo. Does Scratch really help to hook kids who wouldn't be equally hooked by a suitable introduction to something like Python or Processing?

Katie's successful career-day experience suggests that there's no need to condescend to kids with cartoonish building blocks just to show them the "basics" (loops, variable, conditions...)

Maybe simple code first, followed by Scratch later would be the way to go? That way the kids are familiar enough with the fundamental programming constructs to recognise the same patterns in the graphical Scratch environment and simply have a lot of fun with it.

Posted at 6:11 a.m. on October 25, 2012

10 Rickard Karlsson says...

Great post! It was inspiring!

Posted at 7:24 a.m. on October 25, 2012

11 Bob says...

Nice read.

The line "elif guess > secret:" should be "elif guess > secret_num:" ;)

Posted at 7:50 a.m. on October 25, 2012

12 Katie says...

Argh! Thanks for the catch, Bob.

Posted at 9:58 a.m. on October 25, 2012

13 Emre Sevinç says...

Hello Ian,

I agree with most of what you say, especially that in principle a kid does not need something like Scratch to learn the fundamentals, after all, like many people of my generation, I sat down with a Sinclair Spectrum 48K + books + magazines and worked my way through them day and night. But then again, I did not have any distractions such as the ability to run chat, youtube, browser, etc. at the same time while checking my last.fm client for new recommendations at the same time ;-) Oh, and the simplest animation, graphic effects with sprites, etc. took a lot of coding effort, manipulating sound was not that easy, multithreading (which Scratch makes rather effortless and seem very natural by using message passing) was considered a very advanced topic, if considered at all.

I'd also urge educators and programmers to not think English-centric. Of course any serious software engineer / developer (candidate) needs to know English for daily work, a 9-year old who is curious about creating something with computers, doing something 'programmatic' can perceive the language barriers very off-putting. Scratch helps with that, too: With a single click it is possible to have everything in one of the many available languages (I'm not counting educational materials translated to many different languages). This alone helps people to use Scratch for kids who speaks only Dutch, French or Turkish:

Posted at 10:26 a.m. on October 25, 2012

14 Eli says...

Thanks for the story and congrats on standing up with your geeky passion in front of such a tough audience.

Now, I know that you did it partly to get the kids attention with a "bad word", but calling computers stupid, while a common phrase, is as misguided as calling Legos that. Computers are best thought of as open-ended worlds, not narrow minds.

Cheers!

Posted at 10:28 a.m. on October 25, 2012

15 reagan Gibbs says...

you guys are missing the point about scratch. think. how many computer IT/dev people (or even people who know how to script html) teach 7 and 8 yr old kids? The point about something like scratch is that non coding TEACHERS will be able to implement an activity that gets kids on the path to coding. please read that again and think about it...

Posted at 10:56 a.m. on October 25, 2012

16 reagan Gibbs says...

you guys are missing the point about scratch and coding environments like it. think. how many computer IT/dev people (or even people who know how to script html) teach 7 and 8 yr old kids? The point about something like scratch is that non coding TEACHERS will be able to implement an activity that gets kids on the path to coding. please read that again and think about it...

Posted at 10:57 a.m. on October 25, 2012

17 jonny says...

Loved this post had to tweet it. I find children actually grasp concepts very quickly and faster than many adults, especially if you explain it in terms that relate to there world.

Posted at 10:58 a.m. on October 25, 2012

18 Hugo Estrada says...

I loved this entry. It inspired me to begin teaching the kids python, again. My son was so thrilled to see how the computer would do what he asked on the computer. My daughter, older and a bit more jaded, still enjoyed the number guessing game.

Posted at 11:18 a.m. on October 25, 2012

19 Loen says...

How old were the kids? I was impressed they knew what was going on in the python snippet. I have an 8yo and started him out on HTML+CSS. He took to it pretty quickly, so I'll start him on javascript next.

Posted at 11:33 a.m. on October 25, 2012

20 Hugo Estrada says...

Let me jump into the Scratch discussion.

I think that Scratch is great. It teaches the fundamental ideas about commands, variables, and loop control. As an added bonus, it also teaches concepts of encapsulation and event messaging. Saying, "an object in python is a sprite in Scratch" is an easier way to convey the basic idea of an object than the abstract description that is the usual way of teaching the concept.

The graphic interface is great for children who lack enough keyboarding skills. I actually had to give up on teaching my daughter python a couple of years ago because she couldn't type quickly enough. She also had a strong desire to program in lisp after I got "Land of Lisp" book, but once again the typing got in the way. Scratch bypasses these problems.

Also, we must keep in mind that teaching languages such as Basic and Scratch are purposefully limited because the goal is to teach fundamental concepts. Most are not meant for long-term use; but something that you play with a little bit and then you move along. If the child is hitting the limits of the language, then this is the point where a new language should be introduce, such as python.

Now, maybe this exists, but having a social site to share python and pygame games would enhance python as a learning language for children.

Posted at 11:36 a.m. on October 25, 2012

21 ALFRED.THOMPSON says...

Actually with XNA one can write games that can be played on an Xbox 360. Students can get access to it all for free via dreamspark.com Check out http://msdn.microsoft.com/en-us/centrum-xna.aspx for more information.

Posted at 1:57 p.m. on October 25, 2012

22 Hunter Fogarty says...

Please come to my school and tell my teacher that Scratch, and Alice are not valuable teaching methods. I'm 16 and in the 10th grade, and bored out of my mind in my programming class. A real teacher to help me learn Java would be great.

Aside from my under-educated programming teacher (Which by the way doesn't know what a modem is), your blog was nice, and I enjoyed reading it. I'm glad you had fun at your career day with your son.

Posted at 10:21 p.m. on October 25, 2012

23 Mark Lakewood says...

I did a Careers day at a High School. I think it was year 10's. I didnt think about actually programming, as I thought it might be over their heads. So I instead stepped them through making an algorithm for making a paper airplane. Apart form the "naughty" factor that everyone enjoyed about making a paper airplane in class (even myself) it showed how you have to map real world to code, and how difficult that is.

Anywho, I think next time I might try a console program.

Posted at 2:56 a.m. on October 26, 2012

24 Wakjob says...

Did you tell them if they went to college and studied CS they get to graduate with $60K in debt and have their jobs stolen by Indians?

Posted at 3:46 a.m. on October 26, 2012

25 Emre Sevinç says...

Hello Hunter Fogarty,

Why don't you try the following for Java:

http://www.bluej.org/

Posted at 8:03 a.m. on October 26, 2012

Comments are closed.

Comments have been closed for this post.