Programming as work and crisis

Ved Olav W. Bertelsen
Lørdag kl. 16.30

Programming activity is central in the production of IT based systems. The outcome of programming is executable code. Examples range from embedded software in everyday appliances to complex control systems. Programming is expressed in a programming language. Programming languages vary in expressive power and level of abstraction. Historically programming languages have evolved as layers on top of the physical computers structure consisting of logical gates constituting the CPU and some memory for data storage.  Inspired by Bærentsen (1989), the evolving generations of linguistic constructs can be understood as crystallization of action with a previous generation of linguistic construct. E.g. symbolic assembler languages crystalize the manual memory allocation book keeping. Over the last 70 years a large number of programming languages have evolved, supporting specific perspectives or tasks. Many programming languages seek to support elegance of expression and efficiency. Some languages rather prioritize easy and understandable programming, type checking and safe data allocation. Together with programming languages, programming work is mediated through programming environments, including editors and debuggers, mediating the relation to the code, the programming language as such as well as the running code/the system. Often, programming is understood as an individual endeavor, but in reality, the individual realized acts of programming is most often part of a socially mediated process of work with a high degree of division of labor over time and across a collective practice. While tools for cooperative programming