On Programming and Making Mistakes January 22, 2012Posted by Peter Varhol in Software development.
I’ve picked on Codecademy far more than I intended over the last few weeks, mainly because I think that even if its believe that everyone (like NYC Mayor Bloomberg) can learn to code using its methods, that doesn’t mean that any particular person should do so. Learning to code isn’t easy, and it isn’t done frivolously.
But I’m just getting caught up on my posts after having been in Vienna, Austria for the last week, speaking at Software Quality Days. A bit to add to the discussion is a description of Codecademy usability by IBM evangelist Antonio Cangiano on his blog Zen and the Art of Programming. He had a smart but nonprogrammer friend work through the initial Codecademy lessons, and discovered that while the lessons themselves were fairly easy to follow, if something didn’t work right, there was no help, and the student was stuck.
There are a lot of reasons for this, but in general they boil down to the fact that some of the things that programmers take for granted. And once you make an error, it’s very difficult to understand that error and recover from it.
That’s not a knock on Codecademy. Most of the commenters to Cangiano’s blog have generally good things to say about its approach to teaching programming. However, most of those commenters were already programmers, trying it out or brushing up on their skills. Those that report difficulties were Codecademy’s target market – those wanting to learn programming for the first time.
It takes more than a willing body and good online instructional software to learn programming. It takes a dedicated and prepared student with a specific set of goals in mind. And it takes a variety of instructional sources, including an expert such as an instructor, a text for background, immediate and accurate feedback, and a community to exchange notes and ask questions. It does also take a good instructional sequence such as that provided by Codecademy, but that’s simply not sufficient.