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.
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.
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.