All Posts

I came up with this plan of a two week software development internship for 16 year old school student Sidney, who I volunteered to teach the ways of a software developer. Since a lot of coworkers and parents asked me how I structured it, I summarize it here.

You can find the project that Sidney built in these two weeks here:

It's his own take on the game Pong, but with a stronger tennis theme, since he plays tennis competitively.
You can control the paddles via keyboard or touch input and choose between singleplayer mode against an "AI" or multiplayer against your friends. There's even a special item which increases the ball speed for a short amount of time.

I'm quite proud of what he achieved in this short amount of time without having any prior programming experience.

Day 1 to Day 4

Get to know the intern (age, hobbies, potential job interests).

Explain how you ended up working as a software developer and remember to answer questions at any time.

Explain why coding is "cool".

Let's say an alien came, and you're like, "Okay, what's the importance of code?".
I'd say, "Well, you know, we live on this sort of physical earth, and about 50 years ago, a small group of people started building another planet. But it wasn't physical, a virtual planet.
Look around the street. You see all the people walking down the street with their head bent down and staring at their phone? They're actually in that other world. That's what code is. It's the building blocks of that other world.

— Quote from the episode "Coding" on the "Explained" series on Netflix

Today, coders shape literally billions of people's lives.
How they work, shop, eat, date, and chill.
What are you doing right now? You're watching me in a Netflix web browser.
So Netflix itself is code, and it's being run in a web browser that is code,
which is being run on a computer that was designed using code.
It's turtles all the way down, right? Great code is like being the architect of a museum that millions of people think of and go and walk around and use every day.
I think there's nothing like writing code, because it feels like pure creation.
You have an idea for how something should work, and then you try to sit down in front of a computer and make that a reality.

— Another one, same episode

Use your own words too of course ;-)

Get to know the basic concepts of programming by letting the intern do the hour of code https://hourofcode.com/

Figure out together if learning programming by developing games or by developing websites is preferred. This mostly depends if the personal project should be a website or a game and should affect which codeacademy courses the intern should do.

If during the internship you happen to have some meetings that the intern can join, take them along.

Create an account at https://codeacademy.com, no trial needed, and let the intern do the following courses (order matters!):

  1. https://www.codecademy.com/learn/welcome-to-codecademy
  2. https://www.codecademy.com/learn/learn-html (not all parts available in free account, optional if the main project will be a game built with Phaser)
  3. https://www.codecademy.com/learn/learn-how-to-code
  4. https://www.codecademy.com/learn/learn-phaser (It's not necessary to finish this one completely, as it's quite long. Consider stopping around here)

Finally decide on what the final project should be, start making notes, draw some UI stuff, write texts...

This project should be related to some passion of the intern, so that they actually care about it. If their hobbies include photography for example, it might be fun to build a personal portfolio website, like Lukas Meier did during his internship.

Day 5 - 10 Building the project

Setup their computer for building some software, while trying to explain most of the stuff that's happening in a simple manner.

Look for online tutorials (blogs or YouTube) that might fit the project requirements of your intern. This way they can start building their project independently and come to you for questions.

If for example your intern wants to create their own Pong game, let them first follow a YouTube tutorial like this. Once they're done, help them restructure the code as needed, so that they can start implementing their own ideas.

Teach them some simple principles and practices for writing good code like DRY (Don't repeat yourself). Keep the Single Responsibility Principle on function level, you don't necessarily want to get too deep into OOP in the scope of two weeks, this will already improve the code quality a lot.

Here's another cool Phaser project that I built with a coworker to teach kids/teenagers programming:
https://github.com/BastiTee/noodlejump-stackblitz/

Have fun :-)

Published 17 Jan 2020