Rory Solomon is a media scholar, software engineer and artist. He’s currently a PhD candidate in the Department of Media, Culture, and Communication at NYU, and Adjunct Assistant Professor at Parsons The New School for Design and the School of Visual Arts. Rory has developed database-backed websites for Bank Street College of Education and the New York Review of Books, and was Technical Lead of the Urban Research Tool: a web-based mapping platform for geospatial humanities research. His work focusses on software epistemologies: how computer programs shape knowledge and society. Rory recently completed his Masters in Media Studies at The New School, where his thesis “The Stack: A Media Archaeology of the Computer Program” received an Award of Academic Achievement.
The Promise of Software Engineering: Laboring in the Stack
These days it seems that everyone wants to learn how to code. Computer programming is a media practice imbued with heady notions of empowerment in our digital age. Software engineering education initiatives proliferate – from startups to government programs to independent academies. But it is precisely the current unchecked enthusiasm for this form of making that should motivate us to cast a critical eye. After all, software engineering is a discipline, and becoming educated within this is a process of disciplining oneself. What are the values embedded in this field? What are the epistemological frames into which one must enter to develop a programmer way of thinking? And what are the sites in which this occurs? Programming education is not simply learning a particular language syntax, but rather a process of orienting oneself within a complex field of technical and intellectual infrastructures.
This talk will critically consider these ideas within the context of a software structure known as the stack. The stack is a diagrammatic that we encounter in several places within computational media: it is a model of how functions are recursively evaluated in the theory of computation, a data structure used by many common algorithms, and the way protocol is implemented within networked systems. The stack is also a diagram often used in non-technical contexts to illustrate how software systems are implemented: from “low level” components (physical hardware, operating systems) up to successively “higher levels” (applications, user interfaces, users themselves). The stack illustrates how the lower-level systems within which we code provide frameworks of facilities upon which higher-level systems are built; and while these lower-levels always constrain and precondition the higher, they also create new metaphors and abstractions, hiding various low-level operational details which then free higher level systems to function in new and creative ways. The software developer then is always simultaneously both programmer and user. Through this lens we can see the power of programming as a kind of creative tactics: the paradoxical openness that comes from working within the constraining aspects of a given system, but that is always partial, contingent and negotiated.