As the parent of a child who wants to learn computer programming, figuring out where to even start can be a daunting task. I know because I went down that winding path. The idea that would eventually become Start Code began with a simple question:
How are students learning programming in a post-Basic world?
After doing some research on starter languages, I ultimately settled on two for the following reasons:
- The tool should be free.
- It should run on both PCs and Macs.
- It should have a vibrant online community.
- And finally, it should be fun to work with!
These reasons help dodge some potential hang-ups that a group of new programmers can run into. First, a free tool lowers the cost of entry and anyone can try it with little investment up front. Second, in the age of iPhones and iPads, being Windows-centric will simply not work in my opinion. More people now have Macs at home than ever before. I won’t get into an operating system flame-war here because I am comfortable and happy working in either environment. It’s simply a fact and students should have the option of bringing either a Mac or PC to learn. Third, an active online community means the language and tools can grow with the individual’s programming skills while also offering assistance if they get stuck. Online tutorials and code samples also help immensely. And lastly, the environment should be fun and forgiving on the individual. Programming can be hard and unforgiving enough as it is. Making early mistakes shouldn’t take hours of bug hunting or messing with complex configuration settings.
For the reasons above, we finally settled on starting students with a combination of Scratch and Python. These two tools combined have the potential to be a great way to start coding. Scratch teaches programming concepts with immediate feedback while also offering an online community of hundreds or perhaps thousands of shared projects. And Python gets the student typing “real code” and used to seeing, reading, and thinking in code structures. Python also prepares them for later curly-bracket programming languages with more complex syntax and concepts as they progress.
Did we choose wisely? I'd like to think so. I know that there are other options out there and other programmers could argue passionately for their beginning programming language of choice. Let me know on our tumblr blog. But ultimately the main goal is to make an informed decision and get the students started. These two tools are merely the starting point. Indecision or inaction is not an option because we have important work to do. Our kids need guidance and encouragement to become the next tech generation and we at Start Code are excited to help them get there.