Learning to code, really.

Audrey Watters has a fabulous write-up about the trend of the learning to code movement that’s happened over the last year. Well, I have an interesting perspective on this whole thing. Over the last couple of years, I’ve learned to code. Also, I’m learning to teach code.

Some time ago, maybe 3 or 4 years ago, I confessed and lamented that I didn’t know how to program, which is both true and false. I have had a computer science class. I learned BASIC, which I had learned 9 years earlier in 7th grade. I knew what a computer program was. I’d written some simple ones. More recently, I had valiantly tried to learn PHP and JavaScript. I never really learned those, though I hacked other people’s code all the time. I just never started anything from scratch. I also knew HTML and CSS, things I’d learned on my own for the pure fun of it. So, up until two years ago, I would have called myself a dabbler, a hobbyist. If anyone asked me if I could code, I would have said, no.

But here I am with quite a bit of coding under my belt. I still would not call myself a programmer, but I am fairly proficient. I wrote a voting program for my school to do mock elections. I needed a little help but mostly I managed on my own. So how did I learn? What tools did I use? Do I think any of the available resources are useful?

I honestly think it would be best if I could plop myself into a few CS classes, face to face, with some concentrated time to do projects and assignments. Mostly, after you learn the basics, both of computational thinking in general and then the language you’re working in, it’s a matter of using those skills to create things and solve problems. Bt I don’t have the time or money for that. I do have the benefit of a husband who teaches CS, which gave me the face to face component I needed. I was able to ask questions and get help with debugging in a way that most people don’t outside of a class. But I did learn something from the resources I used.

I started with books. I dove into Head First programming. I worked my way through the who,e book. Then I did the same with another book. Then I came up with my own pet project and used those two books as resources. Then I worked through the book I teach from, and in addition to the exercises in the book, I created my own. The creating my own thing was important. It let me figure out what problems I could solve and were messy enough that I had to learn and do things outside of my comfort zone to accomplish them. Most exercises in book and online are clean. There’s kind of a right or wrong answer for them. Real programming is messier.

I did turn to some online courses. I took a Python course through Code Lesson. I took a Udacity course on program and algorithm design. The code lesson course was much more effective than the Udacity course (which I never finished). I knew most of the material already, but I learned some new things. My work was graded by a real person, and I communicated with real people, just a few, via the forum. It cost money, though it was really a bargain. But I liked the Udacity course because it had no specific start or end dates. I could hop in and out at will. I barely scratched the surface of that course. I learned one or two things, and I would probably benefit from going back to it, but I have a time issue. I felt compelled to work on the Code Lesson course because I’d paid for it.

Where I learned the most, though, was in teaching. To teach something, you have to know it pretty well. I did all my students’ assignments and projects. If they asked me a question I didn’t know the answer to, I’d spend time figuring it out. I enjoyed the puzzles they gave me, and I learned a lot from solving them. It was like doing 7 assignments all at once. Talk about practice!

Is this the year of learning to code? Has it been successful? Personally, I think it has. I can definitively say I learned to code. But, I have a lot more to learn. I’d never apply for a job as a programmer even if no CS degree was required. I just don’t have enough experience under my belt. Has learning to code caught with others? In my own school, I have a nice cohort of students moving through computer science. But I’m not turning people away. The need to take certain courses, the schedule, and the geek factor all work to keep girls out of my classes. Some have, in fact turned to these online courses, but they find them difficult. I have a student going through intro via Udacity and I had to give a lecture on functions because the lectures and quizzes she’d already had didn’t sink in for her.

It’s great that attention has been brought to this issue, but I don’t think there’s going to be a sudden surge in people who have learned to code. For one, Alan Levine points out the small numbers of people who finish these courses. And what do they know, really? The knowledge feels abstract and ephemeral to me. Real learning doesn’t seem to happen in front of a box (or in one). That doesn’t mean that a handful of people might not learn something from all these Learning to code initiatives (some of which are face to face and probably more successful). But I think those are the people who might have learned to code anyway–through books, the web, or just hacking. What I’d be interested in knowing is if Mayor Bloomberg (or someone with little knowledge and less time) learned to code. Then we might be headed in the right direction.

5 Replies to “Learning to code, really.”

  1. This hasn’t been — not quite — the year I’ve learned to code. But I’ve definitely made headway (I finished one of the Coursera CS courses! Got my PDF certificate and all!)

    I must say, you remain such an inspiration to me, Laura, because I’m still struggling to figure this out for my own self, let alone stand in front of a class and teach. I really love how you’re willing to learn with your students too. That’s such a powerful lesson for them (and for you).

    Also, I’m pretty quick to dismiss the whole Bloomberg Code Year marketing thing. But damn, how I wish our politicians and judges and Congress-critters knew more about tech.

  2. One of the things I loved about your post was that it showed how many initiatives there are, but I’m unsure how many of them really want to teach people to code, and how many are just seeing a business opportunity. Schools are still reluctant to include CS in the curriculum, and if they do, they struggle to include it in a way that is meaningful. People think of my class as akin to art or music. It’s good to have but it’s really for fun. Some students have been shocked by the work load.

    I think people will learn to code when they see a need to, when they have a problem to solve. I’m lucky that my students give me that. Last night’s problem? How to get cars to travel down the screen without running into each other. Such a fun thing to work on. It is humbling and scary to teach when I don’t have all the answers, but also fun. I say, let’s try it together all the time.

  3. I started to see real improvements in my hobbyist coding skills when I landed at a school where I could actually solve problems with code. Like you, I don’t feel qualified to apply for programmer jobs, which often leaves me nervous with teaching “real” CS. There was a discussion on the PLT-EDU list about how CS instructors without full depth of the discipline cause such damage to young CS students and I felt like they were pointing straight at me. But I’ve found more comfort as the years have gone on by thinking about myself as someone who can teach/mentor/model the craft of coding, rather than someone who has to teach Computer Science. Having a solution in hand for every student question must be nice, but there’s also value in being able to model the discovery process and be “less helpful.”

    The Code Year idea seemed to echo something I found in an old 37 Signals post (blogged about here), that if you don’t have the knowledge base to try or even conceptualize a solution, then you can’t be a reasonable judge of other solutions. We could use more nonCS teachers who can read code, more administrators too! Maybe that would help schools recognize the value of our “learning data,” and not bargain it away for a suite of substandard quiz tools.

  4. I once worked at a software company full of professional programmers, one of which I was not. After 6 months I went back to teaching. I teach programming but I have no inclination to be a programmer. I like to tinker with code, make little projects, make little games for Droid and so on. Teaching programming is the perfect venue for that. Programmers make big tedious things that take months and years to produce. Teachers have to be done in a semester. Being a great programming teacher does not imply being a great programmer. It means having a set of cool little projects that you know pretty well and that will excite the kids to want to program.

Comments are closed.