How to Get Good at Coding, Stay Motivated, and More with James Whelton
A 2021 online survey of 500 parents in Japan revealed that 46.8% of the demographic sample were providing opportunities for their children to learn programming outside of school.
Growing interest in programming is good news for Japan, which fell by 4 placements in 2020’s digital competitiveness rankings. Additionally, according to Doda’s midyear job market report, IT and communications had the largest jobs-to-application ratio by industry (5.53 to 1), reaffirming Japan’s well-established need for programmers and technicians.
Amid demand and rising interest, what obstacles to learning do young coders face here in Japan?
With us today is James Whelton, TokyoMate’s Chief Technology Officer, who is also co-founder of CoderDojo, a network of free computer clubs for children, where kids and teens can visit a Dojo and learn to code, build a website, create an app or a game in an informal, creative, and social environment.
These classrooms are led by volunteers and are 100% free—with approx. 233 Dojos in Japan, too.
We talked with Whelton about how he got started, the struggles that young Japanese coders face, tips for how to get good and stay motivated, the best programming advice he’s ever received, and more!
Q: What prompted your desire to learn to code? Tell us your origin story.
WHELTON: I was about 9 when I started making small animations using the Microsoft Paint program to draw pictures and then animating them with Windows Movie Maker to make short animations.
Since I was 9, this would’ve been 2001, maybe? I wanted to show people in school these animations. Naturally, the next step was making a website to put these online. I saved up pocket money and bought a book called HTML for Dummies, and I just worked on that book to make little websites.
It was like magic—the ability to create something, to code a website, and to be able to put it online and have anybody in the world see it, be it my hometown or Japan. Although I don’t think anyone in Japan was looking at my 9-year-old website.
I got addicted to the process of creating and building things, and I kind of continued that into making more websites and apps all throughout my teenage years. To be honest, I wasn’t particularly good. It maybe took me 6 weeks to get an image to show up on the page.
Q: Where did you go for answers? Or was there someone around who taught you?
WHELTON: I was mostly working out of books. When I was that age, we didn’t have broadband or anything. It was all dial-up Internet. Eventually, as a teenager, I moved to chatrooms, forum boards, and reading and following tutorials online. Maybe when I was like 13, 14, I started finding other programmers.
I was very frustrated that there was nowhere to learn and that I had to self-teach all throughout my childhood.
Both my parents weren’t programmers. They were dentists. So they didn’t know what was going on—that I was making computer games. My dad tried to limit my computer time throughout high school, which just made me use computers at school during lunch breaks.
As I got older, I started using the Internet to self-teach, read forum boards and blogs, and follow tutorials. And then also just hack stuff and see how it was made and put together.
Q: Your origin story sounds a lot like how my 11-year-old nephew got into coding, too, because he started out wanting to do animations. Is this a common way people progress into learning to code?
WHELTON: Yeah, I think there seem to be two ways that it happens.
For a lot of people, coding is a means to an end. They get into it because they want to build a game, or they want to hack a game to get free gems, or whatever the thing is. Or they want to produce something, and the road to producing that “something” is coding. And in that process, they discover the magic of coding and creation. So that’s the first way.
The second way is sometimes people stumble upon it. With older computers, say the Commodore 64, it came with a book on how to program it. You physically had to program it to use it.
That doesn’t happen as much anymore because when you buy a computer or an iPhone or tablet, it doesn’t come with a book on how to program it. A lot of these developer tools and things that used to be on the older generations on computers—you find they’ve all been kind of—I don’t know if I’m articulating this the best, but the rough edges of computers are often sanded away. And you don’t really have to know how to program to do things.
I suppose the correct answer is, at present, for most people, getting into programming is a means to an end to create something. Or they get introduced to it through a coding camp or a coding club.
Q: From your perspective, what are some challenges faced by those learning to code in Japan?
WHELTON: As a non-Japanese person speaking his opinion on the challenges to those learning to code in Japan: I think the biggest challenge is most programming languages used are English-based. We use the Latin character set. So it’s kind of like two challenges for a young person. It’s (1) getting a good command of English and being familiar with the Latin character set and then on top of that (2) learning the programming language.
A good thing that helps deal with that challenge is a programming language or a visual programming language called Scratch, which is like the LEGO of programming where you drive blocks together—and it has been localized into Japanese.
Scratch teaches some of the key aspects of programming around logic. Concepts such as “if this, then that,” and so on. And that removes a big hurdle to programming. And then next, if you’re comfortable with English, or the Latin character set, using that to make websites, is one.
But that’s probably the biggest hurdle—[young Japanese coders are] learning not just programming but an entirely new character set and part of the English language.
However, at the same time, one of the most famous programming languages in the world came from Japan, Ruby, which is used by Twitter, Shopify, Stripe—all these huge companies. And so, despite the fact that there are challenges getting started in Japanese, some of the incredibly important coding projects or programming languages have come from Japan.
Q: Wow, I didn’t know that about Ruby. I’ve heard of it, of course, as a coding language, but I didn’t know it was developed in Japan.
WHELTON: TokyoMate uses Ruby, actually. Yukihiro Matsumoto was the chief designer of Ruby. It’s actually a fun language because its whole mantra is focusing on programmer happiness.
Q: What advice would you give to parents who want to teach their kids to code? Or, maybe I should instead rephrase that to, what advice do you wish someone had given your parents?
WHELTON: Well, my parents actively tried to prevent me [from learning to code] because they thought I was playing computer games. It was only until maybe I was 16 that we actually had broadband, or whatever the high-speed Internet was at the time. But I think most young people don’t learn to program for the sake of programming.
From what I’ve seen, if you throw a programming book at a child—metaphorically, of course not physically—the child will get bored because they’d think, what’s the point of learning programming?
The first key piece of advice would be to make it fun. And that’s by making it project-oriented; it’s about making it colorful and interactive. For example, if you want to teach your child how to make a website, then make a website around something they are passionate about. That can be a sport, that can be Minecraft, that can be their favorite TV show or something.
Making it fun is key, and then how you make it fun is being project-oriented. Secondly, programming is a unique endeavor, but it’s something that you can do together. You can buy a book on, let’s say, making hardware or making a game and work through that book together, which I have seen many parents do. Or you can go to a club and have your kid learn alongside other kids.
Programming clubs are still a relatively new phenomenon. There are not necessarily programming clubs in every town or city, or there could be a capacity. But I’ve seen many parents teach their kids by taking a project and working on it together and learning together. And in CoderDojos, we’ve seen parents and children sit side by side and work together and learn at the same rate and at the same time.
Q: That must feel like such a moment to witness. Do you still go to those CoderDojos and participate or mentor?
WHELTON: I do. However, I’ve moved around a lot, so I don’t have one that I regularly attend anymore. I think also, given Covid, most of them have been online. But for years, when we first began, in addition to running CoderDojo at my local CoderDojo that I went to, I would drop into different clubs. Or in whatever country I’m in, I’d go visit a club or something and hang out.
So, yeah, it’s quite nice to observe. In some instances, the parents prevent the child from doing anything because they get so into it themselves, and they take over.
Q: Any advice for my nephew, who is learning to code?
WHELTON: Number one is to have fun. I can’t really think of any other good reason to learn coding other than to have fun and enjoy it.
And you get good at coding by building different things and exploring different languages and tools. Also, again, being project-oriented is the best way to be motivated.
For example, if it’s a game you want to build, a website, or an app, always have a clear goal in mind of what you want to build. Then learning to program or learning different tools is a means to reach that end. It’s how you stay good and get motivated.
You also improve by following tutorials online to build apps and games, searching common processes or opportunities to tweak, and reading other people’s code on open-source websites like GitHub.
But I think the number one method for me was I never picked up a programming language book for the sake of it. I always had a project in mind that I wanted to build.
And of course, it can get overwhelming and frustrating at times because there are so many ways you can program something, or you could always make it a bit better. I’ve always focused on just achieving what I want to achieve and doing whatever works to get it done first. And not getting too worried or frustrated about all the different ways I could program it or if the code is good or not. That can come later.
Q: My nephew also wants to know, “What is the easiest coding language that isn’t HTML?” But maybe let’s change that to what was easiest for you to learn?
WHELTON: So I did start with HTML, and I do think starting with HTML is good because it introduces you to writing code and seeing something happen after you do it. But then, from HTML, I typically like to go to Java Script or Ruby—more dynamic languages. It depends on what you want to do.
I think it’s not necessarily the case of what’s easiest, but it’s the progression or what’s the next step after HTML.
Q: Most helpful programming advice ever given to you?
WHELTON: There’s been a lot of useful ones. But I was talking to somebody recently, and the advice was, “Do the thing that works until it doesn’t.”
There’s this idea in programming, premature optimization, which is when you’re trying to solve problems before you have them. You prematurely spend all this time and effort and energy optimizing for a problem you don’t yet have, or won’t have for a year, or three years, or something.
At the same time, it’s easy to get concerned because when you’re building something, you wonder, “Is this the best solution? What happens when this breaks, or when we have more people using this? Is it going to crash?” But then you can waste a lot of time and energy trying to solve a problem you might never face.
So, doing the thing that works until it doesn’t is probably one of the best bits of advice I’ve received.
I personally used to have a lot of imposter syndrome around programming. I used to be worried that my code wasn’t good or that it could be better. Or I would wonder if I did the proper thing. It might look right to me—but is this actually what other people do? But at the same time, it always worked, so... “Do the thing that works until it doesn’t.”
Q: That’s really fantastic. It can almost apply to any field or any career!
WHELTON: Hopefully not medicine, though.
Q: Yeah. (Laughs.) Not medicine. Have you ever made any large programming errors, and how do you deal with that in your line of work?
WHELTON: I used to be CTO of quite a large online supermarket in the Middle East. And we had this big sale, where I accidentally ruined the delivery details for 400 orders about 3 hours before they were supposed to go out for delivery. Everybody is going to make mistakes. It’s how much you limit the damage to the mistake you’ve made.
Q: And how do you do that? How do you limit the damage in programming?
WHELTON: You put checks and balances into place. For example, you make it difficult to make mistakes. A common thing I’ve heard is people thinking they’re working on the test database, but it’s actually the live database, and then deleting that.
There are simple rules that you have around never working on the live database. Always work on the prediction copy. Or disabling the ability to delete something by accident.
You have to make it very difficult to do stupid things. That’s what I try to do. I try to make it very difficult for me to do stupid things.
Q: I love that. OK, we’re nearing the end here… What questions have I not asked that I should have?
WHELTON: One thing I’d like to mention is that it’s OK for young people to hate programming. A very important aspect of CoderDojo is that young people can find out if it’s for them or not.
Ireland—at least when I was studying—had a 50% dropout/failure rate from computer science university. A lot of people going into it didn’t know what it was or didn’t like it, or maybe it didn’t resonate with them.
I’ve seen cases where young people have come to a coding club, maybe age 9 or 10, and they have had no interest, and maybe 3 or 4 years later they come back when they are a bit older, and they do have more interest in building a website or a game.
The important thing in teaching programming isn’t necessarily the language itself, but it’s the soft skills around it. In CoderDojo, we focus a lot on self-led learning and peer-led learning.
Typically, one of the most important things in modern programming is the ability to self-teach. It’s the ability to read documentation, to Google for answers, to have a problem and know when it’s best to use an authentication library or a code library for it rather than reinvent the wheel.
Self-teaching is an incredibly important skill. In CoderDojo, when a young person comes in, we maybe show them how to get started—for instance, how to put the first few things on the website, some text, an image. But when they want to, let’s say, change the color of the webpage, the background color, we guide them through the process of Googling for that answer and Googling for that solution, and self-learning or self-discovering.
Ultimately, it goes from teaching a young person how to code to teaching them how to self-teach and how to lead their own learning. And that’s an incredibly important skill in modern programming.
About TokyoMate’s suite of services
Your essential Japanese business needs provided by TokyoMate, a comprehensive solution trusted by the foreign executive and startup community in Tokyo.
Get a virtual office address, a Tokyo-area phone number, your Japanese mail handled, and native Japanese bilingual business assistants, plus a no-risk 30-day moneyback guarantee with each of our pricing plans.