Many nowadays programmers and developers started young. In 80s, 90s and early 2000, many got their first computers when they are just around their 10ths year, and they were fascinated by what they can do with it. Many started coding while they are under 15 years old, I was lucky to be one of them so as my brother " A chemical engineer".
In the IT industry, we have very young programmers who accomplished much already, for them everything starts with a good supportive environment and self-challenge to dive into hours of code and try-error to improve till they finish their goal (product, app, script, or game).
Thanks to my father for the computer and the books, the magazines, and of-course the unlimited support as driving me a few times a week to take some courses including programming courses in the early 90s.
At that time we didn't have the internet as you know now, We didn't have a rich set of resources and alternatives or even options but what we have were enough. It improved our skills and later as a doctor and my brother in his practical life.
My father asked me to guide my younger brother who is in high school in his journey with Python while he is at home under the lock-down. My little brother is very good with Linux (Ubuntu), uses Inkscape very well, and he has very good knowledge about Python and Kivy as he was learning it in his school breaks in the past 5 years. However, Now I persuaded him to learn Godot Game-engine and GDScript which he really enjoying them.
In the early 2000s, I learned Python through PloneCMS/ Zope Framework, I didn't learn Python to begin with, I just started hacking my way with PloneCMS reading the code and editing. Over the years I managed to convince several friends to jump into Django Framework with no prior knowledge of Python and the results were promising.
I don't like PHP, but I learned it the same way early 2000s, hacking though several CMS here is a quick list: Xoops, eXoops, PHP-Fusion, Dotclear CMS and of course WordPress.
Why kid should learn to program?
First of all, I consider programming as an ultimate mental and logical sport. It can help people to improve their logic and empower their skills.
But why I recommend it for kids?
- Improve problem-solving skills
- Enhance logical thinking
- Support and improve their Self-challenge
- Learn priorities optimization through practice
- Sharpen their self-discipline
- Enhance their search skills and makes them better Google users
- Better problem identification evaluation
- sharpen their creativity
- Useful brain exercise
- Trust own judgment
Here is what you should do as a parent or a mentor:
- Don't push, put everything in motion
- The child has to trust his own judgment and decision
- Help the child to evaluate himself, the skill he gained
- Teach him to draw "Analyze" the problem [Thank's to my father for this]
- It's a marathon, not a sprint; the kid has to understand the concept of taking it easy.
- Train the kid to avoid self-destructive words "I can not, it's difficult, it's impossible"
- If someone did it, so he can do it.
- Teach him to read simple flowcharts
My wife is an IT Teacher at a public school and I am not convinced by their method to educate their students nor the tools they are using and recommended by the ministry of education, It's like the system was designed by non-programmers who have no experience what so ever and will only succeed driving kids away from learning programming.
What's my method for teaching a young new comer?
It's simple; "learn thru building products through productive tools", don't wait till you finish basic books or tutorials, just dive to the code. To achieve that you need to pick up a tool, a framework, an engine or even library build with this language and start playing around it.
Learning through fun = No Stress
Stress cripples the creative process, with more stress the kid gets he loses the interest soon he will challenge his stress, not his creative side which will conflict with his self-confidence and sense of achievement. So I recommend the education has to match the child's own pace.
There is no shame in copying and pasting as long the kid is collecting new skills and enhancing old ones.
Self-evaluation every week is important, I totally recommend the parent or the mentor to help the kid to perform their self-evaluation every major step taken. (I have my father to thank for that).
I believe kids should learn through making visual products like creating 2D games, visual products/ effects, interactive stories. Later they can shift to whatever they want like mobile development or web-development, or even another language or framework.
Your duty as a mentor/ parent is to guide them through the first step, watch them creating their first products and they will continue on their own.
I have recommended many tools and tutorials over the years for kids (friends and family) to learn programming and many kids are really doing well. So here in this article, I will list my top recommendations. My friend Zeno Davtaz encouraged me to write this article, so I own him my thanks.
Best 10 Programming experience for kids:
When it comes to fun with programming, Processing is the best recommendation. Processing is an open-source IDE and graphic library aimed for artists and creating new digital interactive art. It comes with dozens of examples, tutorials, and libraries.
Processing is created by a data visualization genius (Benjamin "Ben" Fry) and an amazing artist (Casey Reas) and a programmer as well. It fills the gap between coding and visualization mixing it with fun. Many developers were amused by it, including me of course, I have to install it on every machine I work on and every system (Linux, macOS), mainly to play and create visual animated stuff.
It's fun to write several lines of code and convert it into an art. Processing made it possible but with easy installation and simple user-interface for kids to grasp.
With Processing, the kids can easily share their projects and show their projects to their family, teachers, and friends.
The best educational source is The Coding Train; A YouTube channel created by (Daniel Shiffman), a programmer, a teacher, and an art professor. His videos are my first recommendation for learning Processing.
- Simple IDE
- Many tutorials and examples
- Click to play (run the code)
- Helps to learn the fundamentals of programming
- Create fun and visual products
- Java is used widely by enterprise
Processing learning Resources
- Processing official tutorials: Rich tutorial-set with hands-on examples.
- Processing video tutorials by The Coding Train (Daniel Shiffman).
Python is a friendly yet powerful programming language that is used by professionals and tech industry giants around the world, like Google, Facebook, Instagram, Netflix and more.
As a general-purpose programming language, Python can be used to create desktop applications, web application and even mobile apps. It can be also used create games and that will build the interest for the kids to learn it.
- Python is a powerful language
- Used for serious projects
- Used widely for scientific domain
- Preferable for most of data scientists and data engineers
- Plenty of frameworks, dozens of communities worldwide.
Here is my top recommendation for learning Python thru libraries:
Kivy is an open-source GUI "Graphical User-Interface" framework for Python. It can be used to create desktop applications for Linux, Windows, and macOS, It also can be used to create Android and iOS applications because of its smooth performance on mobile.
Kivy has an impressive gallery of applications and projects, I believe kids will like the idea that they are using something that creates powerful real-world enterprise-class application.
There are dozens of video tutorials for Kivy on YouTube here are some of I usually recommend: Tech With Tim.
Ren'Py is a novel and creative story engine that helps the user to create their interactive media-rich stories for desktop and mobile (iOS/ Android). It also works very well for Web as well as all major systems: Windows, Linux and macOS. You may also wanna look at this PyGame YouTube series.
Ren'Py uses Python-based simple scripting language, it's very easy to learn and delightful to create interactive stories with it. It supports multiple formats, contains many tools and options for the user to create a fully functional interactive story application or a simple game. Though, It's not actual programming but scripting with Ren'Py is fun and useful as the first step.
Here is a quick video about some of PyGame projects on 2019:
LOVE [for the love of Lua]
For years I recommended LOVE as a game engine for many young students not just because it's cool but because it uses Lua which is my favorite scripting language.
Learning programming through creating simple 2D games and see how it works is my favorite method.
LOVE is a 2D game and physics engine for building 2D games. It's built with C++ but uses Lua as a scripting language.
Lua is very cool and easy to learn especially for kids. It's also very powerful and is often used in game development industries. In the past few years we have seen Lua communities release several web frameworks as well which means a new horizon for Lua developers.
I believe learning Lua is a good start to dive into other programming languages, but it'll be more fun when learning while creating games.
- Simple yet powerful foundation for programming
- Create experimental projects
- Built-in graphics and physics
- Lua is widely used especially in game development
Other options with Lua
If you are planning to recommend Lua to a kid/ teen you can point it's used widely in many free and open-source game-engines like:
- Easy to use
- Runs everywhere
- Builds desktop, web apps, mobile apps, and games
- Starting point to move to other programming languages
- Phaser: 2D Game Engine with JS
- MelonJS: Simple yet powerful 2D game engine/ framework
Red is a cool programming language created by "Nenad Rakocevic", An easy to learn, master and make products with it. It's not common and may have few sources to learn from, but it'll improve the new programmer's skills especially as they pick up it quickly.
Windows and macOS are supported especially for creating desktop GUI applications. It's easy to build and create an executable package for both Windows and macOS with one command-line.
Red may be short on tutorials, documentation, and examples, but it's easy to pick up even for kids. Despite the lake of the resources either for Red and Rebol languages there are some cool resources to start from (Check Red Language resources blew)
- Easy to learn
- Fun to play with
- Built-in GUI support for Windows and macOS (No Linux Support)
- Easy to distribute executable applications
- Mycode4fun: An amazing resource for learning Red by examples
- Writing GUI apps using the Red Programming Language - link.
- Cross Platform App Development with Rebol 3 Saphir - link.
Why I don't recommend Scratch or Blockly?
Where I am they teach Scratch at the school, My wife is an information technology teacher and has been teaching Scratch for years, I always have a problem to ease everything for kids or even newcomers. What they actually do is they add a new layer in the educational process for kids, that's why where I am right now we don't have much kid who are fascinated with coding as in my old country.
Why I do believe Scratch and Blockly are a huge waste of time?
1- The kid should learn how to write the code himself
2- That time waste for drag-drop blocks can be used in learning a real programming language
3- Create bad programming habits.
4- Missing good opportunities for kids to learn how to search for solutions and code snippets, which they can achieve while learning a real programming language.
5- Most importantly the kids will be shielded from real production-ready examples, best practice as well as real-world problems and solutions.
I have several thoughts about teaching programming and coding for kids, but I tried to make this article simple as possible hoping it'll be useful for parents, mentors, and kids, I will keep my other thoughts to another article later.
Related ServicesSometimes young people need assistance in different programming languages. They can safely pay someone who is a real expert in programming. Assignment Core is an established coding homework service committed to do top-quality programming assignments from scratch.
- Header image by "Todd-trapani" and by Pixabay from Pexels.