Learning To Code

I read an interview this morning with Blake Ross of Firefox fame and was a bit shocked to read Blake’s comments that ’The only way to learn how to code is to code. You can’t learn it in school, and you can’t learn it curled up in bed with a book.’ He then goes on to say that ’you have to be right in front of the computer, facing off with it, trying to figure out how it works and ultimately trying to outsmart it.’.

The problem with that statement is that the reader will infer that by coding, the reader will become a coder, when in fact all they will become is a hack. Not a hacker, but a hack. You know, someone who changes one line, recompiles and sees if that fixes the problem. Change another line, repeat. The end result? A big hack. That’s typically what comes out of those six month coding wonder courses they offer at colleges and universities these days; big hacks. No not all, but most are guys who can hack but can’t program.

I think I’ve covered this topic in a similar fashion before, but I’ll cover it again. Programmers understand how things work at all levels, they plan things out and they see the big picture. Think I’m biased (I took computer science at U of C) or jealous or just plain wrong? Perhaps. But look at it this way. If you took a person and introduced them to use a hammer, a screw driver, a drill, a level and all sorts of other carpenters tools, could you then call him a carpenter? Perhaps. But would you hire him to build your house? Not likely. Why not? Ah ha! Because although that person might be able to hammer in some nails, drill some holes or cut a few boards, they don’t know the first thing about building a house.

In exactly the same way, a person who been taught a few things about programming, either in a quickie college/tech program or by themselves, will never really learn the right way to do the bigger picture stuff. At least not unless they experiment for a long time or have they have proper mentors, in much the same way as the trades system works, where tradespeople start as apprentices and work up from there. The same applies for pretty much all careers I should think (in flying we start as first officers, for example) but for some reason the perceived magic around computers lets people get away with being hacks for longer than they should.

I should end by noting that I really should give Blake the benefit of the doubt and assume he was misquoted but nevertheless the fact exists that the hacks are everywhere and they outnumber the rest of us. That’s why I’m hoping to drop technology altogether and work for Kenn Borek Air within a few years.

Wed, 10 Aug 2005 10:03 Posted in

  1. By david 13/08/2005 at 07h10


    I think hit hit the point later in your posting: coding is properly a trade, like carpentry or airplane maintenance, so the best way to learn is by doing. In the absence of an apprenticeship program, working informally with a bunch of more experienced coders (either face-to-face at a company or over e-mail/blog/chat in an open source project) is the only effective way to learn. I've had the opportunity to hire or help companies hire programmers a few times, and I've never given a CS degree any weight at all -- I don't hold it against candidates, but it is no more important than, say, a Latin or Sociology degree (i.e. it shows that they went to university).
  2. By Douglas 13/08/2005 at 10h16


    Over the past eight years I've been directly involved in hiring 12 people and only one didn't have a degree, and that is because I knew him personally. Without any formal 'levels' like the trades have, education is the only real baseline we have. And while I realize that there are a lot of smart programmers who may not have degrees, I think as a whole university educated developers can think big picture better than 'taught myself to code' type people. The other problem with self-taught people sometimes is that because they taught themselves everything, they tend to think that they know it all or don't need input or help from others. University teaches you how to learn, how to think and how to ask questions. That foundation of knowledge is invaluable when it comes to becoming a better developer. And that's important in a field where there isn't necessarily a 'right way' to do something. You can only put an aircraft engine back together properly one way but you can validate the input in a text field in a million ways.

Comment Learning To Code


RSS