Saturday, July 9, 2016

Should digital humanists know how to code?

From Alverado Rafael Alvarado, The Code Problem:
The first is to learn for the rea­son that Tim Berners-Lee exhorts jour­nal­ists to learn–you need to know how to use tools to manip­u­late data because knowl­edge is increas­ingly pro­duced as data, that is, in more or less struc­tured forms all over the web. This is because the future of the human­i­ties “lies with jour­nal­ists human­ists who know their CSV from their RDF, can throw together some quick MySQL queries for a PHP or Python out­put … and dis­cover the story lurk­ing in datasets released by gov­ern­ments, local author­i­ties, agen­cies, dig­i­tal archives, online libraries, aca­d­e­mic cen­ters, or any com­bi­na­tion of them – even across national bor­ders.” [...]

The sec­ond rea­son to learn to code is philo­soph­i­cal. You should be able to write code–not nec­es­sar­ily pro­gram or, God for­bid, “develop”–so that you can under­stand how machines think. Play with sim­ple algo­rithms, parse texts and cre­ate word lists, gen­er­ate silly pat­terns a la 10 PRINT. Get a feel for what these so-called com­puter lan­guages do. Get a feel for the propo­si­tion, to which I mostly assent, that text is a kind of code and code a kind of text (but with really impor­tant dif­fer­ences that you won’t dis­cover or under­stand until you play around with code). This level of knowl­edge does not require any great mas­tery of a lan­guage in my view. It only requires a will­ing­ness to get one’s hand dirty, make mis­takes, and accept the lim­i­ta­tions of beginner’s knowl­edge. I per­son­ally believe that this sec­ond rea­son is as or more impor­tant than the first.
OK. Moreover:
To get to this place with code, to be able write sim­ple scripts that are use­ful or inter­est­ing or both, you don’t need to do many of the things your cod­ing brethren think you should do. First and fore­most, you don’t need to learn a spe­cific lan­guage unless there is a com­pelling local rea­son to do so, such as being in a class or on a project that uses the lan­guage. [...]

Sec­ond, you don’t need to be involved in writ­ing a full-blown appli­ca­tion to do DH-worthy cod­ing. Appli­ca­tions are fine, and being on a col­lab­o­ra­tive project has huge ben­e­fits of its own, but know that appli­ca­tion devel­op­ment is a huge time-suck and that appli­ca­tions are like restaurants–fun to set up but most likely to fail in the real world. Lots of DH cod­ing projects in my expe­ri­ence are jour­neys, not des­ti­na­tions. [...]

Third, there is no rea­son ever to be forced into using a spe­cific edi­tor or cod­ing envi­ron­ment, espe­cially if it is a dif­fi­cult one that “real” coders use. [...]

Beyond these spe­cific prob­lems, though, there is a more fun­da­men­tal issue about the cul­ture of code that con­tributes to the con­di­tion that Miriam [Posner] and oth­ers con­front: in spite of the well-meaning desire by many coders to bring every­one into the cod­ing fold, there is a coun­ter­vail­ing force the pre­vents this from hap­pen­ing and which emanates from these same coders. This is the force of mys­ti­fi­ca­tion. Mys­ti­fi­ca­tion appears in many forms, includ­ing some of the things I just described–insisting on a dif­fi­cult edi­tor, diss­ing cer­tain languages–but it more gen­er­ally comes from treat­ing code com­pe­tence as a source of iden­tity, whether it be per­sonal or dis­ci­pli­nary. As long as dig­i­tal human­ists regard cod­ing as a marker of prestige–and soft­ware as a token in the aca­d­e­mic economy–and not as a means to other forms of pres­tige (such mak­ing dis­cov­er­ies or writ­ing books), then knowl­edge of cod­ing will always be hedged in by taboos and rites of pas­sage that will have the effect of push­ing away newcomers.
Addendum (7.11.16): From an interview with Pamela Fletcher in the Los Angeles Review of Books:
No, I don’t think you necessarily need to know how to code to do meaningful digital humanities work, not least because collaboration is a central part of DH work and the idea of people bringing different skill sets — and research problems — together is one of its core strengths. Yes, because as a humanist I am deeply committed to the idea that in order to communicate with other people you need to speak their language, and coding is the language of computation. In our new Digital and Computational Studies curriculum at Bowdoin we are starting from the premise that every student who goes through our program needs to understand at least the underlying logic of how computers work and the many layers of abstraction and representation that lie between binary code and what you see on the screen. This is partially about communication: you need to understand what computers are (and aren’t) good at in order to come up with intelligent computational problems and solutions. But it is also because each stage of computational abstraction involves decisions that are essentially acts of interpretation, and you can’t do meaningful work if you don’t understand that. This is equally true, of course, of anyone who uses technology, which is most of us. So I’d say ideally we should be educating all our students to be computationally literate, which is not the same as being expert programmers.

No comments:

Post a Comment