Recently I've been taking acting classes, both for reasons totally unrelated to programming and for reasons related to it at as well. I've also spent some time talking to actors about how they get work, and the answers seem utterly crazy. Apparently what you do is you make a resume, put your picture on it, mail it to a billion advertized openings, and hope you get lucky. Then you get an agent, which is basically a recruiter, hope that your agent hears about openings you didn't hear about, and hope further that they bother to tell you, or indeed even remember your name, and if they do, you mail your picture and your resume to a new set of unadvertized openings, and again hope that you get lucky.
Now this is, of course, madness. One side effect of this madness is that, since the process depends heavily on resumes, tons and tons of short films are created every year which nobody outside Los Angeles will ever even hear about. These things cost thousands of dollars and with the exception of a very small number that make it to film festivals or to Europe -- where short films still actually get seen by audiences from time to time -- they are not intended ever to be seen. They are made so that directors and actors with nothing on their resume can now have something on their resume. There are legions of people in the city of Los Angeles doing nothing but padding their resumes, and spending thousands of dollars to do it!
You may be wondering what this has to do with my usual topic of programming. Well, as a programming blogger, I am legally obligated to meet my quota of Paul Graham references each month, so here we go. There's a great essay called Great Hackers which has a great deal to say about this kind of thing. One of its most interesting ideas is that great hackers avoid frustrating work because it blunts their edge:
The distinguishing feature of nasty little problems is that you don't learn anything from them. Writing a compiler is interesting because it teaches you what a compiler is. But writing an interface to a buggy piece of software doesn't teach you anything, because the bugs are random. So it's not just fastidiousness that makes good hackers avoid nasty little problems. It's more a question of self-preservation. Working on nasty little problems makes you stupid. Good hackers avoid it for the same reason models avoid cheeseburgers.
You have to wonder, if these words are true, wouldn't it apply in other contexts as well? For instance, Paul Graham wrote a book called Hackers And Painters. The idea there is that being a programmer and an artist, as Paul Graham is (and I am), is not such an odd combination. The implication is that programming is to some degree an art rather than a science, or at least, that programming is more about being creative than about being correct. The logic and accuracy of a programmer are like the good looks of an actor. Although they are necessary to success, they are not actually what the work is about, and if that was your only asset, you'd have a limited career.
But if working on bad code wears down your programming skill, what does playing bad roles do to your acting skill? If Paul Graham's onto something here, then surely all these people out there playing little roles in little "movies" are not actually doing themselves any favors. Because the thing is, aspiring actors work on these things, and aspiring directors work on them too, but aspiring screenwriters ignore them. In fact, I never even knew that these things existed until I started acting classes in LA! I wrote my first feature-length script over ten years ago (it was awful, but I wrote it anyway). I've been reading books on screenwriting for at least a decade. I had never even heard of short films. And if aspiring screenwriters aren't working on these things, you could have great directors and great actors and still have shit movies, because the characters won't be there and the plot won't be there either.
Of course the first question is not, "what else would it mean if Paul Graham's words were true?" The first question is, "are the words true or not?" And I would actually say that the words are false. I have worked for hip, exciting startups, and I have worked for dull, lifeless corporations, and I can tell you that the problems I was working on had no effect on my programming skill at all.
What has made the difference, consistently, every time, is whether or not I was programming at home after work because I wanted to. That's what it's really about. If you're doing it because you want to do it, you'll do it well. If you're not, you won't. Your job can get in the way of programming well or it can facilitate programming well, but in neither case does it have any real power in the matter.
That probably applies to these short films as well.