4.3 KiB
Coding contingencies
TODO:
- adjust second paragraph to better address audience
- rephrase quotes ?
- outline of chapters is:
- Lowering barriers to
- Welcoming diverse knowledges to
- Orientate software in the world
How do you choose a particular programming language, a coding paradigm, a development environment, an infrastructure where to run the code, and so on? These are not just technical choices, but rather coding contingencies.
The IT class in a public school. The job requirements for working in a tech company. An Arduino board received as gift for birthday. A colleague passionate about experimental music that drags you to a live coding concert.
These contingencies are situated in specific contexts.
Programming then is not just sharing code, but sharing context. A significant statement about our relationship to the world, and how we organize our understanding of it (Ullman, 2017). A perspective to look at reality, before attempting to get some grip onto it with a script. A way to deal with both the software and hardware circumstances of code (Marino, 2020), but also engaging with the sociality and communities around it.
It's an approach that helps us to think about software as a cultural object. Something "deeply woven into contemporary life –economically, culturally, creatively, politically– in manners both obvious and nearly invisible." (Software Studies, 2009), and not just as technical tool existing in a vacuum.
An object that, in turn, can be used to probe its surroundings. Who is developing? Who is gonna use it? Who is paying for it and why? How is it structured? It is a big and centralized system or a loose collection of small and interchangeable tools? How long is it supposed to last? How can be fixed if it breaks?
The main focus of this research is to explore software documentation as surface where this kind of questions can be addressed. A place where the complexity of code doesn't blackbox ideas, and choices behind development can really be open source.
A way to situate programming in specific contexts.
Documentation brings an understanding on software by disclosing its magic. It reveals what can be done with it, and where are the limits. By lowering barriers and creating entry points, documentation broadens participation. It reaches not only beginners, but experienced programmers as well. It affects thinking about software continuously, and from different perspectives.
Documentation is a space that interfaces between the code, the user, the developer, and the world. A space where to welcome different voices: not just engineers, not just experts, not just dudes. A space to acknowledge the massive labor of care besides technicalities, often marginalized by coding culture.
A surface that could host principles in close contact with algorithms, letting them entangle and shape each other. A way to orientate our instruments towards "non-extractive relationships, but in the meantime, being accountable for the ones they are complicit with." (A Wishlist for Trans*feminist Servers, 2022)
Homework
Software documentation
While I do think that this research relates with technical writings in a broad sense, the approaches and methods proposed here are mostly informed by the worlds around coding documentation. When reading, please bind the terms software, application, program, etc. to code. Software documentation? Code documentation. The perspective of this text is more aligned to the docs of ImageMagick than to the ones of GIMP. The concepts of worlding, political aesthetic, and critical thinking apply to all kinds of manual. Nonetheless, it's probably going to be way easier to read this if you picture it figuring documentation for code and programming.
For developers
I would like to blame the Capitalist Realism we are surviving in for this (probably not the case). For people to get identified with their profession. And the other way around: for activities being doomed by the aura of professionalism. Who is a developer? One who programs for a living or one who lives for programming? (based)
Here a developer is someone tinkering with code. 1. one choose to participate 2. Expertise doesn't matter. Documentation is both a beginner and experienced user-friendly surface.