Archive
Here’s What I’ve Learned So Far
Heather Payne is smart, hard-working, and not afraid to dive into things she doesn’t know. Starting from nothing more than a tweet six months ago, she and her colleagues have built an organization in Toronto called Ladies Learning Code that runs workshops to teach women basic programming skills. A couple of weeks ago, she set herself a goal: she wanted to build a simple little dynamic web site. Yesterday, she blogged this under the heading, “Here’s What I’ve Learned About Programming So Far“:
Respectfully, I disagree. Programming itself isn’t intrinsically hard; what’s hard is all the crap we make people like Heather wade through to get to the programming. I’ve been programming professionally for 29 years, and I’m still baffled, frustrated, and angered by things going wrong when I’m trying to set up a new workspace. Install this—oh, but wait, it depends on that, and the package manager I’m using doesn’t install the right version of that by default, but the error message telling me that only makes sense to five people on the entire planet, so off I go to a Q&A site where someone inevitably says, “It’s easy—you just…” Saints and small mercies, I hate that word—hate it and dread it. “Just” means “I want to make your problem sound trivial.” “Just” means “I refuse to acknowledge that we’ve buried your actual problem in so much accidental complexity that you’ll have to dig for hours to get to it.” Whether it’s a bureaucrat saying, “Why don’t you just fill in this 25-page form,” or a programmer saying, “Why don’t you just switch languages,” its real meaning is, “Your time means nothing to me.”
I’ve been teaching programming off and on for 24 years, and what I’ve learned reflects something psychologists discovered back in the 1970s. Suppose I give you a choice: you can either wait for the bus for 10 minutes every day, or you can wait 1 minute four days a week, and 20 minutes the fifth day, except you won’t know in advance which day each week is going to be the long wait. If you choose the second option, you’ll wait half as long on average, but almost everyone prefers the first because it’s more predictable. Similarly, if you can choose between a task that will reliably take an hour, or one that will usually take five minutes, but will occasionally take a full day, you’ll choose the former—you pretty much have to if you want to be able to plan anything else.
And that is where we, as programmers, have failed. When Heather and people like her sit down to start programming, they have no way of knowing whether a seemingly-simple task is going to take 5 minutes or 5 hours, because we, the professionals, don’t know either. Oh, we’re probably better at guessing, but we don’t know. And yes, other things aren’t really predictable either—painting a wall can take half a day instead of 30 minutes if you accidentally knock the can over and have to clean it up—but programming has much bigger error bars than anything else I do.
So here’s what I’ve learned so far from almost thirty years of programming and teaching. If we really want it to be something that most people can do, the way most people can do their taxes or change the oil in their car, then we have to make it more predictable. We have to stop excusing ourselves with the J-word; we have to stop saying, “Oh, but of course the debugger won’t work if you’re running a Tkinter application, because the Tk app grabs the event loop,” which is about as fair as saying, “Oh, but of course it rains when you wear red on Tuesdays” (the “…you idiot” at the end of that sentence may be silent, but it’s always there). We don’t need to simplify programming itself: we need to throw away all the crap that’s piled up on top of it. A “simplified for novices” layer on top of the crap won’t work: all abstractions leak, and the interface between the simplification layer and what’s underneath it will be a breeding ground for more incomprehensible bugs.
If we have made programming difficult for someone like Heather, then we should be ashamed of how poorly we have done our jobs. I don’t know what the solution is, or if we can get from here to there, but as far as I’m concerned, it’s the biggest challenge computer literacy projects of all kinds face.
Vulgarity Isn’t Honesty (or, Who’s Welcome Here?)
I unfollowed a former student on Twitter a couple of months ago because he was tossing words like “bitch” and “whore” into his tweets like marshmallows into hot chocolate. Today, I unfollowed a guy named Ted Dziuba because of this post defending—actually, praising—the use of foul language. He probably doesn’t care, but I’m hoping you will, so here goes.
The key sentence in Dziuba’s post was:
People like me, Zed Shaw, and Zach Holman will give you a brutally honest answer if you ask for it.
That’s bullshit, in the strictly technical sense of the word. People who drop the f-bomb (or the c-bomb n-bomb, and for all I know, the q-bomb and λ-bomb) into conversation aren’t telling you the truth any more than Paul Graham and other pundits that Dziuba is so jealous dismissive of. If they’re trying to smother listeners with anodyne non-information, then the foul-mouthed brigade are trying to distract us by throwing burning bags of dog poo onto our porches.
But there’s an important difference. Words like “fuck”, “bitch”, and “nigger” aren’t just meant to shock; they’re also meant to intimidate. Women, ethnic minorities, people with varying sexual orientations, the disabled, and the bullied have all learned the hard way that those words are warning signs of attitudes that start at “you’re not one of us” and rapidly get worse. I don’t know if Dziuba, Shaw, Hansson, and others who excuse themselves by calling it “frank” or “honest” are actually racist, misogynist, or homophobic. What I do know is, they’re sending the same signals as people who are. (And yes, they have defenders and imitators who are people of color, female, and/or LGBT. So what? Some people will do almost anything to fit in…)
Having gone through a phase like this myself in my twenties, I suspect that a large part of what’s driving the potty-mouth brigade is a desperate need to be accepted by the high school cool crowd that cut them cold when they were teenagers. But that kind of ten-cent psychoanalysis isn’t even worth ten cents these days, and anyway, I don’t really care about their reasons. What I do care about is that the makeup of our profession is as skewed as it was thirty year ago when I first started programming—that a lot of people are choosing not to pursue interesting, well-paid, white collar careers because they’re made to feel unwelcome. If you can convince me that saying “shit” over and over again is going to fix that, I’ll apologize for this post. If not, I’ll continue to consider you part of a problem that you, for all your self-proclaimed honesty, aren’t honest enough to face.
Later: the first three responses to this piece were (a) vitriolic and (b) anonymous, so I’m closing off comments for now.
Later: in response to email, no, I’m not expecting this post to change how the people I’m complaining about talk or act. I just want to let the people their words and actions are driving away know that some of us are on their side. To paraphrase Burke, all that is necessary for the triumph of meanness is that people of good will are too afraid of being called prissy to stand up for what’s right.
The 1970s Called…
By popular demand [1], I am growing a ‘stache for Movember. If you’d like to donate to the cause, you can do so here. Thanks.
[1] Not all my stories are true…
Well That Certainly Got Some Attention
We recently posted a note on the Never Work In Theory blog about a paper presented at PLATEAU 2011 which reported that novice Perl users were unable to write programs more accurately than novices using a language designed by chance. It certainly had an effect on our traffic…

Looking for a Writing Space in Toronto
Years ago, a musician I knew had a studio near King and Bathurst. He wasn’t an early riser, so we made a deal: two or three mornings a week, I went in around 8:00 in the morning and wrote for two or three hours. It had a small desk with a comfortable chair, my old laptop, a kettle, a key for the washroom down the hall, and no Internet connection, so once I was there, all I could do was write (or talk to myself, or stare out the window, but mostly write).
I’d like to find a similar space so that I can start writing again. (I’ve given up trying to do it at home…) I’ve got an old computer with no wireless card and a small monitor; all I need is a place to put ‘em, and a key for the door so that I can get in between 8:00 and 9:00 two or three mornings a week on my way to work. It needs to be somewhere between Queen & Coxwell in the southeast and Gerrard & Greenwood in the northwest, and I’m happy to help with clean up and maintenance in exchange. If you can help me out, I’d be grateful for a ping.
Demand Fair Play for Fauja Singh
I just sent the following to adjudication@guinnessworldrecords.com; please add your voice.
Damn birthers are everywhere these days…
To whom it may concern,
I was very disappointed to hear that you have decided to deny Fauja Singh the record for being the world’s oldest marathon runner [1]. His age is well enough documented to satisfy the British Home Office (grantors of his passport) — surely that is as reliable as anything else he could produce? On behalf of everyone inspired by his courage and determination, I ask you to reconsider.
Sincerely,
Dr. Gregory V. Wilson
Toronto, Ontario
[1] http://www.cbc.ca/sports/trackandfield/story/2011/10/24/sp-marathon-100-record-singh.html
Evidence? We Don’t Care About No Stinking Evidence
More prisons and mandatory sentencing does not reduce crimes—just ask Texas. But what’s our government’s approach?

What I Like Doing
I was talking with a friend Wednesday evening, grumbling a bit about how short life is and how many things I’ll never get to. He asked me, “Well, what do you like doing?” It’s a good question for a rainy Friday, so here’s my list (and the reasons I’m not actually doing the ones I’m not doing):
- Writing fiction. I’ve wanted to be an author ever since I was a little kid, and the three or four times I’ve been able to arrange my life so that I can really get into it—get two or three half-day sessions every week for months at a time—have been tremendously rewarding. My circumstances haven’t permitted that for many years, though, and probably won’t for many more years to come; without that feeling of flow, it’s actually more frustrating than fun to write.
- Explaining things. Teaching and writing non-fiction are almost as rewarding, so I’ve done a lot of both, and expect to do more. Teaching inside a large, slow-moving institution whose primary focus is something else didn’t work out for me, but I’m still hopeful that I can find other avenues. The catch, of course, is that in order for it to be sustainable, someone has to pay me, and I have to find a way to combine it with learning new things myself so that what I’m teaching doesn’t go stale.
- Programming. I enjoy making something out of nothing, and few shapeable things are as close to nothing as software. On the other hand, I’m slowing down: I don’t enjoy the feeling of being lost that I get when I’m faced with Git, Javascript, and other shiny newness. On the other, other hand, it keeps my teaching honest: having taught the web programming course at the University of Toronto a couple of times, I’m finally learning how to actually do it in my job at Side Effects
- Playing music. Doesn’t pay, and I was never particularly good, but I’ve always loved it. I’ve tried to pick up my sax again a couple of times in the last year, but as with writing, I haven’t been able to do it steadily enough to satisfy myself. Perhaps when Maddie is a bit older…
- Playing games. Whether it’s Ultimate frisbee or Homeworld, I like the combination of “with” and “against”—really, I play so that we have something to talk to people about afterward
. This is a big part of music for me too—I don’t enjoy playing on my own nearly as much as playing with people. Time, though… always time… - Working out. I was surprised to discover that I actually enjoyed this, back when I had to be in the gym three times a week for physio exercises—I was about as unathletic a kid as you could imagine. At the risk of repeating myself, making time is the obstacle: if it’s a choice between an hour with my daughter or an hour pushing weights around, it’s no choice at all.
I haven’t listed “spending time with family” or “spending time with friends” because I think they’re too big (or too deep, or too something) to fit into a list like this. They’re the base for everything else, though; as I said last week, we’re all looking for running partners, and I think the reason I’m not making time for writing or music or exercise is that they’d take time away from the two people I love spending time with most. It’s frustrating, like all either/or choices are frustrating, but if publishing another children’s book really was more important to me, I’d be doing that rather than making tea for Sadie when she has a cold or getting the kitchen floor wet doing “experiments” with Madeleine. So yeah, I grumble, but honestly? Given that there are only 24 hours in a day, and that nobody else can do my sleeping for me, I think I’m doing pretty much what I actually want to be doing.



Recent Comments