(Intentionally provocative title, okay? Let’s take the denial-of-service attacks elsewhere.)
Alex Halavais recounts an instance of my favorite thing about kinda-sorta knowing how to program: the “Good $DEITY, you’re doing that by hand?” moment.
I had a good solid moment like that two jobs ago. One of the Quark people came to me asking for help getting OCLC to accept her SGML journal headers. I took a look, fixed problem (missing angle bracket), she was happy. Until the next header fried. At the time—I dearly hope they’ve fixed this!—OCLC’s SGML-accepting gizmo parsed the file and sent back errors. One. At. A. Time. So if you initially created a file with three errors, you would end up submitting the file four separate times.
When she came back for more help, I asked her how she was generating the SGML. Turned out to be cutting-and-pasting from her Quark files into an SGML template somebody had done up for her (with no docco and no explanation—don’t know who it was, but would still like to wring his neck).
Gah! I expostulated, and promptly automated the process via my old pal RoustaboutXT and some Python.
Why do I never, ever see this process at work in software development? At least in the fields I’m familiar with? I am still utterly wog-boggled to have worked with ebook-gadget designers who had never so much as read a print design spec, never mind actually talking to a typesetter or anybody like that. (Other than me, I mean. Most of the time I was ebooking I wasn’t a typesetter anyway.)
What we seem to see instead is developers beating their breasts about what “users” (er, which users? doing what tasks? why? hoping for what result?) do and don’t do. No developers actually sit down with a secretary, or a typesetter, or an editor, or an accountant, to find out what they do, much less learn to do it.
(Not to mention that the Cult of the Programmer mandates that Real Programmers be computer hobbyists from youth. Real Programmers are never ex-accountants or ex-typesetters. Heaven forfend they should be ex-secretaries! Like, er, me. Yes, I know the Cult of the Programmer is not exactly representative of the entire field, but it does wield significant and in my opinion excessive influence on commercial-programming and open-source practices.)
In short, software developers miss out completely on all the “$DEITY, you do that by hand?” moments.
Even the Alan Cooper brigade doesn’t seem to favor (or even talk of) direct experience feeding into software design. Instead, developers sit around and imagine what real people in real jobs do. That such imaginings all by themselves are a vast improvement over what has gone before is a pretty strong indictment of software development, to my way of thinking.
(Adherents to the Cult of the Programmer too often display a lamentable contempt for the implicit knowledge in other professions, incidentally, while vociferously insisting that no one else in the world is capable of absorbing theirs. Definitely this is part of the problem.)
This is my answer to one of Liz’s commenters, who asked just what there was for software people to do these days.
Learn what other people do. Not what you think they do, not what they think they do—what they actually do do. Then make it easier for them to do it. Then profit. Hugely. Isn’t that basically what programmers have done for themselves with open-source compilers and libraries and IDEs and APIs?
I mean, imagine a commercial software company targeting a particular industry that sent its people on six-month internships to companies actually in the industry. I grant you most jobs you don’t learn in six months, but you surely do learn enough to come back with lots of $DEITY moments and bright software design ideas.
The next Microsoft. I’m telling you. Huge.
I’d take a job as one of their intern-type people, too. I like to learn how things get done.