cultural coder is a collection of writings about the human aspects of computer programming. It uses the cultural anthropology as a primary way to analyze the field of software development as seen by the actual developers. My name is Krzysztof and I try to better understand what I am actually doing when I do program.
Ok, but what is it for? Should anyone even care?
I’ll try to answer by sharing a story.
Let’s talk about identity.
I’m a mobile programmer. I write apps for phones and tablets. This is how I find myself introducing my very self most of the time. Each of us, me included, can call themselves many things. We play so many roles. Yet I’ve mostly settled on “a programmer” before anything else. How come?
Certainly, programming is what a majority of my time is spend on. Full time job. Part time side projects. Fun time hacking. Reading countless books and articles. Watching conference videos. Listening to podcasts. And, above all, throwing hours and hours worth of thoughts at issues that software developer encounters every day.
But it wasn’t always like that.
It all started in a strange world of blue and yellow. One could easily count the pixels that the letters were made of. The caret was bulky and blinking. The world was called Turbo Pascal and I ruled that world. What a thrill it was to see things happen the way I intended them to happen! Each change I’ve made was making an impact. I was 10 or 11 at that time and I dreamt of becoming a writer. So I tried to write a text-based RPG. I failed – the code, although terrible, was working, but I got stuck on the script. The memory of the thrill, however, got stuck in me as well.
During highschool I had become fascinated with music. When it came to choosing the university programme, acoustics and multimedia appeared a no brainer. There was a reasonable amount of programming during those years – it was a technical university, after all – but it has never been a central subject. Noone had ever spoken about the thrill from the blue and yellow world. Actually, it was quite the opposite.
The tale went as follows: programming is the most probable, yet the least attractive job to get. It’s basically a mild form of failure in finding the more interesting, more demanding and more challanging path. A sad programmer1 is gonna sit in front of a computer for a whole day, working on problems that had been already solved, implementing the well-known solutions in an ineffective process of human labour that should be, and very possibly will be, replaced by the machines.
The way I see it now, what I’ve encountered back then was a particular discourse about programming. I didn’t know the word at a time2. However, what did become known to me as I’ve started working as a programmer was that the software development is a fascinating field full of ideas, challenges and discusions. “How is it possible?”, I thought, “Was a sad programmer a myth? A lie? A stereotype?”.
The further I got, the more questions arose.
Why did the movement aiming at improving the professionalism among developers adopt the medieval craftsmen as their role models? Why do developers create the meetups and communities, and why are these meetups so similar to one another? What drives people to contribute to the open source projects? What made the extreme programming techniques widely acclaimed while they seem counterintuitive and difficult to adopt? Why are there so many programming languages and how to choose between them? Why are there so few women in IT? What is the idea behind hackathons? Why is everyone so willing to believe in startups? Why do we constantly try new libraries and frameworks? Why do we write the same bugs again and again and again?
I want the answers. “Sure”, one might say, “but software development is a huge field and the answers might vary. What do you want to focus on? How are you exactly going to approach these questions?”. Fortunatelly, there is one perspective, one thought framework that I’m already familiar with: cultural anthropology. Even more fortunate, this is the very perspective that I’ve found constantly lacking in most of the writings and discussions on programming. It’s a shame, since I believe programmers and anthropologists could learn a lot from each other. Here is why.
Working as a mobile developer, I constantly need to analyze what’s going on. Why is my code not working? How is the memory leaking? Why are those tests not passing? What thread is this database accessed from? What causes this crash? Why does this framework return no results? How is this object implemented? How to model this domain idea? Programming is a constant loop of agency and reflection. Acting and receiving feedback. Then further acting upon that feedback and receiving another. This is how I move forward when writing code and I believe this is how we all do. The feedback loop might vary in size and nature, but the basic scheme of interacting with the machine remains. And the sole purpose of the feedback loop is to bring the understanding of how the system behaves.
For me, anthropology is all about striving for understanding. Unveiling what’s behind the surface. And questioning the obvious.
Imagine that you’ve been reading the source code of a framework that you use and the reason for it not working the way you expected has suddenly become obvious. Have you ever gone through one of those “bingo!” moments? For me, sometimes it was a bug in framework, but way more often I’ve just developed a wrong mental model of how the thing should be used in the first place. Questioning that very mental model was required to get the code to work.
This is exactly where the cultural anthropology excels. It provides lenses to spot things previously unseen. There is nothing that’s not worth discussing. It’s by no means the only perspective that we might use to analize programming, but it seems that it might tell us something new and exciting.
So here is why a programmer might be interested in cultural anthropology. But why might a cultural anthropologist be interested in programming?
The answer is even simpler. Software development is a area of human activity that has developed its own culture. Its discourses, phenomenons and rituals might all become a subject of anthropological analysis. And, most of all, it’s not a dehumanized, abstract, math-oriented field driven by technological advancements. It’s an everyday reality of millions of people who vary in their attitudes, opinions and actions. Their strategies and tactics, their ways of dealing with the problems they encounter, their decisions could all be better understood and described. Their voices should be presented and explained to the outside world. Otherwise computer programming will continue to be perceived as hermetic and non-penetrable by a non-insider. I believe this should not be the case.
Of course I’m not the only person that feels that way. There are vibrant fields of software studies and computational culture, women and technology studies, anthropology of computing and many more. All of them bring some wonderful perspectives on the subject and I’m thrilled to dive into each. I’m not going to lock myself under any particular label that was developed mainly to fit the hierarchical structure of the academic world and university organization. Anything that is gonna shed some light on the human side of computer programming, I’m happy to follow.
I very much appreciate if you join me.
This was the actual phrase I’ve encountered multiple times. All the worst imaginations of 9-to-5 corporate life generalized to the whole community. ↩
Well, do I know it now? It’s a major simplification and a loose spin-off from discourse theory, but, shortly said, discourse is all that is possible to be said and thought about a particular topic. So you might live in a discourse that constitutes that the rich are harming the poor, and it’s unspeakable and unthinkable to see it any other way. After all, everybody knows this is true, right? It’s obvious, right? It’s natural, right? Well, that’s discourse. ↩