My company is allowing some local high school students to come on-site and job shadow for an hour or two. What are some ways that I can inspire these young people into potentially taking a career in software development? Any advice would be great. Thanks!

+3  A: 

Show them how to program a simple game.

Ben Hoffstein

Talk to them about the advantages of using an RDMS as opposed to a binary flatfile database. That will be sure to excite them.

Other than that though, I think a simple slots game would be cool. Give it some cool graphics, and it should catch their attention.


Alex Fort
"Talk to them about the advantages of using an RDMS as opposed to a binary flatfile database. That will be sure to excite them."Ok so I'm strange but that would have gotten me excited.
+1  A: 

I'd try get them into games, I don't think its necessarily the best long term career but all kids want to write games and it will get them learning. Here are some great places to start - imagine letting them know they could write a game for their xbox 360!


Fill your office with about a foot of cash (play money works too ...) and say: "See, we make so much money, we have to walk through it to just reach our desks!" But seriously, have them shadow devs that are doing something interesting for the day. Have them sit in front of the computer and have them code something for the company (something really really small). Just get them involved and get that keyboard into their hands!

+1  A: 

Show them how to develop something they're interested in in a way they can understand.

For highschool students, this usually means writing a game of some sort (text-based RPG is always an easy choice) with ample amounts of pseudocode.

Kevin Pang
+2  A: 

Have their parents forbid them from programming. Guaranteed way to make a teenager do anything :)

Funny! I'll give you +1 for this!

I find inspiration by looking at success stories of other young developers. Zuckerberg, Mullenweg and Co. Motivation is something that's a bit harder... most importantly i think it needs to come from the student themself.


Aside from the previous posts, I would perhaps try to show them what makes programming enjoyable for us - show them something big, complex and interesting and tell them "I created all this!". The problem is finding that big, complex and interesting program...

Roman Plášil

There are a few nice projects floating around that are kid-friendly introductions to programming that you might find useful. Here's a couple of links off the top of my head:

+1  A: 

There are a few exercises that are interesting:

  • act "as dumb as a computer program" and have them verbally instruct you to do something that humans find very simple
  • lead groups to write programs in psuedo-code on a whiteboard
  • using a projector, transform the psuedo-code into a working program
  • look at some of the examples in the first few chapters of Head First Java for good ways to format examples like that

i've had interns fresh out of freshman CS programs that spent days watching me write code and absorbed practically nothing - it wasn't until they had to start producing their own code (i.e. driving in a pair-programming situation) that they were able to learn anything.

other than that, what are the things that you really like about writing software? what are things you like about writing software for your company? i know i like the constant challenges and the need to continue learning new things everyday.

oh, and candy - kids love candy. -ab

brooks hollar
+2  A: 

Show them Processing -

it does phenomenally cool things, it's very easy to get up and running, and one of its mission statements is to be a teaching tool. It's also designed for creativity so appeals to both left and right brain types and it even encourages good programming practice too.

+3  A: 

Have them solve a problem out loud, and see the results working on a computer.

Do something that's a classic CS problem for which a solution can be spoken out loud in almost pseudo-code.

For example, say, "I have a bunch of pairs of socks all mixed up in my drawer. I want to find all the socks that go together. So here's a file that represents my sock drawer:

1 113 115 4 1 ... etc

How do I find all the socks that go together? Well, ok, grab one, root through the drawer until you find it's match set it aside. (Show some basic code that does that. Use a readable language like Python. Demo that it runs, and that it's super slow when you have a warehouse full of mismatched socks).

Challenge the HS students to come up with a better way to find all the right socks, and code up the solutions they come up with, leading them eventually to realizing they just have to sort the thing, and that there is a good way to sort and a bad way... Show how much faster the stuff runs now. "And that's what I do all day"

Or if you are good with JS, demo some toys -- a cat image chasing your "mouse" in the browser, and explain how it works.. that sort of stuff.

This may also be an interesting exercise -- Get the students to come up with a list of things they do on computers and tell them what areas of CS are responsible for it and why what seems really simple (Instant Messenger, Facebook) is really hard, challenging, and fun.

I am not sure how strong the "mildly autistic nerd in a ratty t-shirt has never kissed a girl" stereotype is with the latest batch of high-schoolers -- seems to be on the decline -- but do 2 things just in case: don't conform to the stereotype, and don't reference the stereotype while talking to them. Just pretend it doesn't exist...


I think GUI-based programming would be the ideal tool to show students for an hour or two. Nearly instant output and applicable to their day-to-day lives: Myspace, ESPN, ect.

Flex, Applets, the like.


You could ask them to help with usability testing i.e explain the minimum they need to know about a small part of one of your applications, give them some sample input and let them have a go.

Based on their criticisms (and there will be lots) update the GUI/Web App in front of them and explain how the change is then logged into source control. Add their name(s) to the 'checked in by' field etc...

Garth Gilmour

I would also mention the fact that game development is also software development. Mentioning a few popular games might light-up a few eyes. I remember when I was in high school and learned that software engineers made Mario 64. I was hooked. I wanted to make video games. However, I probably wouldn't mention Mario 64 since that was another generation. Todays games like Halo, BioShock, Metal Gear Solid, and Orange Box might sound more appealing. Furthermore, Pixar has done beautiful work in software development.

+2  A: 

Challenge them!

The Euler Project problem board is a great source of challenges. I just found it yesterday, when someone posted it on OS in answer to another question, and it has got me all excited, who has been doing this stuff for many decades.

Take the first problem, perhaps, and encourage them to code the brute force search answer using a couple pf for loops. Then take them through the algebra to the analytical solution, and get them to code that. Which way is better?

Many youngsters may not get excited by this stuff, preferring to play with games as other posts have described. I am going to be elitist and say: those who are not intrigued by Euler Project type problems are never going to be happy or successful as software engineers and it would be cruel to encourage them into the field under false pretenses.

+1  A: 

If they have never programmed before, you could do worse than to show them Alice in one or another of its incarnations. Alice doesn't feel like a programming environment - you actually build a storyboard and tell a story. The story, though, is represented by code. You refine your story by modifying the code - but the GUI makes it easy.

Of course, it is quite limited, but it gets you to think about breaking the problem down into bitesize chunks, and to test and refine your solution in the light of how it currently works.

Bill Michell