Learning to code is ignorant bliss

How and why I learnt to code, and what that might mean

September 30, 2014

Here’s a video of Ira Glass (founder, presenter etc of This American Life).

If you can’t watch or hear it, here’s a transcript of the most important bits I’ve stolen from the internet.

What nobody tells people who are beginners — and I really wish someone had told this to me… is that all of us who do creative work, we get into it because we have good taste. But there is this gap. For the first couple years you make stuff, and it’s just not that good. It’s trying to be good, it has potential, but it’s not.

But your taste, the thing that got you into the game, is still killer. And your taste is why your work disappoints you. A lot of people never get past this phase. They quit. Most people I know who do interesting, creative work went through years of this. We know our work doesn’t have this special thing that we want it to have. We all go through this. And if you are just starting out or you are still in this phase, you gotta know it’s normal and the most important thing you can do is do a lot of work. Put yourself on a deadline so that every week you will finish one story.

It is only by going through a volume of work that you will close that gap, and your work will be as good as your ambitions. And I took longer to figure out how to do this than anyone I’ve ever met. It’s gonna take awhile. It’s normal to take a while. You’ve just gotta fight your way through.?

The positive message of work hard and things will be good is uplifting, but the stuff about having a killer taste and an inability to meet it, that was an interesting new thought to me, and that’s what I want to talk about. Because I’m one of those kids that quit.

I love music1. I wouldn’t be as audacious as to say my taste is killer2, but it’s certainly strong. When I was in a car crash as a child, my Mum spent the insurance money on a piano and started me on lessons. I got up to Grade 4, but as soon as I became a teenager with enough independence to give up, I did. Because I was a stubborn kid, that did well at what I enjoyed, but insisted on not doing what I didn’t enjoy. And the moment I turned 14, discovered Napster, and specifically the moment I first heard Bucephalous Bouncing Ball by Aphex Twin on Vic Reeves’ Desert Island Discs, my taste in music exploded. And my ability to enjoy playing and making music plummeted. A slump that I have been too stubborn to work my way out of since.

Making websites however, I never knew how awful my markup and code was. This isn’t to say that it was easy. I remember spending three solid days just trying to get ActiveRecord to connect to my MySQL database. Three days of no progress, staring at error messages, re-installing MySQL several times and hours of googling error messages I didn’t understand. But when I finally got it working, it worked! I could happily proceed to generate scaffolds, then hack them into what I wanted it to do.

For those of you who can code, here’s a Rails controller I wrote for a paying client in late 2006 or early 2007. I don’t know exactly when because I didn’t know what version control was. And of course there’s no tests for this mess. But it worked, and as far as I was concerned it worked really well, because it worked at all. The workingness impressed everyone around me, and it impressed me. An ignorant bliss that enabled this stubborn kid keep working at it.

This is around year 3 or 4 of my programming experience. If I had the same knowledge about how bad this code is as I did about how bad my music was, I would be deep in that gap that Ira Glass is talking about. And I would have given up much earlier.

What can we learn from this

I’m attempting to show the positive side of a quality of learning to program that is also incredibly frustrating to professionals. Is it easy to learn to code? Well, it entirely depends on what you want to do, and how well you want or need to do it. But to be frank, today3 you’re not going to get deployment access to any important pieces of code in days or weeks of training. Like most other professions, it’ll take years.

But this bliss-in-ignorance, or innocence, is an interesting quality that I think should be noted by those interested in education. And looking back, it’s a quality that I am incredibly grateful for. Perhaps programming is similar to The Knowledge; a pretty unique set of challenges that suited a generation of London Taxi drivers, many of whom may not have had much luck in other professions. It’s impossible to say what my life would be like now if I didn’t get sucked into this programming game, but I wouldn’t be surprised if in an alternative universe without this quirk I was struggling through life a great deal more than I am now.

Teaching computing taste

At the same time as acknowledging that this makes it a great skill in some ways, it’s also a quality that can be dangerous in others. If there’s the possibility that the student may become an professional programmer in a few years, then we should absolutely get them hacking something together that just about works. However there is a whole separate sector of ‘Digital Literacy’ education that is equally important, one that aims to enable people who work in different professions to better understand computing. I’m beginning to think that what’s needed here is the opposite: an education that builds up their taste as quickly as possible. I think it would be far more useful to these individuals (and society) if they are able to identify and appreciate good computing.

I’m not convinced that getting them to hack something together is the best way to do this. But I’m not sure, I’m not a professional educator4. Some examples of what I hope to see as an output of such an education would be an understanding of technical debt, test and behaviour driven development, version control, semantics, APIs etc. I think these ideas are both crucial in working with technical teams, which is becoming an important part of an increasing number of careers and hobbies. But they’re also interesting ideas in themselves, ones that I think will be good to input into the brains of as many people in as many different walks of life5.

Feedback

I’m very interested to hear your thoughts about this. My previous blog posts have received pretty unanimous positive feedback, which is great for my ego (so please don’t stop that), but also makes me concerned that those with some good critique aren’t speaking up.

So either way, please comment on twitter, or email at james@abscond.org if you want more than 140 characters and/or want it to be private.

  1. “Everybody loves music”, I hear you say. I used to think that, but one of the many things I learned in my brief stint of working in the music industry is that actually there’s an awful lot of people who really don’t care about music. Which was confusing, but I learned to accept it. 

  2. It is. 

  3. Another interesting quality of this industry is that it is rapidly improving. I wouldn’t be surprised if under the hood, MySpace was code written this badly. And I was particularly lucky with my interest in Ruby on Rails, as I got involved in it very early on. I learned with everyone else. The famous (to Rails nerds) ‘oops’ video launching Ruby on Rails is full of bad practices that would be unnacceptable today. 

  4. Teaching seems to get it far worse than programming in people not respecting it as a profession that takes years to master. In fact, the fact that both of these professions are treated this way is why the debate around teaching to code is so often so bad. 

  5. For example, I’ve wondered about the possibilities of test driven law making for about the last 5 years, but have always found the space between the two industries too big to bridge, even with my time working at the MOJ. It’s shrinking, but I think we’re still years from being able to have such a debate. 


For more content you can see all of my posts, or read about me.


Comments

No comments yet.


Add your comment

Your comment will be published once approved