I expect nothing less than love and affection of my coworkers
-- Rupert Thomas, Technical Architect
The simplest model of communicating software involves one person writing machine language. The movement of hands is translated into images of strings of zeros and ones which are deciphered into a causal relationship between analogue currents. Hold my denotations. Language defines causality. Magic is made out of byte strings.
The isomorphism between boolean logic and diagrams of relay switches and thus the possibility of implementation of digital logic in hardware might form the content of the most consequential master thesis in history. Yet, it forms only a small subset of the communication of and about software. The art of computer programming understood as writing algorithms for MMIX is as necessary as it is inconsequential.
Time of machines and people involved in the process of programming computers is spent on listening and talking, reading and writing as well as synthesising and observing technical images. We speak and listen during standups, retrospectives, product reviews, backlog groomings, planning sessions, company gatherings, meetups and coffee breaks. We write and read computer programs, their types, documentation, tests, infrastructure, configurations, scripts and Jira tickets, always translating one description into another. We synthesise and watch images of ASCII characters, designs, latencies, customer acquisition funnels, counts of errors and responses.
Those acts of communication happen in a myriad of languages both natural (English, Polish, emoticons and dev-speech) and artificial (Java, Haskell, Javascript, JSON, SQL, YAML, Dhall, Bash). Some of our communication acts divide us into a passive audience and a broadcaster in a cooperative discourse (think all-hands, podcasts, PowerPoint presentations, build pipelines and discussions with thought-leaders on social media), some engage us in a dialogue with humans, integrated development environments, compilers, Prometheus dashboards and command lines.
Programming computer systems is an immersive, total communication experience which takes over most of our senses and our minds. It engages us motorically, emotionally, socially and intellectually.
The art of software development - as practised by programmers, product owners, designers and business analyst - works with affects, attention streams, knowledge and creativity. Working in a collaborative environment elaborating information about information systems, which means communicating software, is working on the intersection of economies of attention, affects, knowledge and late capitalism.
The extension of the domain of communication in software development to include a broader spectrum of methods and content can be seen all around us. It expresses itself in the rise of XP and agile methodology, the growth of open source communities and the emergence of modern software architectures which reflect the communication practices of organisations. It can be read from a book by intersectional feminist, agile manifesto, Google's Project Aristotle and diagrams of microservices.
If you ever wonder why you barely remember what you did yesterday and it is standup time - do not worry. Whatever it was an emotionally exhausting experience of being on one end of a discoursive one-to-one, negotiating a pull request review, hours spent on trying to grasp the relation between code, documentation, deployment pipelines, a report about an issue in a system and the mythical system in itself, excitement of pair programming or just enjoying lonely tinkering - the sheer amount of affects, attention and information to manage is mind-bending.
Yes, it is hard to distinguish between expressions of affects, technical and domain expertise or external attention management. Look at yourself and look at others. Ours is not just a knowledge economy. The ancients inscribed - know thyself - upon their RNG temple. In the brave new world of agile teams, dev-ops, big data and full-spectrum development, we need not just knowledge and ingenuity but most of all - compassion and focus.
Cheer up, you are doing well.