Working Towards a Definition of the Philosophy of Software

Article Information

  • Author(s): Chiara Bernardi
  • Affiliation(s): London Metropolitan University
  • Publication Date: 28 September 2012
  • Issue: 2
  • Citation: Chiara Bernardi. “Working Towards a Definition of the Philosophy of Software.” Computational Culture 2 (28 September 2012).


Review of David M. Berry, The Philosophy of Software: Code and Mediation in the Digital Age, London: Palgrave Macmillan, 2011. 200 pages. ISBN 978-0-230-24418-4

Everyday life relies heavily on networked technologies that allow for a wide range of actions to take place, from the management of medical devices to the withdrawal of money from a cash point. Despite this, what lies behind these technological assemblages – data, code, and software – has received little attention, effectively remaining an off-limits world populated by software engineers, programmers, and geeks. Nevertheless, over the last fifteen years there has been an increasing interest in how software forms society in a way that goes beyond its being more than a set of “inaccessible codes”. This has led to the development of Software Studies, a nascent field that takes into analysis how “the background”, or data and software assemblages, contribute to the world. As David Berry has aptly observed, we are trying to learn “the way in which certain social formations are actualized through crystallization in computer code” 1.

This leads to some important questions being raised. Berry asks “what is culture after it has been softwarised?” 2, echoing Lev Manovich’s questions about “how is cultural production being changed by software and code?” and “how and in what perspective can we talk about “software culture”?” 3. Taking into consideration these and other questions, The Philosophy of Software tries to move towards an understanding of the materiality of software. As Berry argues throughout the book, questions related to digital media are too often discussed in essentialist or contradictory terms, and what is instead needed is to “unpack different modalities of code as digital forms and allow us an understanding of how it [code] is used in computer technology” 4. This can be done through an analysis of the materiality of code, which he defines as pragmata, and by constructing a phenomenology and philosophy of software despite its relatively ephemeral being.

Although Berry doesn’t elaborate on what he means by pragmata, the materiality of code that Berry introduces in the first two chapters of the book becomes somewhat clearer through examples taken from a multiplicity of realities: from the red light at the traffic light, to the world of computer and Internet music in the work of Masahiro Miwa. Following the epistemological framework of Actor Network Theory, and its core concepts of mediation, translation and representation, the book sets out an introduction to understanding what lies behind technological devices. In Berry’s opinion, there is a very fine line between code and software, with the software being “a tangle, a knot which ties together the physical and the ephemeral” 5; his intent seems to be that of presenting a rather approachable “grammar” of code in order to conclude with a complete philosophy of software.

Rich with examples and quotations, the grammar of code as presented by Berry resembles the rhizome with its characteristics of constant expansion over space rather than time (spatiality) and its being made of several layers, with each layer having a certain role in the construction of the overall rhizomatic entity. Although Berry doesn’t discuss the rhizome as such, it is possible to recognise some basic concepts coming from Deleuze and Guattari’s philosophy, along with some Heideggerian principles, such as that of society being infused with technology to the point of becoming a tool of its own tools (from Martin Heidegger’s Question Concerning Technology). The rather confusing mix of theories – the move from Actor Network Theory to Heidegger and Deleuze and Guattari is very rapid – doesn’t clarify how the author wishes to articulate the discursive formation of a philosophy of software. Aside from this, the concept that is worth drawing attention to as presented by the book is that of a “withdrawal”. The impression that a reader could gather from reading into this concept is comparable to that of naturalisation as put forward by Geoffrey Bowker and Susan Leigh-Star 6.

With regards to software code, Berry states that it is hidden from human view but it is at the same time fundamental to the execution of almost any task. Throughout the book it is argued that although code has a “withdrawn” nature, it is indispensable to current societies. In such a digitised world, code and software help construct our experiences or our “knowing-how”. The author explains that what is withdrawn is also the incessant “immaterial labour” made up of programmers’ trials and errors necessary for the writing of code. The final product of such relentless work of code-writing is software. The long list of trials and errors, and the free immaterial labour behind the realisation of the finished software can appear in the form of faults, glitches and crashes. Berry exemplifies such faultiness with the false alarm of a missile attack that took place in Cheyenne Mountain, Colorado in 1979. The alarm software broke and for a few tense minutes, a test gone wrong could have triggered a catastrophe. Such an extreme example brings to the fore a much needed reflection on the world of software and code, an understanding that goes beyond the study or analysis of what makes software work and instead analyses the network of relations (cultural, social, political and intellectual) that such a fault actualises.

According to Berry, code has a double nature: it is both delegated and prescriptive. Delegated code is the source code, while prescriptive code is software (the author also describes software as running code). Prescriptive code is also seen as the product of several lines of codes ready to be executed or to become performative. This layer is created as code, and becomes a signifier of productivity. Furthermore, as it is developed, it is either replaced or upgraded continuously, leading to what the author vaguely defines as “software entropy”. Additionally, it is argued that code is executed as a continual process, because it is highly flexible and may be executed sine fine by programmers. Such flexibility is a requirement for code in order to produce a final working product, while reducing the possibilities of faulty software.

An analysis of the complex network of relations that the “imbroglio” of human and non-human actors creates can only be accomplished if an episteme (it can be gathered that the author intends the term in its classical meaning of knowledge, in which it can be contrasted to techne) in software and code is put in place 7. Such an episteme is rendered necessary if we are to understand computation, or “how our lives are made possible through the application of computational techniques” [8]. Instead, Berry continues, computation is a mediator because it transforms information into digitised data, a virtually infinite grid of numbers that represent reality and makes it possible. In terms of the benefits of computation, the author suggests, that only interdisciplinary approaches to software and the ontology of code can answer such a question. In his view, the ontology of code entails training and educating programmers in order to make computation a true social activity. Therefore, as in linguistics or sociolinguistics, in order to understand the social potential and meaning of a norm or a rule, and in order to discuss the ontology of language, it is first of all necessary to understand the grammar of the language. Berry tries to do this, in a very Saussurian fashion, presenting and analysing the basic elements of a grammar of code. Finally, as Berry has argued in this and other works, a grammar of code is not based on the understanding of writing code but on the analysis of the different layers that make the code become software and make software become the centre of social activity 8.

Berry’s starting point for such an ontology of software is data that, like a letter or an ideogram, is the centre of any discussion related to or involving computation. Digital data is based on series of zeroes and ones that are relevant to the machine, though, in most cases, imperceptible to the human eye. Following the perspective of Actor Network Theory, Berry defines data as a translator because it digitises reality. In other words, he understands data to be a priori analogue, meaning that it is not “natively computational” The author doesn’t further delve into a discussion on how data can be a translator. At a second level there is the code that is, as already discussed, necessary to “make things happen” 9. Code is operative and produces results, due to it’s mentioned double nature. Whereas code is ‘withdrawn, software is machine-readable and is the end product of source code, because it is the product of the crystallisation of code. As with any language, a grammar of code has a social dimension and the author stresses the social, economic and political potential of code and software through two main examples: the work of the Japanese artist Masahiro Miwa and the e-voting system Vote-Box.  In the latter example especially, the author demonstrates how technological devices do not directly depend on manual labour, but rather on the organisation and arrangements of the devices themselves. Such devices, as Berry states, share code that can be read across platforms, perhaps pointing to the fact that through technological device any human activity – from musical compositions to the exercise of the right of vote – can become a field of computation. At the same time, the potential of these devices is factored into the analysis carried out by academics or software engineers, and therefore brings back the issue of “withdrawal”. The withdrawal of technology problematizes the relationship between human and non-humans, which Berry discusses only in the last two chapters of the book where he tries to outline a philosophy of software. Such a relationship inevitably leads to a transformation of our being in the world, a transformation that is related to and caused by our experience of technology as well as our strategies and tactics to constantly negotiate our beings with technology.

In this latter part of the book Berry talks about the changes in the process of rationalisation that code and software bring about. According to Berry, when we act through technological devices we have changed the way we process information. In fact, we rationalise information and thoughts in process and therefore there is an intense and quite relentless flow of information that becomes crystallised through our interactions with technological devices. Despite being immediate and easy to catch, the process of rationalisation is more than a simple act of processing information through technological devices. Berry does not ground the concept sufficiently but it is potentially helpful if linked to the understanding of the concept of ‘withdrawal’ of code and software. In the fifth chapter the author starts delving into an epistemology of software by resorting to Heidegger’s existential phenomenology for which the different ways of being may be understood through the categories of Objects (Beings), Equipment (Dazeung) and Humans (Human Beings). Therefore, through an epistemology of computation, Berry seeks to expand the concept of “withdrawal”. In explaining the epistemology of computing and code, the author terms the act of “knowing-that”, or the way to formally understand and describe the universe, as becoming co-constructive with “knowing-how”, or our way of “finding our way around the world”. The latter is the basis of understanding how technology has become so intrinsically related to society that it is perceived as given and a priori involved with individuals and societies.

The varied information that The Philosophy of Software presents is at times uneasy to digest. The author’s eclectic mix of authors, ideas and concepts leads to an occassionally confusing cocktail of debates on how technology becomes core to social and individual interactions. The long lists of examples taken from the world of coding, such as: Microsoft Windows’ source code, the recurring reference to Masahiro Miwa or Web 2.0 as an example of the grammar of code, sometimes become a distraction for the reader that expects a philosophical discussion aimed at enriching the field of software studies. The overall structure of the book seems to be more of an attempt to introduce and explain the world of code and software, despite the fact that at times the reader is confused by the multiple definitions of software (prescriptive, running and crystallised code) – rather than a theoretical discussion of how software interacts with society, influencing our perception of the world. Additionally, at times the reader is confused by fragmented philosophical and epistemological choices, and underexplained conceptual suggestions, such as that of data as a translator of reality, giving the impression that the writing of the book is somewhat rushed. Finally, the discussion of Hieronimo Squarciafico, editor at the 15th Century Aldine Press, depicted as one of the “enemies” of the press, fails to acknowledge that Squarcifico’s opposition did not stop him from participating in the publication of all the available Latin texts translated by students and academics up to that date.

The Philosophy Of Software is an ambitious book that tries to turn attention to the meaning that code and software assume as part of society and is indeed ideal for a popularisation of software studies. It should be read as an invitation to students or academics new to the field to delve more into philosophical issues concerning the philosophy of software and the role technology plays within society.


Berry, David M. “A Contribution towards a Grammar of Code”. The Fibreculture Journal 13 (2008). Accessed 3 March 2012.
Bowker, Geoffrey. C and Leigh Star, Susan. Sorting Things Out: Classification and Its Consequences. Cambridge, Massachusetts: The MIT Press, 1999.
Deleuze, Gilles and Guattari, Felix. A Thousand Plateaus. Minneapolis, Minnesota: University of Minnesota Press, 1987.
Law, John & Hassard, John, eds. Actor Network Theory and After. Oxford: Blackwell, 1999.
Latour, Bruno, “Pragmatonies: A Mythical Account of How Humans and Nonhumans Swap Properties”. American Behavioural Scientist 37 (1994): 791-808.
Lev, Manovich. Software Takes Command (2008). Accessed 25 February 2012.


Author Bio
Chiara Bernardi is a PhD researcher at London Metropolitan University. She is writing on women’s issues in Egypt and Saudi Arabia and is interested in digital methods, social network analysis and software studies. Previously, she has worked in International Media agencies and has extensive experience of working with corporate network tracking software and the new kinds of PR that make use of social media. She is actively involved with non-profit organisations such as SMWA (Southwark Muslim Women’s Association), European Women’s Lobby, National Council of Women UK and International Museum of Women, in the role of activist, online campaigner and communication strategist.



  1. David M. Berry, The Philosophy of Software: Code and Mediation in the Digital Age (London: Palgrave Macmillan, 2011), 37.
  2. Berry, The Philosophy of Software, 18.
  3. Lev Manovich, Software Takes Command (2008). Accessed 25 February 2012.
  4. Berry, The Philosophy of Software, 51.
  5. Berry, The Philosophy of Software, 3.
  6. Geoffrey C. Bowker, and Susan Leigh Star, Sorting Things Out: Classification and Its Consequences (Cambridge, Massachusetts: The MIT Press, 1999), 196.
  7. Bruno Latour, “Pragmatonies: A Mythical Account of How Humans and Nonhumans Swap Properties”, American Behavioural Scientist 37 (1994).
  8. David M Berry, “A Contribution towards a Grammar of Code”, The Fibreculture Journal 13 (2008). Accessed 3 March 2012.
  9. Berry, The Philosophy of Software, 94.