Dear Lifehacker, My daughter is in Year 7 and really enjoying learning coding at school. She has been using “scratch” to learn the basics. (My programming experience is pretty much limited to copying basic programs out of magazines into a Vic20 30 years ago.) We would like to spend some time together over the holidays learning a “real language”. What language would you recommend? And is there an online course you could suggest we work through? Thanks in advance, Matt
Coding picture from Shutterstock
Dear Matt,
If you’re looking to get her started on a full programming language, Python is a pretty good bet. It’s clean, versatile and relatively easy to understand. Plus, it remains one of the most popular and widely-used scripting languages, which means she will be learning a highly-employable skill.
Crucially, this language is also open source and free to use, even for commercial applications. Python is often referred to as a scripting language, allowing programmers to churn out large quantities of easily readable and functional code in short periods of time. However, it also supports object-oriented programming styles if that’s more your daughter’s bag.
Python has been positioned by the dev community as a teaching language, so there are numerous learning tools available to help first-time coders. Free online training sites like Codecademy and other Hour of Code participants will help to get her started. These sites provide a range of app-creation tutorials that double as an introduction to the basics of programming. You can also find a swathe of beginner-friendly resources at the coding curator site Bento.
If you’re willing to spend some dosh, Invent With Python is another valuable resource: it collects hundreds of educational ebooks about the language. (Start with Python for Kids: A Playful Introduction to Programming.) Prices range from $1 to more than $150.
You can pick up some additional tips via our in-depth guide to kids and coding. Once you’ve both got started, be sure to keep this Python Cheat Sheet on hand; it’s a one-page reference sheet of variables, methods and formatting options for working with lists, files and strings. Good luck!
We’re also going to throw this one over to programmer readers: what language would you recommend to an aspiring teenage coder? Share your suggestions in the comments section below.
Cheers
Lifehacker
Got your own question you want to put to Lifehacker? Send it using our [contact text=”contact form”].
Comments
13 responses to “Ask LH: What Is The Best Programming Language For Young Teens?”
For this, I would recommend Visual Basic for Applications in Excel. VBA is in demand far more than Python.
Plus spreadsheeting is a really useful skill.
I’m fairly sure that exposing a year 7 kid to VBA constitutes child abuse.
I 100% agree with this comment
My experience – admittedly, more as a document specialist than as a developer – is that most employers don’t even know VBA exists, let alone know that they need it.
At best they think a macro is just something you record and play back later, hoping the exact same steps don’t crap out when something changes.
Many thanks Chris. My daughter bet me you would suggest Python, so I guess she is on the right track with her thinking. I am looking forward to exploring the resources you have suggested, and the suggestions by your readers. I am pleased she is getting into this area and enjoying it so much, hopefully she can maintain her enthusiasm. Keep up the good work at lifehacker. Matt
Before considering any dogma RE: which is the best programming language, consider this: what’s going to keep your child engaged? While the suggestion of VBA ticks the “highly employable” box (and assuming VBA automation is even a thing when said child enters the workforce) just as many other options would, they would be moot if the teen (tween? young-adult?) looses interest.
If you’re able to identify an interest the person is really keen on, and there happens to be some kind of “decompose a design into instructions you give to a computer” element that naturally occurs around that interest (e.g. mods for Minecraft) go with that.
Although if the interest is “I want to make games” then just about any language is good given a decent set of educational materials. I remember as a kid this is what I wanted to do and I had the good fortune of having some killer books of “how to make games in basic”. It was a a game changer (geddit?).
But for adult neophyte developers, I’d say javascript. You can do some impressively looking stuff (jquery animations) with minimal effort to get the reward feedback loop firing. Then later you can dig deep and get into js on the back end (node, meteor).
I was going to say javascript for the same reason.
Not that I have any experience with it, but Swift might also be good, due to the whole Playground thing, or if you’re not an Apple person, IBM’s new sandbox thingy online: http://www.lifehacker.com.au/2015/12/play-with-apples-open-source-programming-language-in-your-browser-with-ibm-swift-sandbox/
Realistically, the key is to learn multiple languages, compare and contrast and learn the principals that will be transferrable between all. But I suppose that doesn’t answer the question of which language to start with.
It’s tempting to suggest a scripting language like Python, but in my experience if you teach young people a simple easy to use language like Python or Ruby, then try to move them to a less expressive language, you start to have conversations that go like “Why do I have to type this every time?” “Because this language has static typing” “No, you can’t do that, strings aren’t mutable” “This is stupid” and there is a chance they’ll lose interest. I now think that maybe you should get an arduino and teach them some C first to make it do stuff, then show them a scripting language.
I’d like to agree with the author and throw my vote behind python.
Python is being brought in more and more as a preferred language for education use due to the ease of reading/understanding, the large amount of built-in functionality and the exceptionally strong and supporting community online.
These days it’s a lot more than a scripting language, it’s being used large amounts of professional programming;
* Large portions of the modern web are written & hosted on python (django, flask etc)
* It’s being used in scientific institutions worldwide for data anaylsis
* I’m building medical instruments with it ( for a multinational company )
As such it’s a fantastic language to learn for your future resume!
My second vote would be for javascript, it’s used for essentially every website out there, and as such is incredibly valuable (particularly in conjunction with python) if there’s any interest in getting into web design.
ps. no-one at my work does any client work in VBA, and we’re a large award winning contract engineering firm.
I can’t comment on which is best, but for resources try: http://www.freecodecamp.com/ and https://www.codecademy.com for a “course” in coding all different types of things. From HTML/CSS/Javascript to Ruby on the Rails, SQL, Python etc. The first one in particular has aims to having you end up making apps for charity as you learn but the second (scroll down for the languages) has a lot of content too.
Thank you all for your thoughts and suggestions, they have been very useful. Dan, she already has got me interested again. C, thanks for the tip about the Arduino, looking into that too. Astrogirl, the freecodecamp site looks interesting. Thanks again all. Matt
Whichever language you decide on, she should also learn (and understand) the general concepts outside that language. This assumes she’s also interested in the problem solving aspects of software development, which is a safe bet if she’s already asking about “real” programming.
i.e.
Learn about data types and why they’re useful/important
vs.
Copy n’ paste Dim myVar
Learn about loops and conditional statements
vs.
Copy n’ paste for (i = 0; i < 10; i++)
Learn about the use of objects and data encapsulation
vs.
Copy n’ paste
public class Pet
{
public string name;
}
etc.
Any decent learning resource will explain the syntax in conceptual terms anyway, but learning the theory will make it much easier to learn additional languages in the future because you only have to learn the syntax for that language to get started.
==
Also, I’d not heard of Scratch but at a glance it seems to be a modern equivalent of Logo which I was taught in year 7. It looks a long way removed from a fully featured programming environment, so be wary of taking on too much, too soon or your daughter may find it too confusing and lose interest. Work on one small, discrete project at a time – small puzzle games may work well here – and only after completing each one, move on to a slightly more complex project that introduces something new.
I had a look at Swift the other day and was very pleasantly surprised. Its not often that a new language is crafted from the ground up and it seems Apple have done a good job here. Its now open-source and IBM have immediately ported it to run in their cloud so you can build Swift applications in the cloud without having to figure out how to make it run on your server(s). It won’t be long before someone ports Swift to Linux and perhaps even Microsoft Server or Azure.
Swift is attractive for young people because it takes a lot of the pain away. I learned to program on the now very ancient RPG-II which was not a 4GL but it did most of the laborious work, including opening files, nullifying variables and managing printouts (in those days we used continuous paper with sprocket holes and serrated pages) – you just spat data at the printer and RPG-II managed your headings, footings, page numbers and page skips. It evolved into a very nice language on the Wang VS – by far the best machine to develop on its day (80’s).
The move to PCs was a forward move in many ways, but a horribly backward move in programming complexity. Swift takes the RPG-II approach, though of course it looks nothing like its ancient uncle.
And Swift works on iOS as well as the Mac – and its a proper language, not a scripting tool. Kids today with iPhones and iPads can build simple and complex apps in a very friendly environment – and they can try them out on their own gear.
I am almost tempted to try my ancient hand at programming again…