Why we should teach kids actual programming, not Scratch, Alice and other intro “languages”.
Addendum: This is my first public post on this subject and if there is any interest, I will continue this series with how you should introduce and keep kids interested in programming/computer science. I hope that my first-hand account (of seeing things from the other side) will provide a useful viewpoint.
Let me preface this by saying that I’m just a high school senior who has a passion for programming. Unfortunately, that passion was strained. I took a computer science class in my school and we didn’t start with Python or JavaScript, but rather Alice.
Alice is a visual programming environment where you drag if-statements and and-statements etc. This system is similar to other learning environments like MIT’s Scratch. Unfortunately, there are multiple problems with these types of environments.
Firstly, they don’t show what “real” programming is like. I’m not proposing that we thrust every beginner into manual memory management, but it almost seems dishonest that we are an unrealistic view of programming. The rebuttal to this is that it is easier to start with. This falsehood leads me to my next point.
These supposed “easy” to learn languages are anything but. Look at the GUI posted above. Is that easier than a Python REPL with “print(“Hello World”)”. you have to teach kids so many different ideas, assuming they are completely new to programming. It might be obvious that Alice is written in Java stemming from the verbosity of the languages (and you aren’t getting a good IDE with autocomplete). With that baggage/train of thought, you get thrust into a world that is demanded to be object-oriented and frankly that is harder to start with that a simple procedural language such as Python or JavaScript (I’m well aware both of those support object oriented programming, but you are not forced to). This ruins a persons drive for programming and frankly if I didn’t have lots of prior programming experience than I would have been burned out by Alice.
Lastly, they just plain aren’t fun. The level of abstraction is so high that you can’t see how programming could be fun and useful. Making a snowman turn, while may at first be more exciting, gets boring after the second/third/fourth time. The metaphorical ceiling is too low. Compare that to say using some Social Media API with Python and frankly it is quite apparent how programming can be made entertaining.
I learned to program/reverse engineer because of video games. I had to learn manual memory management and had fun doing it because I knew/saw how useful it could be. We shouldn’t put a glass ceiling over kids and their creativity, but rather we should show how programming can be used in your hobbies and in the real world.