Summary
Software development is a unique profession in many ways, and it has given rise to its own subculture due to the unique sets of challenges that face developers. Andrew Smith is an author who is working on a book to share his experiences learning to program, and understand the impact that software is having on our world. In this episode he shares his thoughts on programmer culture, his experiences with Python and other language communities, and how learning to code has changed his views on the world. It was interesting getting an anthropological perspective from a relative newcomer to the world of software.
Announcements
- Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
- When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you’ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they just launched dedicated CPU instances. Go to pythonpodcast.com/linode to get a $20 credit and launch a new server in under a minute. And don’t forget to thank them for their continued support of this show!
- You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don’t want to miss out on this year’s conference season. We have partnered with organizations such as O’Reilly Media, Dataversity, Corinium Global Intelligence, and Data Council. Upcoming events include the combined events of the Data Architecture Summit and Graphorum, Data Council in Barcelona, and the Data Orchestration Summit. Go to pythonpodcast.com/conferences to learn more about these and other events, and take advantage of our partner discounts to save money when you register today.
- Your host as usual is Tobias Macey and today I’m interviewing Andrew Smith about his anthropological study of software engineering culture in his upcoming book Adventures In Coderland.
Interview
- Introductions
- How did you get introduced to Python?
- Can you start by describing the scope and intent of your work on Adventures In Coderland?
- What was your motivation for embarking on this particular project?
- Prior to the start of your research for this book, what was your level of familiarity with software development as a discipline and a cultural phenomenon?
- How are you approaching the research for this book and to what level of detail are you trying to address the problem space?
- What are some of the most striking contrasts that you have identified between software engineers and coding culture as it compares to that of a layperson?
- We met at the most recent PyCon US, which I understand you attended as a means of conducting research for your book. What are some of the notable aspects of the Python community that you discovered while you were attending?
- What are some of the other programming communities that you have engaged with?
- What are some of the differentiating factors that you have noticed between the communities that you have interacted with?
- What are some of the most surprising discoveries that you have made in the process of writing this book?
- What is your metric for determining when you have gathered enough raw material to complete the book?
- Now that you have delved into the peculiarities of "coderland", how has it changed your own outlook on both the software industry, and society at large?
- What advice do you have for the engineers who are listening as it pertains to your experiences in writing your book?
Keep In Touch
- Website
- @wiresmith on Twitter
Picks
- Tobias
- Andrew
Closing Announcements
- Thank you for listening! Don’t forget to check out our other show, the Data Engineering Podcast for the latest on modern data management.
- Visit the site to subscribe to the show, sign up for the mailing list, and read the show notes.
- If you’ve learned something or tried out a project from the show then tell us about it! Email hosts@podcastinit.com) with your story.
- To help other people find the show please leave a review on iTunes and tell your friends and co-workers
- Join the community in the new Zulip chat workspace at pythonpodcast.com/chat
Linksj
- Adventures In Coderland
- https://us.pycon.org?utm_source=rss&utm_medium=rss
- Nicholas Tollervey
- 1843 Magazine
- The Economist
- Free Code Camp
- Code Golf
- Moon Dust book about the astronauts who first landed on the moon
- The Face magazine
- The Observer
- The Guardian
- Charlie Duke
- Totally Wired
- Code For America
- Supercollider programming environment
- SonicPi
- George Boole
- FMRI (Functional Magnetic Resonance Imaging)
- Ruby Language
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
Hello, and welcome to podcast. Init, the podcast about Python and the people who make it great. When you're ready to launch your next app or you want to try a project you hear about on the show, you'll need somewhere to deploy it. So take a look at our friends over at Linode. With 200 gigabit private networking, scalable shared block storage, node balancers, and a 40 gigabit public network, all controlled by a brand new API, you've got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they just launched dedicated CPU instances. Go to python podcast.com/linode, that's l I n o d e, today to get a $20 credit and launch a new server in under a minute. And don't forget to thank them for their continued support of this show.
And you listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers, you don't want to miss out on this year's conference season. We have partnered with organizations such as Dataversity, Corinium Global Intelligence, Alexio, and Data Council. Upcoming events include the combined events of the Data Architecture Summit in Graph Forum, the data orchestration summit, and data council in New York City. Go to python podcast.com/conferences today to learn more about these and other events and take advantage of our partner discounts to save money when you register. Your host as usual is Tobias Macy. And today, I'm interviewing Andrew Smith about his anthropological study of software engineering culture in his upcoming book Adventures in Codeland. So, Andrew, can you start by introducing yourself?
[00:01:43] Unknown:
Yeah. My name is Andrew Smith, and I'm a I'm a writer by profession. And, that introduction is an anthropological study is quite a good 1, actually. Although I'm so I've been surprised as I've begun, the research on the book. Well, I'm well I'm well into that now as you know. And, 1 of the things I'd I'd thought that maybe originally I was gonna be focusing more on the people, and I am obviously focusing a lot on the people who make code. I've ended up far more absorbed in some ways in the code itself. Because once you start peeling away the layers of it, it becomes it just opens out into this fascinating universe. It's like a cosmos, isn't it?
And, the way that programmers even talk archaeologically almost about it sometimes, you know, about the just things like the the level the layers of the stack. As you start going moving through that, it gets amazing, I think. And that's taken me by surprise. I mean, I knew that would be interesting, but I have been surprised how interesting that is. And actually, to me, it makes the people that much more interesting too because I'm lost in awe of what what they're doing, a lot of the time. Yeah. It's definitely interesting
[00:03:01] Unknown:
working as somebody in the field trying to figure out how do you determine what's a good entry point for somebody who is unfamiliar with the field, because there's so many different ways that you can get started and so many different directions that you can take that you really need to understand what it is that that person is trying to get out of it so that you can tailor your approach for the introduction appropriately.
[00:03:23] Unknown:
That's so true, isn't it? It's it's 1 of the difficulties of starting with it, I found, was that when you begin, you don't really know what you unless you have a very clear idea, I want to make websites or something like that, in which case, I guess it's more straightforward. But even there, you're faced with a range of possibilities and options. And 1 of the things I found was that pretty much all professionals would tell me something different when I said, what should I learn? And people tend to have an understandable bias towards the things that they that they use and are attached to, which I totally understand now having, you know, thrown my lot in with Python. I do feel this sort of tribal affinity to it and and can't imagine, I mean, I can't imagine using other things. I've been learning some other languages too.
But when I go back to Python, I just feel at home with it in a in a way that, again, I would never have imagined possible with a programming language beforehand. And and so it it is really difficult when you start just knowing where to go and what to learn. And people will say to you, what do you wanna do with it? And if you don't have a clear idea of that, you also don't know really what's possible with that because because you don't understand the languages and frameworks and so on that are in libraries that are there. So it's it's it's terribly difficult, I think. And but also, you know, the more interesting for having getting past these hurdles, I think, is so much a part of the process of learning in this field.
And 1 of the things you learn quite quickly is that feeling at sea and feeling lost goes with the territory. That's that's 1 of the things that programmers and software engineers have to get used to. And in in fact, it is the essence of what they do because as someone pointed out to me, you know, relatively early on, if you've done something before, you just reuse the code that you've already written for that or something that someone else has already written. So every time you go to write something, you're doing something new.
And you are, a lot of the time, you know, trying to work out how to do it and feeling lost sometimes. And learning to live with that, I think, is 1 of the big things I've learned from, even learning as far as I've learned now. That's been 1 of the real joys because that's something you can apply, and I have found myself applying to all areas of my life. That if I'm flummoxed by something now, the natural human, impulse in that situation is just to turn away or shut down or switch off, go and find something you're comfortable with. And have it learning to have to stay with the discomfort, I think, is 1 of the really big skills that that coders have that I'm glad to have, you know, had a glimpse of and and to be learning. Yeah. The habituation
[00:06:17] Unknown:
of working with the unknown is 1 of the things too that contributes to the widespread occurrence of imposter syndrome in the industry of always assuming that because you don't really know what you're doing and you see other people doing amazing things that they are all just innately more competent than you are, and you have no right to be there. And just that's another thing that you have to learn to just deal with and overcome and realize that everybody else is going through the same
[00:06:43] Unknown:
thing. Yeah. I know. And that's amazing too, isn't it? I've heard people who are really, really skilled saying precisely that. And I think it's good for I mean, if nothing else, you know, coding teaches humility, doesn't it? You have to learn to to I mean, the moment you get too overconfident with it or start to think you're pretty good, it's either code will rear up and bite you in the ass. I have, I live in the Bay Area now. And 1 of 1 of my I live in a place, actually, North Bay, where there aren't so many tech people there. But it just so happens that 1 of my my immediate neighbors is is a a an engineer, and he works for Salesforce and does job he loves Java, but he does all kinds of stuff. Very experienced extremely experienced man. And I remember going out to get the mail 1 day and he was cycling up the hill on his way home.
And I thought he looked a little bit, a little bit sort of unusually disturbed. And I said, oh, what's what's the matter? And he said, oh, I've just had a software project go wrong on me. I got overconfident, and I I didn't write it in such a way that I could ask for help when I needed it. I thought it was gonna be easier than it was, and then I found out it was difficult. And then when I needed help, I couldn't get the help because of that. And my boss has just chewed me out for doing this. And I looked at him and just said, what? That happens to people like you? You know, with your experience? He said, oh, yeah. Oh, yeah. You get overconfident, and and it'll get you. And I think that's a really good lesson. That's another good life lesson to have. Just, you know, treat with respect the way a the way a sailor treats the sea. You know, you always treat it with respect. Yeah. There's definitely a necessary balance of humility and hubris in recognizing
[00:08:32] Unknown:
that you you need to be aware of your limitations, but at the same time, trying to disregard the fact that there are any limitations and thinking that you can just go ahead and do whatever it is that you want. Yeah. I guess that's true as well because you have to be optimistic, don't you?
[00:08:47] Unknown:
Otherwise, you'd never start.
[00:08:49] Unknown:
And so as you mentioned, you have decided to make your particular home in the Python language and its community, and we were introduced by a shared acquaintance of Nicholas Tollerby, who's been on the show before. And so I'm curious how it is that you first got introduced to Python.
[00:09:07] Unknown:
Yeah. That's, that's a really good question. And when I started out, and I'd it would this began as an article for a magazine called 18/43. And it's the sort of glossy, bimonthly magazine of The Economist, magazine of The Economist. And and it's it's a really good magazine. But they they got in touch and said, is there anything you'd like to write for us? And I said, well, I'm not really doing magazine journalism at the moment. But if you let me try and learn to program a computer, you know, a bit enough to write about it, I would write that. And having no idea what was taking on, of course, and they said, yeah. Great. Do that.
And so I did that thing that I think a lot of people do. I thought, well, well, you know, websites, I guess. Did a bit of research. Everyone says JavaScript, and it's very widely used and so on and seemed like a good bet. And so I started off with JavaScript, and I went on free Code Camp, which I I think is, is a really good site. I know Quincy now who runs it, who was very helpful in the beginning. And and so I I started with HTML and CSS and and Bootstrap, and I enjoyed that. And it was fun. I learned to, you know, make a web page and so on. When I got to JavaScript, obviously, very useful and improving rapidly, but I didn't I didn't like it. And the reason I didn't like it, I realized after a while, is that I spend a lot of time thinking about syntax in my in my day job as a writer.
And JavaScript just looked sort of messy to me. It was actually an aesthetic thing that I didn't like about it. And, which seems crazy, but when I started to talk to people about it, I I I realized to, you know, experienced programmers about it, I I realized that they'd all been trying to nudge me towards Python anyway. And so I looked at Python and immediately felt at home with it. I love the elegance of it, and the syntax is really good. It's so clever as well, the way it's organized. And I love the philosophy behind it too. I I, you know, know Gidon now, and and I joke to him saying it's the very Dutch language to me. I have a lot of Dutch friends having lived in England for a long time. And and there's something about the personality of language that it's it's not showy. It's not a language to show off in. That philosophy of of their philosophy of being, you know, ideally 1 way of doing things rather than 25. I would imagine code golf is probably a lot less interesting in Python than it is in JavaScript where it can be quite amazing. And so I just felt I felt at home with it straight away and just liked it. And then I went to PyCon. I went to my second 1 this year, but I went my first 1 was the previous year, 2018, after Nicholas said, you know, you should really go if you if you're enjoying the language.
And I just fell in love with the community. It to me, it was like walking into Woodstock or something. It was just all these people doing interesting things, very bright, very welcoming, and inclusive. And I just I don't know. There was just something. I immediately felt at home, and I liked it a lot. And I hope that I will carry on going, you know, for for years to come now. I I certainly intend to.
[00:12:29] Unknown:
So that was that was how I arrived at at Python. And as we mentioned at the outset, you're currently engaged in writing a book titled Adventures in Coderland that's focusing on some of the culture and societal impact of software and the overall industry.
[00:12:47] Unknown:
So I'm curious if you can just describe the overall scope and intent of your work. Well, that's a that's an also an excellent question because it's it it's the kind of subject where you could go off in thousands of different directions and approach it from, you know, in dozens of ways. And as you probably know from the podcast, 1 of the really difficult balancing act is writing, being able to give detail and to dredge up these really interesting nuggets of things that are that are just scattered all around code and and computing generally, actually, while not leaving people trading in your wake. So you have it going at the right pace where people have enough information that they that they need to understand what you're talking about at any given moment is a real balancing act.
So the way that I've organized it, the way I've and I've done this in books that I've written in the past too, my first book in particular, which was about the guys who walked on the moon. And that was the same thing. It had a technical dimension, although it was essentially a story about people and what you do when you come back. You know, what happens to the rest of your life after you've been to the moon? I still had the same the same problem. I was describing some technical processes and things that happened to people who I had to assume didn't have a lot of technical knowledge. But then you also didn't wanna bore people who did know a little bit about it too. And this is the same this is the same thing. And in some ways, I'm taking a similar approach and that what I'm doing is writing about my path through it. So that I'm assuming no knowledge on the part of the reader. Although I hope people who are already in this world will also be able to enjoy it because they'll be seeing their world reflected back at them in a way that they probably don't usually get because they understand it very well. So the reader will be following my path through it as I as I learn more so the reader learns more. And that way, I hope that people will be able to come with me and, you know, be doing it be be following it at a at a human pace and find the things fascinating that I fascinating. Because 1 of the 1 of the nice things about coming to something cold where you really didn't have any background knowledge, and I didn't like most people, is that things which you, you know, you and experienced programmers would will often take for granted because you're so familiar with them, strike me as absolutely amazing. I mean, even just the way that, you know, machine code when you look at it and you think, well, this stuff is flying around our world and making everything work.
That's crazy. I mean, it's completely crazy. And when you start digging into the way our our computing works, it looks just like magic even though the more you learn about it. In fact, I think it's the the first thing I've ever studied, and I've studied. You know, I'll tell you something about some of the things I've done in my career if you want at some point. But but it's the first thing I've ever studied where in demystifying it, it comes to seem more like straight up magic. I don't think I've ever come across something like that before. So as you alluded to, your
[00:15:58] Unknown:
somewhat recently, at least in terms of full length books. And your first 1 was, as you said, about some of the astronauts who first walked on the moon. So I'm wondering what your motivation is for embarking on this particular project
[00:16:11] Unknown:
and some of the path that has led you down to this point. Sure. Well, I mean, I I guess I've done for actually, from my writing career. I started out doing music in my in my twenties. I was playing in bands and things like that. My my book, life has actually been longer than than what went before it now. I've been doing it for a while. And, the with the journalism, I started out writing about music and then moved to, you know, general features at a magazine called The Face, which was a fantastic magazine, and then moved through, you know, the national newspapers in in Britain, The Observer, The Guardian, The Sunday Times, and decided I wanted to stay with something for longer at a particular point. And, and that was when the the book about the moonwalkers came, which really came from a a random meeting with 1 of them, in in London who'd come back and had a bit of a breakdown, as many of them did, and had his wife, his redoubtable wife, Dottie, his name was Charlie Duke, had put their relationship back together through faith.
And while I was meeting them in London, because they were they're talking about the missionary work they were doing, there was a there was a piece at the back of the Observer Magazine I was working for. It was called Observer Life Magazine. So it's the Sunday version of The Guardian, which was a question and answer piece that happened every week. And I used to avoid them because there wasn't much you could do with them. But the editor eventually called me and said, look, Andrew, you're gonna do 1 of these. Right? And so I saw that they were in town and went to see them, and they were really interesting. Charlie had come back and had a really tough time reacclimatizing to everyday life. As I said, many of them did. But while I was with them, word came through that 1 of the other astronauts had a guy called Pete Conrad, who was Tom Wolf's main source for the right stuff and was a real character. Everyone loved, and Neil Armstrong, in fact, called him the best man I ever knew. He'd had a motorbike accident and but was expected to be fine. But while I was with Charlie and Dottie, the word came through that, in fact, he died of his his injuries. And Charlie and Dottie were terribly, terribly upset about this. And I stayed talking to them for quite a while about it. And then as I was getting up to go, Charlie said, oh, now there's only 9 of us. And I knew there had only ever been 12 who'd walked on the moon between 906 and 972.
And I found that a couple of years later, I was still thinking about them, but there's only 9. That means that 1 day soon there won't be any. And at that point, I just thought I need to go and find them. I want to find out what you do after you've been to the moon and why that it makes me sad, the idea that soon there won't be anyone on earth who who has stood on the moon and which I remember the first moon ending from when I was a small boy. And and so that took me off onto books, really. And in fact, that book, Mundos, has just been republished in a in US and UK editions. And I'm I'm just about to travel to Poland for the first the first Polish translation to to launch that for them. So what I found was that, that that staying with something for a couple of years was almost like being in a trance or a dream, and this book has been the same. The thing that the thing that seemed important to me about this book and the reason I wanted to learn something about code was because I turned around 1 day and realized that almost everything in our lives is mediated by code. It's, it's doing so many things for us. Often, we're hardly even aware of them anymore.
And people are talking about algorithms a lot of the time without really understanding what they are and how how much we control them and how much we don't. And people are getting afraid of them. We're starting to frighten ourselves with the software that we're we're developing. And I just felt that we're clearly gonna be having a big conversation, we already are, about what software is gonna be doing for us and what it should and shouldn't do. And I thought, if I'm gonna participate in that, I need to understand it. And, actually, almost every pretty much everyone needs to understand it. They don't need to be able to code, but I think they do need to understand how it works.
And then I looked at it a little bit more closely and realized, actually, this is completely fascinating. I mean, even if there weren't any concerns around it, it would be a really, really interesting thing to study. And so it came from partly a a sort of a civic sense that this is important. We need to do this. But then very rapidly became, for me, a sort of a an individual quest as well. And so that that was really the the the origins of it. I just thought there's nothing more important right now that we need to understand. In my last book, I felt the same thing about finance and Wall Street in the city of London.
And I decided I was gonna write that just before the crash of 2008. And the reason I decided to write it was I I'd started to look at the stock market and look at the finance world and realized that it made no sense to me. It just looked irrational, like it didn't it didn't, you know, it didn't compute. And then I started to do a bit more research and realized that I didn't think anyone did. And at that point, I thought, oh, something big is gonna happen with this because it's it's out of control. And so that drove me to write my second book, which is called Totally Wired, which Ben Siller is just about to make the story into a movie, in fact, starring Jonah Hill. And, and so with all of the with with all of the work that I do, it tends to be from 2 things, curiosity and also feeling that there was something I needed to understand if I needed if I wanted to understand the world. And and I do think, you know, now more than ever, we do need to try and understand the world. So as you mentioned,
[00:22:02] Unknown:
at the outset, you hadn't really delved into the space of writing software on your own or getting involved in the overall engineering culture. And so I'm curious what your initial thoughts were and your initial perspectives and some of the ways that those have evolved. Have you started to dig a bit deeper and get more involved in the programming subculture?
[00:22:28] Unknown:
Yeah. Yeah. And it's, it's been difficult. This has been I think of the books that I've written, I think writing any book is difficult. Like any big software project is difficult. And I think this 1 is especially difficult because not only am I trying to do I'm trying to do 2 things that are difficult. I'm trying to learn to program, to be able to do something useful. And, because I I I don't wanna be a professional programmer. I that's not that's not really the goal. But I do want to be able to do useful things with it. And I particularly like to get involved in the in the area of civic code and, and go to my local when I'm in town and and I'm not off researching and so on. I go to my local Code for America group in, in Oakland.
And I think that's fantastic, and that's something I do want to do with it. But trying to do the 2 things together at the same time is even more difficult than I thought I did. So my progress in in coding has been slower than I would have liked. But I am making progress and and, and have started to learn. I've just been learning Ruby and also Super Collider, which is a sound generation. It generates synthesizers, so to generate sound, but it's also a programming environment for writing music. And, and I'm that's that's quite a tricky language, but, but I've been doing that. And Sonic Pi as well, which is a a Python sorry. It's a sort of basically built on Ruby, but it's its own it's Nicholas told me the other weakest quote, it's a DSL, domain specific language. So so I'm I'm, yes. I'm spreading my wings. I'm spreading my wings and still really working out what I wanna do with it. So if you have any ideas, let me know.
[00:24:13] Unknown:
And so you mentioned that in terms of the research for the book, it's largely based on your own experiences of getting involved with the programming ecosystem and learning to program for yourself. And I'm curious to what level of detail you're trying to address the problem space and some of the challenges that you're facing in terms of how to relate that to people who aren't involved in this same level
[00:24:41] Unknown:
of engagement with software? Yeah. And, again, that's a good question. And and, again, it it goes back to that thing of balancing the information for people who are, you know, beginners or know know know nothing about it at all and aren't going to learn to code and then also people who do. And and, actually, that in many ways has turned out it's always delicate, but in in many ways, it's less difficult than I thought, simply because there are an awful lot of things that when you're learning to I mean, even professional programmers, they learn to use these things and and learn some of the background things. Like George Boole. I I've I've hardly met anyone who knows anything about George Boole. What a fascinating human being. And, and things like that in explaining his life and how he became how he came up with, you know, building logic, Boolean algebra. You're also describing quite a lot about how the machine works and quite a lot about how languages work. And so there are ways. So in in that way, I I hope at any rate that people who who are coming to it completely fresh and people who are quite experienced at it will both be able to come in and find new things. And I hope it'll also be sort of interesting and revealing to people who are experienced to see how a beginner approaches these things. 1 of the 1 of the difficulties with is with learning to do it while you're also writing about it is in order to write about something and make it seem simple. If you're if you're writing about something that's complex and you're trying to make it appear as simple as you can so that people would easily understand it and not to switch off, In order to do that, you really have to know to a level of detail that goes way beyond what you need to know if you're just learning to do it in or to be able to employ it. So I'm going into, I mean, the first thing I did when I when I started, partly out of the mistaken idea that if there were things called low level and high level in everyday life, we mean low level is where the beginning starts. Whereas in computing, as with so much else, that is inverted.
And low level is the really, really hard stuff. And so I start actually started out learning machine code. And I thought, well, I need to do this and and assembly code. And it was only really when I started into JavaScript and and I was starting to talk to people about it who were also learning and also some people who were teaching. And and I said, god, this is this is so interesting, but it's so hard. I've just spent a week reading 3 pages of a book on on machine code and the hexadecimal system. And, and they said, oh, you don't need you don't really need to know that. I mean, most most people who are web developers, for instance, won't know machine code. They don't need to. No 1 really knows that anymore. But actually, I felt I did need to know that if I'm gonna write about, you know, with any level of detail about what's actually going on in the computer and why things happen the way they do, which makes it a lot more interesting for me and and also I hope from people who are experienced to eventually come to the book. The book is primarily for people who don't know anything about the subject and want to, but I have a feeling. I just have a sense from the people that I talk to that actually people who code a lot will also want to to read it. I hope I hope if I've done my job right, that's that's what will happen. Yeah. Speaking as somebody who got my degree in computer engineering as opposed to
[00:28:13] Unknown:
computer science, I definitely appreciate the full stack understanding of what's happening all the way from the individual circuits in silicon up through the actual presentation layer because it gives you a much better appreciation for the complexities and what's actually possible and when you're going to run into the limitations of physics as opposed to just the limitations of your own imagination.
[00:28:38] Unknown:
Yeah. I I really see that. I know a lot of people say that. People who do have that, the kind of background you have, say that it's very important and that it would be great if everyone did. And and I totally understand that. I I know when I was learning the low level stuff, which I incidentally, I'm not claiming that I could go and write machine code tomorrow. It's not that. Just to understand how it works and how memory is addressed and all those sorts of things. I I thought it was the most interesting thing I've ever studied, if I'm honest. But I can see that, you know, having that having that detailed knowledge, it must be incredibly useful. It gave me a kind of vertigo while I was doing it and after I was doing it. Because you feel I had this image in my mind of myself standing on top of the stack, and the stack is shaking. And I'm trying not to fall off. And I know if I look down, my head's gonna spin because trying to hold it all in my mind at the same time was impossible and still is. I know very, very good people and very experienced people can do that, kind of move down, up and down through the stack and have a really good idea how everything's fitting together and what's going on at a given time. I can, you know, I could only dream of of that. But just being able to do it slowly, move through it slowly for me is is enough, and it's fascinating.
[00:29:53] Unknown:
Yeah. It's definitely an interesting way to approach things is just conceptualizing them all in terms of the abstractions and how the different layers fit together and trying to understand what level of abstraction is necessary to address a given problem.
[00:30:09] Unknown:
Yeah. That's right. And even that idea of abstraction, you know, I've just been writing about that, in fact, because because I was writing about Boo. And and, the the the computer idea of abstraction itself is kind of interesting because you I found that when I when I first came across it, I thought, what what does that mean? I don't really understand what that means. Abstract means something that you can't see generally and and, you know, in in everyday life. But I could see that it was being used in a different way. And then I thought, oh, okay. I get that. I understand that. But actually, then I realized, oh, no. I don't completely understand that. And then looked at it again and went into it more depth and then, you know, now feel that I I do.
But a lot of the things in in computing, in particular software, are like that. Then you first look at them and you go, I don't get that. And then you look at and then you start to get some knowledge about it, and you think, oh, I do understand that. And only later down the line, I often with me when I'm sitting down to write about it do I realize, actually, I don't understand that as well as I thought I did. And there's, there's 1 of the 1 of the things I've enjoyed, I think, and been frustrated and pained by also, at points, is just trying to think your way into the the digital realm and the way a computer I I mean, I'm saying think I'm anthropomorphizing, but you know what I mean.
The the logic that a computer runs on. And as you start to there comes points where you start to feel like you're getting a handle on it, and you know how if, you know, if you want to write a particular function to do something, you you know what the steps should be. Whereas at the beginning, it's so hard because you we just do things differently. We're, you know, we're analog creatures. We do things differently. I remember someone saying to me quite early on, someone I got quite friendly with at at, at Hacker Dojo in in Silicon Valley, which is sort of a cooperative incubator.
And he said did it because I 1 of my questions was, is there a kinda coding mind that can when I began, 1 of the big questions that I think anyone's gonna have when they approach this is, can I do this? I might not be able to. And the answer is turns out to be like so many other things, yes and no. You know, there are some people who are gonna have a particular affinity to it, but also probably pretty much anyone can learn to do it to some level. And, and he said to me that the difference between someone who's gonna take to it naturally and someone who's maybe gonna struggle a little bit more is someone who can look at, you know, the equation x equals x plus 1 and understand what it means.
And I think that's really, really interesting because I don't necessarily think that's true naturally. I don't think that in fact, I don't think you could say that to someone and if they understand it, that means they could be a great programmer. Because actually, x equals x plus 1 in everyday life looks like, a a contradiction. Well, x can't equal x plus 1 at the same time, can it? But once you start to understand the way computers work, then x x equals x plus 1. I add 1 to x. Makes perfect sense. And I think there is he was right in that that there's a there's a little kind of key to it there about how things work in the digital realm as opposed to the analog realm that we inhabit the rest of the time. And, and that was something that I only realized months later
[00:33:29] Unknown:
how profound that was, what he'd said. Yeah. I think 1 of the ways that you can tell if you're talking to somebody who has been working as a career software developer is if you ask them a yes or no question and they say it depends.
[00:33:43] Unknown:
I'm sure that's true. I actually think that's probably true of most things in life, to be honest. I'm always slightly mistrustful of people I don't hear say I don't know quite regularly. Programmers definitely do.
[00:33:56] Unknown:
So at the 1 level of your work on this book, there's the effort to understand software in and of itself, and how the computer operates, and some of the complexities that are necessary to be overcome to be able to do useful things with the software. But at the other level, there is the cultural aspect of how people who work in this industry think about things, how they interact. And as somebody who's been in the industry for a while, it's hard for me to get some of the outside mentality. And so I'm curious what you have found to be some of the most striking contrast that you've identified between software engineers and the general coding culture and how that compares to the perspective of a layperson who is on the outside of that sort of subculture
[00:34:45] Unknown:
and observing it? That's that's also a really good question because it was 1 of the things that I felt was most important when I started out. In in many ways, the impetus for the book was the notion that which is I've written about over the last 5 or 6 years, simply because I think it's really important. That if software engineers are basically redesigning our world, we're doing so many things differently now because of the software that's been developed. And it affects the way we do things, really a lot and the possibilities that we have when we sit down to do them, you know, the parameters within which we're operating.
So it seemed an important question to me, you know, as to who these people were who were making this. And are they reconfiguring our world to reflect their world? Because, obviously, if you're writing something, it's gonna reflect you. And is that something we should be concerned about? Because we if we don't know who they are, you know, we if we are gonna all be forced to become more like them, what does that mean for humanity? Not saying it's good or bad, but it's a question we need to ask. And in actual fact, I've been very reassured about that. That was 1 of my big concerns when I started to think about this.
But getting into it, I realized that it really does seem to me to just reflect the world at large. Silicon Valley, I think, is a little bit different. I know for most of the developers, engineers that I know from places outside Silicon Valley, they seem to me to be, as a group, pretty much reflective of the society as a whole. I I don't notice much difference. In Silicon Valley, it is a little bit different because there's such a concentration. And I have had some conversations in 1 1 of the big companies, which I I won't talk about that, which did alarm me a little bit because I thought, oh, there's a bubble. There's a real bubble here. And people aren't completely understanding the world that the software is going into, and that concerned me a little bit, I think. On the whole not, you know, what I'm finding is, and I think this is particularly true in the last few years, that engineers are becoming very, very conscious of the fact that their their code is going into the world and is making changes, and this stuff is important. And I'm finding a real general concern and and wish to, you know, do good and do better.
And so, yes, I feel I feel I feel reassured about that, actually. And I've gone my my wife laughs at me. She just says, you've gone completely native. You know? I find that I really like programmers just because I think I understand the mindset a little bit, which is which is different from the everyday in some ways because you're working in a digital realm. So you're thinking, in all kinds of different ways about the the world. 1 of the things that another thing that I that I started out with was the idea, will this change my brain? You know, will will I change? I have a very lateral mind. I had an English teacher who spoke of there being 2 archetypical minds. There's kind of convergent and divergent. The divergent tends to be looking outwards and gathering things from all over the place. And the convergent tends to be very good at focusing inwards intently on things. And I'm I tend much more towards the the divergent mind. And 1 of the things I've started out questioning, wondering about was, a, whether a divergent mind like mine would be able to do something like coding, and, b, whether my my mindset would change in the doing of it. And I actually went to Germany. There's some some people doing some research on how our brains treat code.
I went and had a brain scan and fMRI as part of their study. And hopefully, towards the end of my research, we're gonna go and we can do it again and see if there's any evidence of my doing things differently. For instance, my language comprehension, reading comprehension, whether whether my brain is is functioning differently around that, I have no idea what we'll find. I'm inclined to think now that if it does make a change and and actually a neuroscientist will tell you and has told me that anything you do changes your brain, anything you learn. So my brain will have changed, but will it affect the way I do other things? And it I'll I'll be inclined to think that it's probably gonna affect them for the better. If if so, I'm not concerned about that. I was slightly concerned at the beginning, but I can feel I can feel the way that I do things changing in some really good ways, I think. Nicholas was laughing at me because I was telling about how I'm organizing the book. When you write a book, 1 of the really difficult things is organizing all all the information in a way that's gonna be useful to you when you need it, and and not getting swamped with it and having it well organized and so on. And I was telling him that I'm doing it in a very, very different way whereas normally in in the past, I've waited until I have all the information in, all the research in, and then I've sort of lay it out in front of me. You know? And it takes a month to do this and say, what's the story? What's the world telling me here? And then form it into the shape of the book, then go and write the book. This 1, because I've been trying to do the 2 things together, learning to to code and writing a book, And each book you write is you're learning to do it as if it was the first time.
It was it was very difficult. And I knew I wouldn't be able to wait until I've done all the research to start writing, so I've been writing as I've gone. And I told I told Nicholas about that, and he said it worked. Yeah. It sounds like a software project. You were treating it like software project, and you're doing it in an agile agile methodology. I thought that is exactly right. Yes. It's true. It made me really laugh. So it's already changed the way that I write books or at least this book.
[00:40:33] Unknown:
That's pretty funny.
[00:40:34] Unknown:
Yeah. Yeah. It it took me by surprise. I didn't think I would be able to write a book like this either when it was uncomfortable first, but actually, I'm really enjoying it now. And I'm enjoying the writing process much much more than I ever have. So we met at the most recent PyCon in the US,
[00:40:50] Unknown:
and I understand that you were attending that largely as a means of conducting research for the book, and also because as you said, you have enjoyed being able to interact with the Python language and its community. So I'm curious, what are some of the other programming communities that you have engaged with and some of the notable differentiating factors that you've noticed between communities and some of the interesting ways that people will define their own tribal identities Up to now, I've mostly been involved with Python. I didn't really need to go to Python. I didn't really need to go
[00:41:22] Unknown:
to Python. I didn't really need to go to Python. I didn't Up to now, I've mostly been involved with Python. I didn't really need to go to Python this year, but I just wanted to. I enjoyed it. I will I will carry on going. I fairly early on thought, well, I better try some of the other communities too and see what they're like in in relation to Python. It's much more difficult, actually, than you think because Python has such a strong focus community. And and the way that it's run with the Python Software Software Foundation is unusual, I think. I've dipped into Ruby, and that seems to be fairly similar in some ways. It has a a really nice community and with a a strong code of conduct and sort of fellow feeling and then just a nice vibe to it. With other things like JavaScript, for instance, it's it's very different because when you go to a JavaScript conference, for instance, it's probably a commercial thing that's being run by someone, and that's true of most of the others.
I've been to some AI ones and, and, the DevCon. And there are a few more to come that I'm gonna do. But I have a feeling that the the sense of community will be really different from Python. And I think that's 1 of the reasons why I why I liked Python so much when I when I found it. So I don't I don't really know is the answer to that. I wish there were a simple answer to that. I don't really know, but I suspect I have a feeling that the lower level the languages are, the the less sort of communal and inclusive they're gonna get by for logical good reasons.
But, no, that's a work in progress. We'll see. Do you have any thoughts on that? Have you have you found any? So as you identified,
[00:43:06] Unknown:
Ruby has somewhat of a similarity in terms of the way that their community is sort of oriented in terms of their ideals and their values. And I agree that it's definitely hard to find another single grouping, particularly along language lines of engineers who have such a cohesive identity. There are some around things like Django or Ruby on Rails, and they're starting to be more of 1 around data engineering. But a lot of the other languages are a bit too dispersed. So for instance, Java, JavaScript, There isn't really 1 community. There are a lot of subcommunities oriented around particular problem domains or popular frameworks.
And then there are other things like data science or AI that are starting to create their own tribal identities. And then the other 1 that I think has a strong grouping in terms of the ideals and the community values is the DevOps community. And so that's been spread a bit through the franchise approach of DevOps days where different cities will have their own DevOps days that in the large is the same thing as anywhere else, but they all shape to their own particular community. So it's interesting to see the way that that manifests as well. That's interesting. Yeah. That's interesting.
[00:44:30] Unknown:
Well, so so yeah. My impression wasn't wasn't completely wrong then. I went to DjangoCon last year, which I loved. And, because I thought I was gonna learn Django and and did start to do it and then realized I I didn't wanna do a website for my main thing. But the other I'll try. I'll have a look at DevOps. And the the other thing that, where I do think there's a fantastic community is in the civic code movement, which is just the most exciting thing, I think. Because there's really, really good useful work being done by developers and engineers for, you know, just for the love of doing it and because it's a good thing to do. And actually, some of the projects are really fascinating too. So that's why I think that's a really strong community too at the moment,
[00:45:15] Unknown:
which will get stronger. 1 of the other things that I'm curious about is what your metric is for determining when you can call the book done and when you've gathered enough information and raw material to be able to draw the book to a close and how you're going to finish up the narrative? Yeah. That is a wickedly good question,
[00:45:33] Unknown:
actually, which I've asked myself many times. There's, there's a there's a a number of things. 1 1 is, that I'm learning to live code music, which is a really exciting thing, I think, that that, that I've enjoyed a lot. And I have a background in music, so it's it's interesting to me. And I'm I'm gonna I'm gonna get involved and try and get on the bottom of Bill, and and there's only well enough that I can go and perform it. So that's terrifying, but would be really fun. And that that's another community that I've that I have, met you know, got involved with that that I like a lot, And it's it's developing quite rapidly right now too.
And the other thing is that that, there's a a project which I can't really tell you about without having to, you know, kill you first and then all your go and find all your listeners and do the same. And that just seems like too much trouble. But, but I can't really tell you about it. But there's a there is, a project that's related to that civic code movement that, that I'm quite excited about, and that will be time limited. It has to be done by a by a specific time. So those are the 2 things that I've been through a bunch of different answers to that question. There was something I wanted to write. I wanted to write an app for my website, which I still may do. And, and there were various various other things that I've that I've sort of been through. It's changed a lot as I've learned more. As I was saying at the beginning, the difficulty is when you start, you don't know what to learn because you don't really know what you wanna do. And you don't really know what you wanna do because you don't know what the possibilities are that you could the things that you could do. And often, you'll look at something. I remember that first picon.
There was a wonderful piece that, it was Kurt Kaiser who did it, I think, which was about automating his bird watching habits. And so he he used a a sort of quite basic level neural network, I think, is what he was doing. I mean, it sounded extraordinary to, to be able to identify the birds that were that were coming and to to his bird feeders, which led me to someone who'd given a talk a few years earlier, I think, on writing, writing software. And, actually, it was a kind of hardware project too to keep the squirrels away from his bird feeders, which is a problem I have. I live in a forest in California. So it's a problem I have too. And it what it did was, it could track. He'd he'd managed to make, 1 of those water rifles track a squirrel and distinguish between the squirrel and a bird and then fire the water a dredge of water at the squirrel, then run away. And, initially, I thought, this is what I want to do. This is useful, and it's great. And it was only when I looked at what it would involve doing, the the amount of learning I would have to do in order to be able to do something like that, that I realized, oh, no. I'm not gonna be doing that. That's for years down the line. And so a lot of projects you look at also sort of fall that way too. It's not only that you don't know what you can do. It's that you can look at things and think, oh, I'll do that, and then realize, oh, no way. That's that's way harder than I realized.
And and which leads to the broader point of 1 of the things that I've really learned and internalized from even, you know, going as far as I have with code is a huge respect for software that works. When I look at these these big systems that people have, which can work on any machine, you know, we expect them to be able to work on any machine, and that everyone's computer is different because you've got different dependencies on it, different programs that were dependencies. Everything everything is different. Someone who can write a program that can work on most anyone's machine is to me miraculous. I mean, I was trying just to download Super Collider last week, which is that sound generation program I was telling you and and and the sort of music programming environment.
And I had a hell of a job. And the reason is, of course, because it has its dependencies that you put into your machine, and they're clashing with other things. And just trying to work my way through what was wrong and get to that, it took days. And so, you know, in terms of deciding what to do, you realize just how difficult it is once you start to try and do it. And so my the ground has shifted in terms of what I want to do with the code a lot as I've gone. And, also, you realize how much help you need. And the people talk about the old days of of, you know, software engineering where you could have these lone lone wolves who'd kinda see on their own do stuff and never talk to human beings.
And you can see that those days really are not here anymore because it's so complex.
[00:50:22] Unknown:
Yeah. Working as somebody who's responsible for automating servers that run software and maintaining it, I have an almost daily experience of wondering how anything ever works because of all the complexity and all the different dependencies and all the different layers. So I I can appreciate your sentiment there.
[00:50:40] Unknown:
Yeah. It's well, that's really eye opening because in in everyday life, when I know the people around me, and and used to be me as well. If they put a bit of software on their on their laptop and it it's not immediately working, they get angry. They get furious. And I found my I find myself now always taking this taking the side of the developers going, do you know how hard that is? It's probably just classic with some pickling little thing that you've got on your on your laptop, and we you know, we'll find it. Take take it out. But it's, it does teach you enormous respect for doing this this incredibly difficult thing.
[00:51:16] Unknown:
And so now that you have delved into some of the peculiarities of codeland, I'm curious how it has changed your own outlook on the software industry and society at large, and any advice that you have for the engineers who are listening as it pertains to your experiences in writing the book?
[00:51:35] Unknown:
Yeah. That's another really good question. It's I mean, the advice to the engineers, it's don't just spend time with engineers. And I think in Silicon Valley, that's a danger because it's very easy for people just to only to spend time around people like themselves. And as we know, you know, there is a big diversity problem in engineering in in the valley, and that people tend to come through the same schools and have roughly the same kinds of backgrounds. And so my my hope would be and my I I wouldn't want to, you know, be so bold as to give advice, but my hope for engineers would be that they get out into the world and talk to people, you know, see people in different places, do different things, don't just hang out with with other engineers.
Because the, you know, the world the the world, of a laptop doesn't always function the same way as the the ideal 1 that we have inside the laptop. I mean, it overall, what it what I think what this has done is given me enormous respect for people who do this. And I think it's kinda magical what everyone's doing. It's it's re it's designing the world, and that's a difficult thing, but it's also a wonderful opportunity. You know, we have to make things better. Obviously, we're not always gonna get that right, and some things we're gonna make worse until we come around and and can, you know, bring them around and hopefully then make them better. But that's all part of the process. I think 1 of the things that you learn from watching software engineers is that everything is processed. It's all processed. Nothing is ever finished. I mean, there there are there are bugs in everything you do. You know, you're always having to fix things. And I think those are really good skills. 1 of the things that that engineers have, which I think really all the rest of us could do with with learning from them, is a flexibility of mind. You have to have there's a stereotype of the of the the the coder as as being this kind of inflexible automaton, And it's really not true. You have to have such a flexible mind to do this, but also to be able to focus. I mean, I understand that thing about people on the autism spectrum sometimes having an advantage because they can focus very intensely on something for for a time. An engineer at Google was telling me that they do think there is something in that because there are so many of their engineers are somewhere on the spectrum.
But overall, you have to have a great flexibility, I think. And and the world is getting more and more complex, and we're all having to be more flexible. So I think, actually, 1 of the things I'd I'd wish for people who aren't software engineers, you know, for people who have no interest in it or think they have no interest in it, is just to learn a little bit of code because learning that of itself would be would be useful. For the industry itself, the same as every other industry at the moment. You know, think about what the impact is on the wider world and care about it. Because if you're only doing it for money, you know, it's it's so easy to have a terribly negative effect.
And it's easy to say, well, I don't care because I've made a lot of money doing it. But you cannot isolate yourself from the rest of society. And if if you send software out there that makes society worse and people in general more unhappy or less happy, then that unhappiness will find you in the end. You will live in a more febrile, difficult environment, and you won't be able to escape it. So really think in your out of your own interest. I'm not asking anyone to be altruistic here. In your own interest, think carefully about what you're doing. Don't just do stuff for money. Money is great. We all need it, but it won't satisfy you in the end. You know?
And that's exactly the same thing that I say to my children. It's the same thing that I say to their friends. It's the same thing that I say to everyone in every industry. We just need to, all of us, be thinking really carefully right now about what we're doing with what we do. I I mean, I think about this all the time with my work. I have to. And, and I'd I'd I would that would be my wish for the world of engineering and every other world for that matter.
[00:55:57] Unknown:
And are there any other aspects of your work on the book or your own experiences getting engaged with software engineering and the overall subculture of it that we didn't discuss yet that you'd like to cover before we close out the show?
[00:56:13] Unknown:
No. I don't think so. That's that was that covered that covered, a lot a lot of ground. And and, and it's really interesting. I mean, I could talk about this, for weeks on end. I think it's so fascinating. And I really envy that when I was young, engineering wasn't something that that would ever really occurred to me to be something that I might want to do. I was using computers, I realized, quite early on because I was making music, electronic music. And, and so I was working with some of the early sort of synthesizers and sequencers and so on, which were which were primitive computers. So had some connection with it. But the idea of there do seem to be often 2 kinds of people because a lot of the very good engineers that I know are the people who had a little you know, they got a little game or a z x spectrum, z x spectrum, or or a Commodore 64 or something like that.
And whereas I was someone who would wanna sit in front of it and do some stuff until I got bored and then go to something else. They were the ones who said, yeah. But how does that work? What happens if you what happens if you go back in and look at the code? Oh, look at that. That's kind of amazing. How do I manipulate that? And I think, I think that I wished that I'd done that really at that point because it's something that I think I would have really enjoyed to to, you know, staying to really learn to do in the kind of detail that I'll probably never get to now. But even doing it just the little bit, you know, the little bit I have and what I will carry on, I hope doing for the rest of my life, it's been such a, you know, I feel like the lucky 1 of the luckiest people alive to get to do this and to and to meet all the people who are doing it in full time.
[00:58:06] Unknown:
For anybody who wants to follow along with you and your work or to get in touch, I'll have you add your preferred contact information to the show notes. And so with that, I'm gonna move us into the picks. And this week, I'm going to choose the through line podcast from NPR, and it's an interesting show that uses historical context to try and shine light on the
[00:58:29] Unknown:
some of the motivations
[00:58:31] Unknown:
and some of give a different perspective on various aspects of current events. So it's definitely worth taking a look at as an informative and educational podcast, so I've been enjoying that. And so with that, I'll pass it to you, Andrew. Do you have any picks this week?
[00:58:47] Unknown:
Actually, yes. I I do, which is, something I just heard about the other day. And I can't remember who was telling me about it, but it's, it's a podcast and I I can't remember if it's called 20 hertz or 200 hertz, but I think it's 20 hertz. And it's about the business of recording sound, and it just sound really, really interesting. I haven't I haven't gotten to listen to it yet, but the way that they told me about it, I know I'm gonna be completely taken with it because they were. And so that that that sounds, yeah, that sounds something that is probably worth having a look at.
[00:59:22] Unknown:
Well, thank you very much for taking the time today and sharing your experience of writing this book. I'm definitely looking forward to reading it once it comes out. So thank you for all of your work and effort on that, and I hope you enjoy the rest of your day.
[00:59:36] Unknown:
There'll be a copy for you in the mail. Yeah. Thank you very much, Tobias. That was really fun. I enjoyed that very much. Thank you.
[00:59:44] Unknown:
Thank you for listening. Don't forget to check out our other show, the Data Engineering Podcast at dataengineeringpodcast.com for the latest on modern data management. And visit the site at pythonpodcast.com to subscribe to the show, sign up for the mailing list, and read the show notes. And if you've learned something or tried out a project from the show, then tell us about it. Email host at podcast in it.com with your story. To help other people find the show, please leave a review on Itunes and tell your friends and coworkers.
Introduction to Andrew Smith and His Work
Discovering the Fascination with Code
Challenges of Learning Programming
Imposter Syndrome in Software Engineering
Choosing Python and Community Experiences
Scope and Intent of 'Adventures in Codeland'
Motivation and Path to Writing the Book
Initial Thoughts and Evolving Perspectives
Understanding Abstractions and Low-Level Programming
Cultural Aspects of Software Engineering
Engaging with Different Programming Communities
Determining the Book's Completion
Impact on Outlook and Advice for Engineers
Final Thoughts and Reflections