Why I Recommend Against Hackety Hack

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 http://hackety.com/ home page, instead of specifically to the http://hackety.com/users/sign_up 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.

25 thoughts on “Why I Recommend Against Hackety Hack

  1. Oh well Al, I guess Hackety Hack has a wide reputation because it started something when no one had taken a step to and that does deserver some damn respect!. And steve I would personally like to thank you for taking care of all the stuffs that _why left us with.

    1. I gave a lot of consideration to the language and tone I was using in this blog post. I didn't want to portray _why as a bad programmer or bad person. But the fact is, Hackety Hack's quality is low. VERY low. Crashes-often-and-deletes-your-code-with-an-errant-keystroke low. And I give several specific reasons why it is low and what would have to be improved, and alternatives that I think are better than Hackety Hack.

      On good faith, I am attempting to be fair.

  2. With all due respect, this article is rude, inconsiderate and the wrong way to bring attention to problems.

    I am on the shoes and hackety hack teams as a Linux testing guy. Trust me when I tell you that you did not raise these issues on the issue tracker or mailing list, which is the proper way to raise concerns, not a borderline-rant blog post. As for the lack of copy and paste, that is intentional. We don't want students to go online, find the really cool program and run it. We want them to write their own, to let their imagination lead them. So please, if you're interested in helping out, and while this is cliche, patches (and even bug reports!) are welcome. And as has been stated above, this is why OSS people quit.

    (Oh, and before you call something abandonware (which you did on this blog post), its best to send some emails to people. Not sure if you did this or not, but just saying.)

    Apologies if I come across as rude, but next time, please reach out. Saves a lot of people a lot of pain, misunderstanding and trouble.

    1. I put much consideration in the tone that I was using. I was extremely disappointed with the quality of Hackety Hack, to the point that it sort of makes me wince when people recommend it as an introduction to programming. It's 2012, and there are better alternatives out there.

      > As for the lack of copy and paste, that is intentional. We don’t want students to go online, find the really cool program and run it.

      I very much recommend against this. It's a **good** thing when kids start sharing programs, or download other people's programs to run, even if they don't take the time to dissect the code. It keeps them interested in coding.

      I teach a Saturday morning programming class. Kids want to be able to take the projects they've been working on in class home with them. Education software should promote sharing, not put obstacles in the way of it.

  3. There's something exquisitely delightful about declaring yourself an author, postulating on the mistakes of others, then dropping this clanger: "It’s main flaws are" ;)

  4. I'm in agreement about some of the criticisms in this post, but I strongly disagree with its conclusion.

    I have successfully introduced nearly 100 people to coding via Hackety Hack, and it, like no other tool I've used, has brought men, women, and children to an understanding that yes, they can program, and this has usually happened in under an hour.

    The copy-paste thing is funky, but not broken: you have to use the alt-V instead of cmd-V or ctrl-V.

    Yep, it's crashy, particularly on Windows. I warn people to save often.

    And yes, it's short. I wish there was more material. (There ought to be more of a community initiative, as it's actually quite easy to submit new lessons).

    But the toy-like nature and rapid feedback of the Logo-style drawing playground that Hackety Hack offers is still the best intro-to-programming tool I've come across. Everything else is call-and-response, "copy this code into this window" crap that doesn't inspire people to *want* to learn.

    I introduced my wife to Hackety Hack, and she said "That's awesome! What do I do now?" And you know what? I didn't have a good answer for her, because no other tool is anywhere near as fun to pick up and use.

  5. > I put much consideration in the tone that I was using.

    So you're saying that this is representative of the tone you very carefully considered:

    > It’s kind of crap.

    > For example, there’s a couple grammar and spelling mistakes in the text.

    The irony here is delicious, as there are more than a couple in yours.

    > Its been corrected.

    That would be "it's been corrected", as in "it has been corrected".

    > Its a **good** thing when kids start sharing programs

    That would be "it's a good thing", as in "it is a good thing".

    Glass houses and whatnot, Al.

    There are a lot of productive ways to bring attention to issues in open source software and you chose none of them. Disappointing.

  6. Hi,
    Beginner programmer here.
    Through your books Al, I've really grown as a programmer, and a game designer. I appreciate the effort you've put into the books, and the plentiful examples provided.
    That's why I can understand your frustration with shoddy work. I may be a beginner programmer, but I am a very experienced artist. If I were to release work that didn't meet my internally high standard of excellence, I would do so quietly, and without fanfare, hoping no one called me out on it.
    So the idea passed around in these comments that you somehow are supposed to become a designated bug-reporter instead of giving your opinion on your blog about your experience with this program is ludicrous. It's their job to create work that meets acceptable standards, not yours.
    The response that you're hypocritical for pointing out spelling errors is childish. Did they not even run their own program?
    The fact of the matter is, people get defensive when they are criticized, and they get even more defensive when it is well founded.
    They can either learn the lesson (don't release something until you've revised it and refined it 1000 times) or they can continue to have poor workmanship and lose revenue and respect.
    I appreciated your candid opinion and I look forward to more posts.


  7. +1 Greg

    Actually all the complaints in praise of _why's work is kind of ... well ... poignant :P

    I am glad people are picking up his mess, but really, there are heaps of better places for beginners to go than Hackity Hack. Jonathan Gillette is more like the Justin Beiber of programming.

    Now *that* is how you be rude, people. Just so you know... The comments from Al are actually constructive and conservitive. Take note.

  8. that progamm suck hard, it doesnt even shows the turtle and is lagging as hell. I cant even erase mistakes without closing the app. This programm was supposed to teach, not to give me a headache.

  9. I think if you could help out with the project instead of giving us a bad review then we could really have something worth while. Maybe this is why _why left the scene. Who could handle all the complaints?

  10. And yes Steve! Thanks for stepping up to the plate. I saw your video about how you were the only one willing to take it on. I'm glade someone is keeping the dream alive. As for Ruby? A Python blog is not the place to expect any good review. But thanks for
    sharing about it. Python is an inspiration too. I just don't know how much "Matz" was inspired by it. I think the term 'scripting' has been misunderstood. Don't we mean 'document manipulation'?
    After all we do a lot with documents in them. (.html, .txt, .data, .whatever)

  11. Very late to the party(and all the points are already made but the is no vote up button thus):

    1) HacketyHack does suck. It is annoying to use.
    2) It has like zero content.
    3) Alternatives like kidsruby exist.
    4) The lack of error messages is downright CRAZY!

    I used and had no idea what was going on sometimes. It is just annoying.

    And most importantly:
    Just because it's OSS does not mean it shouldn't be criticized or that each complain should be a bug report. People complain about Perl all the time. Why not use contibute to Perl instead of using a language like say Ruby?
    You HacetyHackers are complaining that someone else found your program buggy and is offering alternatives? His post is not a rant.

    Also why not do this:
    1. Add content
    2. Make it stable
    3. Add error messages.
    And make the program actually good.

    Al didn't come out of blue to criticize it. He is giving reasons why he does not recommend it as a teaching tool. And he is giving out reasons. And seriously the sucker punch regarding "It's and Its" is hilarious.
    And seriously, what solid reason is there to contribute towards or even use HacketyHack?
    (Maybe feeling inadequate in comparison to InvPy or MakeGames?)

  12. Funny, people are angry about this review, but I found it while searching as to why HackeyHack won't open. I am searching for programs to use to teach students programming. I can't use something that doesn't even open.

  13. I think that Al Swiegart is making a great contribution to teaching kids to program. My son started with his first book and is making great progress. I think his analysis is fine.

    Instead of adults talking about what they think works for children, I feel we need to start off with children that have reached a decent level of proficiency with programming and then see what they started with. The program with things like Hackety Hack and to some extent Scratch and Alice is that there is a steep drop off from one stage of learning to the next.

    Although children can learn very simple things, they may get stuck, especially if there are any bugs in the learning tool. To progress to the level of building a complex program, they're going to need to learn key skills to deal with frustration and be able to debug a program.

    I think that many people try to use technology to make programming easier or fun, which is fine for the very early concepts, but I really think it encourages drop-off once they get the basics of loops and conditionals.

    Keep going Al.

    FYI, once my son got through your book, he moved on to develop games like on the link below when he was 12 and 13 years old.


Leave a Reply

Your email address will not be published. Required fields are marked *