Introducing Open Source to high school kids 0

Posted by timgoh
on Monday, March 17

I had the chance two weeks ago to give a talk to kids at my alma mater. These aren’t ordinary kids—they’re precocious kids in the Computer Elective Program which means they do C++ in 9th grade1 and PHP+MySQL in 10th grade.

In this post I’ll be outlining the motivation and content of my talk, and also what I’ve learned about talking to that age group, in the hope that other people with a similar opportunity can benefit.

Although it was titled otherwise, my talk was essentially “What I wished someone had told me when I was in high school”. Back then I was pretty much a Microsoft and Borland fanboy due to complete ignorance of open source. I had started with Basic and Pascal and the switch to Windows had really thrown me for a loop. All of a sudden coding had become so much more difficult. Visual Basic 1.0 eased the pain for a while, but ultimately I did not enjoy developing with it.

With just about all apps going the Windows route, I got disillusioned with coding for a while due to the tediousness of the Windows API and stopped for a while. I did use Turbo Pascal to train for algorithm coding competitions but didn’t do any small app development.

If someone had told me about open source back then… gotten me to take up Python or some other high-level dynamic language and mess around with the code of high quality open source projects… I don’t think my coding would have stagnated for that period of time. I just wish someone had told me there was an alternative that would make programming fun, and most importantly, responsive! A teenager does not enjoy the endless boilerplate that was the original Windows 3.0 and 3.1 API.

Since I can’t change my past, I decided to talk to these students and let them know more about open source. The state of OSS presently is much less hostile to newbies than it used to be. There’s easy-to-use distributions like Ubuntu, lots of advances in hardware compatibility, and very viable alternatives to PC software that didn’t exist during my time.

“During my time”. That’s one phrase I consciously avoided during my talk. I’m already more than a decade older than my audience—why separate myself even further? When I was in school, any similar phrase always alienated me from the speaker. It emphasizes the age gap even further. Don’t use that phrase.

Here’s a brief outline of what I talked about. I’m not providing slides because it’d be pretty pointless—a lot of them have just one word or picture. I’m not a run-of-the-mill Powerpoint bullet point abuser!

  • who am i
  • why be a software developer
  • brainteasers
  • why open source
  • fun projects to look at
  • why school projects are unrealistic
  • how to improve your coding skills
  • starting an open source career while still in school

Ok, so here’s my little self-evaluation

What went well:

  • I was able to hold the attention of most of my audience. A couple were sleeping, but everyone else pretty much paid attention. Since my primary goal was simply awareness of open source, I am pretty satisfied with this. A couple of them had even tried Ubuntu already but no one used it as a primary OS.
  • The brainteasers near the beginning of the talk got people thinking, and involved in the subsequent talk. (Get your audience to think through something at the beginning of a talk, and they’ll be more committed to the rest of your session than if you had just kept speaking throughout). I had two “what does this do” type questions – one which was a long series of piped shell commands, and another a Ruby fragment.
  • I managed to emphasize how cool it is to go through the applications and see what’s going on. I did a quick run-through of Amarok and then opened up its code in KDevelop. That was pretty exciting.

What didn’t go so well:

  • I may have been able to hold their attention during the talk, but there hasn’t been much response since then. I deliberately chose not to list any resources. I simply made my e-mail available and told them to contact me with specific requests and interest, so that I could cater my recommendations accordingly. Only 3 people came to talk to me after my session in search of pointers, and I have not heard from anyone since.
  • I did not go into detail about any topic. While time constraint did have something to do with this, in retrospect I think a “let’s code a scraper on the spot right now” would have been more interesting, and I could have just trimmed certain details from other parts of the presentation.

So the final verdict is, I did what I set out to do, but I could have done it better.

I found the entire process very rewarding. I really urge people to give it a shot—it doesn’t have to be the high school you went to. Find a high school with a computer club, and try and arrange to give a talk there. Contributing to Open Source isn’t about coding. Make a small time investment in winning the minds of future coders to Open Source.


1 I highly highly disagree with this curriculum. A language like Python, Ruby, or heck even C# would be much better at teaching concepts. C++ is inferior as a language to be taught because students will have to spend more time on syntax rules than learning algorithms.