Time to start

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?  

An article on Computerworld.com posed this question and it caught my attention on two levels.  First, I grew up and first learned how to program in the “Basic world” so I was curious how kids are starting today.  Second, as a father this jumped out as a potentially fun project to do with my son who is entering middle school.  After doing some digging, it turns out there are lots of ways for students to learn programming today but there is no common way to learn it.  Basic used to arrive pre-programmed on most computers somit was an easy choice but this is no longer the case.  Basic has split into many flavors including Quite Basic, Visual Basic Express, and Small Basic.  In addition to Basic, there are other potential starter languages including Alice, Python, Racket, Ruby, Scratch, Java, JavaScript, and some might even argue the venerable C and C++, just to name a few.  Read the comments section of the Computerworld article and you will find even more languages suggested for getting started.  Choice is good and it’s exciting that we now have access to all of these free development tools.  But the downside is that we are running into the modern dilemma of too many choices leading to confusion and indecision.

After doing some research on starter languages, I ultimately settled on two for the following reasons:

  1. The tool should be free.
  2. It should run on both PCs and Macs.
  3. It should have a vibrant online community.
  4. 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.