UCL Research Domains


Together We Create - Episode 5

The social life of programmers

In this episode, we are joined by Dr Gui Heurich.


Lili Golmohammadi  00:04

Hello and welcome to Together We Create a podcast about collaborative social research. My name is Lili Golmohammadi, I'm a collaborative researcher working across design technology and social research and a final year PhD student at UCL. 


Lili Golmohammadi  00:20

In each episode, I will be talking to an early career researcher at UCL to find out more about how and why social researchers collaborate with engineers, scientists, health practitioners and designers and hearing about their research stories and top tips as we discuss the benefits and challenges of taking a multidisciplinary approach. 


Lili Golmohammadi  00:43

In this episode, I'm joined by Dr. Gui Heurich. Gui studied anthropology in Brazil and in 2016, he joined UCL Social Anthropology with a British Academy Newton International Fellowship. In 2019, he retrained as a professional software engineer, but in 2020, returned to UCL with a prestigious Leverhume Trust Early Career Fellowship. Gui, you had a bit of time away, where you retrained as a professional software engineer, and you you worked a little in that area, didn't you? But what pulled you back, how did your anthropology pull you back to UCL?


Gui Heurich  01:19

Yes, so before, before coming back to UCL, I retrained as a software engineer, and I spent some time working as a professional software engineer, both as a as a way of trying to understand and to know a bit more what that area is like. I had some time before I was going to come back to UCL and start this project. And I thought it would be a good idea to get some professional experience. My idea was just that the more experience I would have in different areas, in different ways in which you can work as a programmer, then that the best would be for the project itself. It's also even though I was not formally, if you will, or institutionally doing anthropology at that moment, having that professional experience also felt like doing anthropology to me, as in anthropology's something that you learned by going to a place and living and doing and trying to live life like the people that you're trying to think about live their life, so working as a professional programmer just made sense.


Lili Golmohammadi  02:23

So Gui's projects, Code::Anth explores programming in computational cultures, and focuses on a programming language created in Japan in the early 90s called Ruby. So Gui, can you tell us a little bit about the Ruby programming language and why you chose to study it?


Gui Heurich  02:37

Yeah, Ruby is an amazing language. It's the first language that I learned properly. It's what's called an object oriented language and it was created in Japan in the 90s by Yukihiro Matsumoto, which is an open is known as Matz in the sort of programming world. And the idea of Ruby is to be as close to the English syntax and sort of keywords as you can. And that is basically to get people to, to learn it you know easily. The reason I guess the reason why I chose it for the project was Ruby is quite a niche language as well. It's, it's it's used a lot in sort of training courses and things like that. In Japan, it's used for a lot of different things for launching rockets, for a lot of different things, but mostly around the world it's used for web development. So web applications and things like that. And the reason why is because it was easy to just get an application up and running, and get things going. But the reason why I chose it was, well, two things: one, because the idea that a programming language could be similar to a natural language like something that Ruby programmers often say, a Ruby is, is exactly like English, or it sounds like English, or it looks like English was very interesting, because well what programming languages and natural languages are obviously not the same thing so trying to make them be a bit similar, it's just very interesting. Because you have to imagine that there are always two ends of who's reading computer code, right? So on one end, programmers, human or computer programmers are reading that code. And on the other end, computers are reading that code and trying to execute it. So it's always a balance between from which side, you're trying to read that code. So the idea that you could have one language that works both for computers and for programmers and look like English sounds very interesting. And it proved to be interesting so far, I think. And the second reason was that Ruby, as I said, like Ruby is a bit of a niche language is not as huge as some of the other languages that you often hear about Python, JavaScript, or even more traditional languages, I guess like C. And these languages have enormous communities and so many users, so many people using it. And I think that that's probably a bit from my background in anthropology, especially doing anthropology in the Amazon, where I did before and trying to find a smaller, more contained community, if that makes sense. Yeah, so finding a language there, like Ruby that has a really tight and really beautiful community. But it's not massive, if that makes sense? 


Gui Heurich  04:03

So I've been reading some of your blog posts on a project website, which I would really recommend and I also really love the title of your blog posts. So things like "embarrassing words," "chunky bacon," and "not my type," I'd really recommend people go and have a little read of those, because they're really fun. And they do kind of ignite a sense of curiosity in the Ruby programming language and programming languages in general and I certainly learned a lot from reading them. So thank you for writing those. [laughs]


Gui Heurich  06:01

Thank you. I think it's nice to mention actually something about how that happened. Because I didn't I didn't set out to, like, have a blog at the beginning of the project. And it came through conversations with the Ruby programmers asking me how I was going to make that research public, how I would make the results available. And one of them suggested like, well, why don't you write like a small small blog or something that you could start sharing this instead of waiting till the end, and then people can start interacting with you and then giving you feedback on it and then we can, we can learn a bit more about how the research is going. So I think that's - it's something that came from the conversations with programmers, I guess, which is something that is probably important in doing interdisciplinary work, where you kind of have to be open, to change everything really, to change the way you're going to present things to change the methods that you're using, to change some of the focus of the research while you are doing it. It might be a bit scary to to change what you set out to do at the beginning, but it's just part of the process, I guess.


Lili Golmohammadi  07:07

Yeah. And makes it enjoyable and accessible for other people. And yeah, the way you capture those conversations, because you include sort of snippets of what people have said, and from whether it's from conferences or you've attended or conversations that you've had, or conversations online that you've read, you kind of thread them together really nicely and communicate this, this living community really beautifully I thought.


Gui Heurich  07:32

Thank you. That's, that's really nice to hear.


Lili Golmohammadi  07:35

So from reading your one of your your blog posts, yeah, you were kind of saying like how it's not yet overly formalised. Like it's still got that fluidity because they haven't put in too many rules and restrictions. Is that correct?


Gui Heurich  07:47

I think it's more that they've, they've avoided a lot of things that make languages faster. But that make them a bit harder to read. So if you add more brackets and braces and semi colons and things like that, you end up with a faster code, because it's... you can give instructions to the machine more easily like that. But at the same time, it's harder to read, it's harder to find what what you need to do in that code. And what what the Ruby developers has tried to do was to create things that even though they might run a bit slower, or they might be harder, I guess, for the computer to read, they are easier for human programmers to read. So you're able to remove some of the brackets and create code that sounds a little bit like English.


Lili Golmohammadi  08:42

And from what I understand it's it's quite accessible for beginners as well. Beginners to coding. It's that right?


Gui Heurich  08:48

Yeah, yeah, 100%, I think if you need one example. But if you, say you need to get a data object from from a year ago, you could do that in various ways in different languages, but in Ruby, if you do the number 1.year.ago, it will give you a date object from one year ago. And that's just a very intuitive and very simple and beautiful a lot of Ruby programmers would say to work your way with with data and with coding. Yeah. And of course, there's, there's a limit to that, right? So if you think sure that there's that sounds a little bit like English, but it's not exactly like English and so one of the questions that I've been trying to pursue is, what is this "English" that we're talking about here, right? Because it's definitely not the definition of the English language that I guess linguists or sociolinguists even would, would use right. And then and then becomes very interesting to see to think about, like, what is this English really?


Lili Golmohammadi  09:51

Yeah, so fascinating. So what are you hoping to find out with this project?


Gui Heurich  09:55

I think I'm hoping to find out two things. So one is what are the shared values, what are the cultural values that Ruby programmers have and share? And how do they create those values? And how is that related to more general or programming cultural values, right? So what is specific about the Ruby community? And the other thing, the other thing that I would like to get out of this project is how can anthropology and programming intersect in different ways, right? So what are these - what are these intersections between programming and anthropology? How can learning to program feed back into the way we do research in anthropology? And how can anthropology sort of collaborate to think about communities and, and these shared values in programming, right? So that's perhaps one of the hardest things. But that's one thing I want, I would like to get out of this project.


Theme music  10:55


Lili Golmohammadi  11:01

In this podcast series, we're exploring different ways of doing collaborative social research and so I want to talk to you about how your research actually works. So you're quite unique in that you're both as you were saying, you're both an anthropologist and a programmer and software engineer, how do you bring the ideas and methods of anthropology and computer science together in Code::Anth?


Gui Heurich  11:20

I guess quite often into this interdisciplinary work works by bridging people - two different people from different backgrounds, right? So one way I guess, of exploring all these questions would be to get someone from computer science and get someone from anthropology and then create a dialogue there. I took a more unusual route, I guess. So the way I've been doing this is, firstly, by using ethnography, which is the main sort of methodological approach that anthropologists use in trying to learn how what programmers do. So that means working with programmers, which I did in a startup for about a year doing field work, working on a daily basis on trying to solve programming problems, and trying to understand what it is to, to be a programmer, right, and to work and learn it with them while doing that. I've also added on top of that interviews, and more like longer in conversations and interviews with programmers have about their lives and about their journeys and about what it means to be a programmer. And the other side of this would be a guest to get anthropologists to program a little bit more. And that has proved to be quite tricky so far. It's been much easier to get programmers to think anthropologically, if that makes sense, then to get anthropologists to do some programming, which I think is very interesting. And I still, I'm still to build those, those bridges. But yeah, I think it's very interesting. It's been quite challenging in that sense for the project.


Lili Golmohammadi  12:58

Yeah. Because I imagine I'm not an anthropologist, but just as someone who I'm new to the idea of learning some coding, it seems very intimidating and do you think it's just like a fear that stopping anthropologists when you're saying it's difficult for them?


Gui Heurich  13:16

I don't, I don't know. I think I think there is a bit of a fear of what programming might be. But I think anthropology and the social sciences more generally have been quite critical of programming for really, really good reasons. For example, when exploring racial bias and exploring gender bias, and exploring how data is being used, and how people are unaware of how their data is being used and all those issues have been looked at really, in really interesting ways in anthropology. But I think that that has also created the feeling that programmers, coders, whatever you want to call them, it's that we would, we wouldn't get too, too close. So we don't want to get too close to what those guys do, if that makes sense. And I think that's been the main challenge so far, to getting more anthropologists to discuss this, even though to be honest, when I do give talks, and I do present, people are generally interested, but it's been hard to get more anthropologists to be interested in learning to program and to think about it like that. I guess that's been the main challenge.


Lili Golmohammadi  14:25

So say, I sat down, I did really try to learn Ruby, and I got better at it. Yeah, I imagine it would just give me a much deeper understanding of the culture that I'm studying the understanding of the discussions that are going on about the coding, and I imagine it once you get into it, it does become a virtuous circle and you get more and more engaged and your understanding this language that you're studying and the process of its evolution, your understanding is much richer through doing that.


Gui Heurich  14:55

Yeah. 100% 100% I think to me, like learning to program has more than anything allowed me to pose more questions, each thing that you learn, allow you to ask more questions which are not necessarily more technical, right? And that's just feeds into your learning. So I guess going back to your previous questions, I guess a bit of the fear is that programming is this huge block of skills that you need to learn everything. And then once you've learned it, then you complete it at some sort of journey. And I think what I've learned, at least from programmers is that there's a constant need to learn. And you'll never learn everything there is to be learned about computers, about programming, about the history of programming languages, or techniques, right? You get comfortable, up to a point, but the most important things is to learn what you need to do what you need to do. And I think that's something that programmers focus on a lot, which is probably that programming is about building things. I think perhaps that's a little bit of the fear that we have in anthropology as well, because we're, maybe we're not that used to building things. But once you start, and then you learn a little thing that you need for that specific project and then you move on and learn a new thing after that. So yeah.


Lili Golmohammadi  16:12

Yeah. Sounds great. [laughs] I want to come and do that.


Theme music  16:17


Lili Golmohammadi  16:25

So as part of the UCL Festival of Code, you brought together a panel of computer scientists who work with different programming languages to debate the cultural values of programming, what was the main thing that you learnt from that collaborative event?


Gui Heurich  16:38

That was an amazing event, we had four, well five including me I guess, programmers talking about the Ruby community, the Python community, R, Julia and Fortran. They are very different languages with very different histories. Fortran has been around since the 1950s. And of course, Julia, perhaps being the most recent language of those. But I guess the main thing was that I learned was that there was a lot of interest in talking about those differences between programming languages, those shared values, those cultural values, and the history of programming languages amongst programmers, they are really interested in talking about that. 


Lili Golmohammadi  17:20

Could you give like, just one example, a concrete example from that?


Gui Heurich  17:25

Yeah, I could. I think, for example, in Ruby, there's a lot of emphasis in writing code, and solving specific programming problems in the way that you would like to do it, there's an emphasis on allowing programmers to do it your own way. In the Python community, for instance, the emphasis is not on that sort of freedom, if you will, the emphasis is on. There's one way in which the community decided that there's one best way of solving different things. And you should always do it like that. And that, of course, you can extrapolate, and people do extrapolate and say, well, and then Ruby is about giving programmers freedom and Python's about restricting programmers. And then those debates are obviously endless. But my point is that they're not just endless, but they're interesting, right? Because they show how different perspectives on the world inform how programmers work. And conversely, as well how different programming languages inform the way in which people think about the world. So if you are working on the language that you believe gives you more freedom, you might think about politics in a different way, I guess. And those things are connected some time.


Lili Golmohammadi  18:43

I'm hoping that you can offer some advice for other social researchers who want to do collaborative research with computer scientists or other disciplines. So what qualities and skills have helped you to move between the different research perspectives of anthropology and computer programming?


Gui Heurich  19:01

I think the main thing you need to do is to have empathy, and to choose something that you're genuinely interested in, don't just choose something because you want to criticise it necessarily, or not. From your initial perspective, I'd say I think that learning something that is completely different from what you've done, I think requires something like, it requires a suspension of judgment, if that makes sense? So requires you to pause that judgment for a while. And, you know, go and try to learn what it is that you need to learn. But yeah, I guess choose something that you're passionate about. And that you feel that you want to learn more, that you really want to to engage with. And then yeah, just trying to find that that sort of empathic approach. I guess that's the main idea.


Lili Golmohammadi  19:56

So with you, I guess it was you had come from this background in anthropology sort of it was kind of like social anthropology with an interest in linguistics. And then you from what I understand then that kind of tied into this almost like side interest you had in programming and then you went away learnt a bit of programming, and then you tied those together into your new project. I suppose what you're saying is it's like this gentle, snowballing effect and kind of allowing things to build on each other and staying aware of things that might be your side interest for now, but then might be something you go away and learn a bit more about and then that feeds into a bigger project that becomes your focus. 


Lili Golmohammadi  20:40

You've been listening to Together We Create this episode was presented by myself Lili Golmohammadi and produced by Cerys Bradley, I was joined today by Gui Heurich, if you want to find out more about his research or the podcast series, please follow the links in the description. This podcast is brought to you by the UCL Collaborative Social Science Domain.