The Invent with Python Blog

Thu 27 December 2012

Why I Recommend Against Hackety Hack

Posted by Al Sweigart in learningtocode   

Disclosure: I sell a couple books that teach programming to kids (and are free to download). I don't personally view them as being in competition with Hackety Hack, but someone else might.

Hackety Hack was a project originally started by _why the lucky stiff to teach kids programming in Ruby. It often comes up in "I want to teach my kid programming" forum threads. So I downloaded Hackety Hack and decided to give it a try.

I found Hackety Hack to be frustrating and was very unimpressed with it, and do not recommend it as a way to teach programming to a beginner.

It's kind of crap.

Its main flaws are:

  • It has little actual content. It is very short and covers programming neither widely nor deeply.
  • The presentation style is sort of a "wall of text" format, where programming concepts almost never have more than one example.
  • There are NO error messages or feedback at all if you make a typo in your code. (Pressing Ctrl-/ does not bring up an error console in the Windows version like the instructions say it does.)
  • And at least for the Windows version, it crashes a lot. A LOT. I had to restart it at least a half dozen times before making it through all the way. It even crashed twice while I was writing this blog post. (Apparently this is also a problem with the OS X version as well.)
  • The editor doesn't have basic features: you can highlight text, but there's no point because you can't copy or paste. There is no Select All. There is no Undo. Pressing Ctrl-C, Ctrl-V, Ctrl-Z, or Ctrl-A just inserts a weird Unicode error character into the text. (There's nothing like highlighting a bunch of code, pressing Ctrl-C to overwrite it all with a Unicode character, and then pressing Ctrl-Z to just get another Unicode character, realizing that all your code is permanently gone.)

There's a few other minor gripes I have with it: The upload feature doesn't work at all (even though you'll get a "Uploaded!" confirmation). On the "Your Preferences" page, the link to set up an account just takes you to the home page, instead of specifically to the page (though there isn't much at all to the online content anyway). It doesn't remember the accounts that get signed in, making switching between multiple accounts (like in a classroom setting) a pain. After uploading, the menu doesn't give you the URL where I can find your uploaded program online. (But again, the upload functionality doesn't work.)

In the file editor, if you don't save your program before running it, clicking Run simply does nothing (there's no, "You need to save first." message). Your program won't run until you remember to first click Save.

Hackety Hack seems like it hasn't had a lot of time spent polishing it or paying attention to the details. (For example, there's a couple grammar and spelling mistakes in the text.) And again, there really isn't all that much to Hackety Hack. It is short. Very short. There are only four lessons:

  • Lesson 1: A Tour of Hackety Hack. This goes over the basics of the buttons and menus in Hackety Hack itself. Sure, fine. Every piece of software needs this, and it's adequate. But it could have easily been built into the first lesson (like "tutorial levels" in games).
  • Lesson 2: Basic Programming. This covers some turtle-related coding. There's a "Programming is like making a to-do list." comparison. The user sets the background color. The user draws with a turtle, changing the pen color. The user then draws a box using a simple loop. It's okay that this is boring; it's the beginning stuff. But there's nothing BUT the boring stuff. The lesson ends after the loop-box-drawing part. There's nothing more.
  • Lesson 3: Basic Ruby. There's the traditional "Print hello world" example, using "alert" (which, oddly, is actually more a JavaScript style thing). It covers basic math operations, though the word "operator" is never mentioned. There are brief explanations of string replication, objects & data types, variables & assignment. It has an "ask" function for user input (again, this is not part of standard Ruby). It explains if/else statements. But nothing is placed in context of making programs, until the very end which has a meh Guess The Number game (even more meh than usual: you only get one guess and the number is not random but instead pre-programmed).
  • Lesson 4: Basic Shoes. Summary: Basic layout management for the window, adding ui buttons that run code when pressed, displaying images, placing a text field. That's it. And I don't recommend using a new and unsupported module like Shoes instead of just learning JavaScript & HTML, because it means that as a programmer you will hit a brick wall very soon with Shoes' limitations.

If you are a beginner who wants to learn programming you will be much better off using MIT's Scratch, Codecademy, or Try Ruby (originally created by _why but has since been much improved). Kids Ruby is a project based off of Hackety Hack that is polished, though I found problems with it as well. (I could see it expanding and improving in the future though.)

The github page for Hackety Hack hasn't been updated in about a year (and has dozens of untouched open issues), which I take to mean that the project is dead. I don't see it getting better anytime soon, but I also don't know why Hackety Hack had such a wide reputation to begin with, except for the (arguably well-deserved) good reputation of _why behind it.