Learning Code From My 7 Year Old Son

OK, I’ll admit, the title of this post is a bit confusing. How does a 7-year-old teach a guy in his 30’s how to code? Well, he didn’t really. I was teaching him, but it was through the process of teaching him that it taught me a few important lessons. Hopefully, these lessons can help others even if you’ve been coding for years.

Teach your kid to code!

You don’t need to be a developer to do this, but seriously teach your kids how to code. It is a great problem-solving skill to give your kids, and I’ve found it to be a pretty awesome way to bond with my son.

A few of the services discussed are Scratch, Scratch Jr., Algobrix, and CodeSpells. I’m sure there are plenty of other great services though. Feel free to share others in the comments.

What does teaching a 7-year-old have to do with me?

My son has been using Scratch (mentioned earlier) a lot over the last few months. If you’re unfamiliar with Scratch, it is an easy to understand interface for creating interactive art, stories, simulations, and games.

Here’s an overview video from Scratch:

Every time my son would finish making a game he would want me to share it with his grandparents. Actually, he wanted me to share it with everyone we knew, but I had to scale him back a bit 🙂

What I ended up doing was creating a WordPress site for him to be able to share links to his games. That way he can tell the grandparents to go to his site and there would be a list of all the games he’s shared. He won’t have to ask me to send links for Every. Single. Game.

Creating his own website

Prior to having his own website, he only knew that websites were things you found on the computer. He had no concept of what domain names were, what hosting was for, or anything. We’re talking an extremely basic understanding.

I decided to have him sit with me and watch the whole process. He got to see how you get a domain name, and how it gets pointed to the right place (DNS). While he still doesn’t understand the whole inner workings of it, he knows what a domain name is and that websites don’t just magically appear on the computer. Good enough for now.

The theme I chose to use on his site had widget areas on the home page, which is where he wanted the links. This provided us with, what I thought was an easy way, to have him insert links to his games. The standard HTML widget is fairly intuitive, and I though it would work just fine.

I soon found that anytime he wanted to add a new link he’d ask me to do it. It was difficult for him to remember to click on Appearance (we’re not worried about appearance, this is information), then Widgets (what the hell is a widget?). Even harder was finding the correct widget area to edit. This theme had 8 different widget areas. 🙁

Eventually, he stopped asking – he was getting frustrated with what I thought was a simple task.

Stretching my developer skills

This made me think about ways to make the whole process even easier for him.

I ended up creating a plugin just for the purpose of easily adding links to be output in a widget. When I sat down to do this, I had a few objectives:

The back end editor must be accessible on the main dashboard.

When using the HTML widget, I had to remind him which link(s) to click to edit a widget every time. If the editor is on the dashboard, he won’t need to go anywhere else. No navigation other than logging in.

There couldn’t be any confusing settings.

Even clicking the Insert/Edit link button in the HTML widget was confusing (he said the button looked like a fidget spinner).

It shouldn’t require selecting text to insert a link.

Inevitably, he’d select half of the words and get frustrated that it didn’t work the way he wanted it to.

He needed to be able to edit the link text and URL easily.

He needed to be able to delete links easily.

The editor needed to be “hidden” by default so he didn’t accidentally delete something.

What I ended up with

The plugin I created made a new widget with one setting – a title. Once this title was set, no one would need to touch anything in the Appearance > Widgets settings again.

The plugin also created an admin dashboard widget where he could enter in links to his games.

I removed all of the other dashboard widgets from his site’s dashboard (At a Glance, Activity, Quick Draft, WordPress Events & News, etc.) When he logs in, the only thing he sees is a dashboard widget with his games.

Now, whenever he enters a link to one of his games in the box, it will show up on his site’s homepage in the new widget.

What I learned

As someone who works with WordPress every day, it’s easy to forget that there are people who don’t know how to do what I may find to be simple.

If this were my website, and I was adding links, the standard HTML widget would be just fine. But this isn’t my site, and the end user (my son) doesn’t have years of knowledge to rely on.

Now when I work on anything that gets released to the general public, I need to challenge myself to “dumb down” how things work. I’m not saying that users are dumb. I’m acknowledging that I shouldn’t make them go through extra steps to accomplish simple tasks.

This is going to take a conscious effort on my part to get right. It’s too easy to assume that everyone who uses WordPress knows everything that I know. It’s harder to make something work for everyone no matter their skill level.That’s what I’m going to strive for in the future.