What coding language should my kid start with?

There are a ton of programming languages out there, and many claim to be built specifically for beginners. This tool will help you sort through the major ones and find an appropriate starting language for your kid. We assume that kids will be learning with an adult as a guide.

We're confident in our recommendations, but they won't apply to every student. You might need to adjust your kid's age slightly up or down depending on how he or she reacts to a recommended language.

Less than 4 years old? We recommend starting off with fundamental quantitative skills like counting, sorting and pattern matching.

Most four- to five-year-olds are able to follow two or three part commands. This understanding is essential for learning how to program since programming is just a series of commands that we give a computer. Keeping these commands as concrete and physical as possible will help learners focus on the commands themselves as opposed to getting caught up in the grammar of a new language. Languages that significantly limit the programming options for students will let them focus on creating independently without too much support.

By age six, most kids enter middle-childhood. Formal schooling in a range of cultures begins around this time and researchers believe that key thinking skills develop during this transition. Most kids also enter this period very confident that they can master a wide range of activities, despite repeated failures. This resilience can be harnessed to keep motivation high as students learn completely new skill sets. We believe that it's critical for kids to feel that they are good at programming during this phase since it sets the groundwork for their self-image as they move into adolescence and early adulthood. Bad experiences with technology during this period can get kids to think that they're not 'tech people', leading them to avoid technical challenges as they grow older. As a result, we focus on languages that are easily accessible and will quickly give kids a sense of competence and autonomy. Positive experiences in this age range will pay huge dividends down the line.

As kids move into adolescence they become very focused on developing a sense of independence and autonomy. Like in middle-childhood, competence is also central to well-being. However, by this time kids have a much lower sense of their abilities than they did at the beginning of middle-childhood, which can lead even high-achievers to avoid certain subjects or difficult tasks that challenge their sense of competence. It's critical that students at this age view failure not as a reflection of innate competence but subject to improvement with deliberate practice. Incremental success can be very helpful in building this growth mindset, so we believe that even adolescents need initial experiences with programming that provide a genuine feeling of both growth and competence by gradually increasing in complexity.

Nonetheless, early adolescents can increasingly think abstractly and consider multiple dimensions of a problem, which are necessary skills for working with text-based programming languages. This means they can start exploring complex technologies, like physical computing and app development, that can only be fully built with text-based languages. While they're not quite ready to work with problems at an adult level, early adolescents can be eased into professional coding languages depending on their interests and the projects they want to create.

Try Scratch Jr.

It's a tablet app that focuses on simple commands and visual storytelling. Although the creators recommend using the program with ages five and up, we've seen it used successfully with four-year-olds as well.

Try the Code and Go Robot Mouse

It's a toy can be programmed with physical buttons. The coding 'language' just consists of five buttons: forward, back, turn left, turn right and 'special', which causes the mouse to do something interesting like light up or make sounds. The robot mouse's simple interface makes it super easy for kids to start programming right away.

Try Scratch

It's a fantastic langauge build by MIT researchers specifically for beginners. Scratch is a visual language that works like LEGOs - you can create programs by connecting blocks of instructions together. It can be used for most multimedia projects, including games, animations, storytelling, quizzes and more. While Scratch is promoted for its accessibility, relatively complex projects have been created using this language.

Try HTML and CSS

HTML and CSS are the building blocks of the web. They're underneath every website on the internet. Learners who are interested aspects of design like color, layout and typography, will be able to showcase their ideas to the world using HTML and CSS.

Try Unity

While we still think Scratch is a great introductory multimedia langauge for all age groups, students that are looking to create something more polished can do so with Unity. It's a professional game development environment that uses either the C# or Javascript programming languge to create 2D and 3D games. Unity is more involved than other systems like Scratch or Construct, but with some patience and effort learners can create really slick looking projects.

Try LEGO Mindstorms

The Mindstorms Kit features familiar LEGO pieces along with sensors, motors and a small computer that can be programmed. The block-based Mindstorms language covers most fundamental programming concepts. If your kids don't like the language, you can always use a an extension to program with Scratch! In addition to programming skills, your kid will be able to explore physics and mechanical engineering concepts.

Try Minecraft Modding

Minecraft modding lets your kid modify Minecraft by imagining and creating their own features like new kinds of blocks, abilities or creatures. It requires coding in the Java programming language, but also incorporates other skills such as navigating complex folder structures and creating pixel artwork. Younger students should be guided more towards artwork creation and adjusting values in pre-created code, while older students should gradually get introduced to text-based programming fundamentals needed for more complex features. Both younger and older learners would benefit from having an experienced programmer set up the modding environment and create a 'skeleton' mod to use as a starting point.

Try Raspberry Pi

Raspberry Pi is one of the cornerstone technologies of the Maker Movement, a DIY community of tech enthusiasts. The Raspberry Pi lets learners combine the Python programming language, circuits and sensors to create all sorts of amazing projects, from a quadcopters to electronic art displays! Projects can range from simple to extremely complex.

Try Ruby-on-Rails

Ruby-on-Rails is one of the most popular frameworks for building web applications to solve real-world problems. Rails applications use the Ruby programming language, as well as web fundamentals like HTML, CSS and Javascript. Many massive web apps have been built in Rails, including Twitter, Groupon and Hulu. Even if your kid is interested in building iOS or Android applications, Ruby-on-Rails is the most painless framework for learning the fundamentals of app development. Learners who build a foundation with Rails can easily move on to more difficult languages and frameworks afterward.