Andrew's Adventures In Coderland - Episode 233

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.

linode-banner-sponsor-largeDo you want to try out some of the tools and applications that you heard about on Podcast.__init__? Do you have a side project that you want to share with the world? Check out Linode at linode.com/podcastinit or use the code podcastinit2020 and get a $20 credit to try out their fast and reliable Linux virtual servers. They’ve got lightning fast networking and SSD servers with plenty of power and storage to run whatever you want to experiment on.



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

Picks

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 [email protected]) 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

The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA

Click here to read the raw transcript...
Tobias Macey
0:00:12
Hello, and welcome to podcast, the podcast about Python and the people who make it great. When you're ready to launch next app or you want to try and project to hear about on the show, you need somewhere to deploy it. So take a look at our friends over at the node. 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 slash the node that's LINOD today to get a $20 credit and launch a new server and 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 and machine learning today. 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 diversity cranium global intelligence Alexey ON State Council. Upcoming events include the combined events of the data architecture summit and graph forum, the data orchestration summit and data Council in New York City. Go to Python podcast.com slash 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 Macey. And today I'm interviewing Andrew Smith about his anthropological study of software engineering culture and his upcoming book adventures in coder land. So Andrew, can you start by introducing yourself?
Andrew Smith
0:01:42
Yeah, my name is Andrew Smith, and I'm a I'm a writer by profession. And that
0:01:48
introduction is for anthropological studies quite a good one. Actually. Although I'm so I've been surprised as I've begun the research on the book and while I'm Well, I'm well into that now, as you know, and one of the things I'd, I'd thought that maybe originally I was going to 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 level of 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 at how interesting that is. And actually, to me, it makes the people that much more interesting too, because I'm lost in or
0:02:56
what they're doing. A lot of the time.
Tobias Macey
0:02:59
It's definitely actually Trusting working with 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 in 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 and appropriately.
Andrew Smith
0:03:23
That's so true. And it's it's one of the difficulties of starting with it, I found was that when you begin, you don't really know what you're unless you have a very clear idea of I want to make websites or something like that, in which case, I guess it's more straightforward. But even though you're faced with a range of possibilities and options, and one 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 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 is really difficult when you start just knowing where to go and what to learn. And people will say to you, what do you want to 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 one of the things you learn quite quickly is that feeling it's See and feeling lost, goes with the territory. That's, that's one of the things that programmers and software engineers have to get used to. And in fact, that is the essence of 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, 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 one of the big things I've learned from even learning as far as I've learned. Now, that's been one 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 to turn away or shut down or switch off, go and find something You're comfortable with, and habit learning to have to stay with the discomfort, I think is one of the really big skills that that coders have that I'm glad to have, you know, kind of glimpse of and to be learning.
Tobias Macey
0:06:15
Yeah, the habituation of working with the unknown is one of the things too, that contributes to the widespread occurrence of imposter syndrome and 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 thing.
Andrew Smith
0:06:42
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, coating teaches humility, doesn't it? You have to learn to I mean, the moment you get to over confident with it or start to think you're pretty good is it the code will rear up and bite you in the ass I have. I live in the Bay Area now. And one of one of my my, I live in a place actually North Bay where there aren't so many tech people there. But it just so happens that one of my my immediate neighbors is is a an engineer and he works with Salesforce and does job he loves Java, but he does all kinds of I'm very experienced, extremely experienced man. And I remember going out to get the mail one 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 what's the matter? And he said, Oh, I 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 going to be easier than it was and then I found out difficult and then when I needed help, I couldn't get the help because of that. And my boss is 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 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 it with respect that the way, the way a sailor treats the sea, you always treated respect.
Tobias Macey
0:08:26
Yeah, there's definitely a necessary balance of humility and hubris and recognizing that 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.
Andrew Smith
0:08:42
Yeah, I guess that's true as well, because you have to be optimistic.
0:08:47
Otherwise, you'd never stop.
Tobias Macey
0:08:49
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 sharing acquaintance of Nicholas taller be who's been on the show before? And so I'm curious how it is that you first got introduced to Python?
Andrew Smith
0:09:06
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 1843. And it's the sort of glossy bi monthly magazine of the economist, magazine of the economist, and, and 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
0:09:48
they said, Yeah,
0:09:49
great to that. And so I did that thing that I think a lot of people do, I thought well, or, 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 think is, is a really good site. I know Quincy know, who runs it, who was very helpful in the beginning. And, and so I started with HTML and CSS has and bootstrap. And I enjoyed that. And it was fun and learned to, you know, make a webpage and so on. What about to JavaScript, obviously very useful and improving rapidly, but I didn't, I didn't like it. And the reason I didn't like 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 realized to you know, experienced programmers about it, I realized that they'd all been trying to nudge me toward Python. Anyway. So I looked at Python and immediately felt at home with it. I love the elegance of it. 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, you know, know Guidoni 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 the language that it's it's not showing, it's another language to show off in that philosophy of their philosophy of being, you know, ideally one way of doing things rather than 25. I would imagine code golf is probably a lot less interesting and fun 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 pi con I went to my second one this year, but I went my first one 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 here 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, that 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 years to come now, I certainly intend to. So that was that was how I arrived at Python.
Tobias Macey
0:12:31
And as we mentioned at the outset, you're currently engaged in writing a book titled adventures and coder land that's focusing on some of the culture and societal impact of software and the overall industry. So I'm curious if you could just describe the overall scope and intent of your work.
Andrew Smith
0:12:52
Well, that's a that's an also an excellent question because it's, it's the kind of subject where you could go off and thousands of different directions and approach it from, you know, in dozens of ways. And as you probably know, from the podcast, one 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 just scattered all around code and computing generally, actually, while not leaving people trading in your wakes, he 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 the way that I've organized it that the way I've and I've done this in books that I've written in the past to my first book in particular, which was about the guys who walked on the moon, and that was the same thing that had a technical dimensional there 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 that we're describing some technical processes and things that happened to people who had to assume didn't have a lot of technical knowledge. But then you also don't want to bore people who didn't know a little bit about it too. And this is this same, this is the same thing. And in some ways, I'm taking a similar approach. And 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 learned 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 following it at a human pace and find the things fascinating that I fascinating because one of the one of the nice things about coming to something cold where you really didn't have any background knowledge, and I did 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 the machine code when you look at it, and you think 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 is the first thing I've ever studied and I've studied, you know, 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. Were 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.
Tobias Macey
0:15:50
So as you alluded to your initial background isn't as an author and you've come to that line of work somewhat recently, at least in terms of Full length books. And your first one 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 and some of the path that has led you down to this point.
Andrew Smith
0:16:14
Sure. Well, I mean, I guess I've done for actually from my writing
0:16:19
career,
0:16:20
I started out doing music and my in my 20s was playing in bands and things like that and my book life is 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 move to general general features, had 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 moonwalk Came which really came from a random meeting with one of them in London who'd come back and had a bit of a breakdown, as many of them did, and had his wife was 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 there talking about missionary work they were doing and there was a, there was a piece of the back of the observer. The magazine I was working for was called observer Life magazine. So it's the Sunday version of The Guardian eight, which was a question and 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, you got to do one of these, right? And so I saw that they were in town and went to see them and they were really interesting. And Charlie had come back and had a really tough time, rear climate eyes into everyday life. As I said, many of them did. But while I was with them, word came through the wonderful The other astronauts had the guy called Pete Conrad who was Tom Wolf's main source for the right stuff and was a real character everyone loved to Neil Armstrong if I called him the best man I ever knew he'd had a motorbike accident and but was expected to be fine. But what I was with Charlie and dirty the word came through that, in fact, he died of his his injuries, and Charlie and it would terribly, terribly upset about this. And I stay 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 nine of us. And I knew there would only ever been 12, who'd walked on the moon between 1969 72 and I found that a couple of years later, I was still thinking about that. But there's only nine that means that one day soon, it 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 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 million new friend was small boy and So that took me off onto books really. And in fact that book Munoz has just been republished in a in US and UK editions. And I'm a I'm just about to travel to Poland for the first the first Polish translation to launch that for them. So what I found was that, that that stain was 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 turn around one day and realize that almost everything in our lives is mediated by code hits. 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 software that we're, we're developing, and I just felt that we're clearly going to be having a big conversation we already are about what software is going to be doing for us and what it should and shouldn't do. And I thought, if I'm going to participate in that, I need to understand it. And actually, almost that, you know, 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 sort of a civic sense that this is important, we need to do this, but then very rapidly became for me sort of a an individual quest as well. And so 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 going to write that book just before the crash in 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 realize that it made no sense to me, it just looked irrational. Like it didn't, it didn't, you know, 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 something big is going to happen with this because it's, it's out of control. And so that drove me to write my second book, which is called toady wire which Ben Stiller just about to make this 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 two things curiosity, and also feeling that there was something I needed to understand if I needed if I wanted to understand the world and I do think you know, now more than ever, we do need to try to stand the word
Tobias Macey
0:22:00
So as you mentioned, 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?
Andrew Smith
0:22:27
Yeah, yeah. And it's some 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 one is especially difficult because not only am I trying to do
0:22:44
front do two things I have to learn to program
0:22:49
to be able to do something useful. And because I
0:22:52
don't want to be professional program I
0:22:54
had 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 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 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 two things together at the same time is even more difficult than I thought I did. So my progress and 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 supercollider which is a sound generation it generates synthesizer so degenerate sound, but it's also a programming environment for writing music. And, and I'm, that's quite that's quite a tricky language but but I've been doing that and Sonic Pi as well which is a Python. Sorry so so basically built on Ruby, but its its own it's Nicholas told me the other week is going to DSL domain specific leverage So, so I'm Yes, I'm spreading my wings and spreading my wings, and still really working out what I want to do with it. So if you have any ideas
Tobias Macey
0:24:13
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 of engagement with software.
Andrew Smith
0:24:43
Yeah, and again, it that's a good question. And, and again, it goes back to that thing of balancing the information for people who are you know, beginners? Oh, no, no, no, nothing about it at all. And I'm going to learn to code and then also people who do Actually, that in many ways has turned out it's always delicate. But 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 prepared, even professional programmers, they learn to use these things and and learn some of the background things. I George ball I paga met anyone who knows anything about George ball, what a fascinating human being, and, and things like that in explaining his life and how he became how he came up with your Boolean logic. But in algebra, you're also describing quite a lot about how the machine works and quite a lot about how languages work and so they're always so in that way i i hope but any rate that people who who are coming to a completely fresh and people who are quite experienced that it will both be able to come in and find new things, and I hope it will also be sort of interesting and revealing to people who are experienced to see how it beginner approaches these things. One of the, one 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 will 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
0:26:33
in order to be able to employ it.
0:26:34
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 what I need to do this and assembly code, and it was only really when I started into JavaScript, 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 three pages of a book and the hexadecimal system, and and there's no human need, you really need to know that. I mean, most, most people who are web developers, for instance, one, no machine code, they don't need to, you know, when there is no that anymore, but actually, I felt I did need to know that if I'm going to 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 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 talked to that actually People who cut it off 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.
Tobias Macey
0:28:08
Yeah, it's speaking as somebody who got my degree in Computer Engineering as opposed to computer science, I definitely appreciate the full stack understanding of what's happening all the way from the individual circuits and 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.
Andrew Smith
0:28:37
Yeah, 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 I totally understand that. 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 that works now memory is addressed and all those sorts of things. 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 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.
0:29:23
I'm trying not to fall off.
0:29:25
And I know if I looked down, my head's going to 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 in a can time. And I can Oh, 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.
Tobias Macey
0:29:52
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.
Andrew Smith
0:30:08
Yeah, that's right. And even the idea of abstraction, you know, I've just been writing about that, in fact, because because I was writing about boo and, and 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 everyday life, but I could see that it was being used in different way. And then I thought, oh, okay, I get that I understand that. But actually, then I realized I don't completely understand that and then looked at it again and went into in more depth and then you know, now feel that I, I do, but a lot of the things in in computing and particularly software are like that, then you first look at some new go. I don't get that and then you look at and then you start to get some knowledge about it. You think 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 this one of the one of the things I've enjoyed, I think and been frustrated. Pain by also at points is just trying to think your way into the digital realm and the way a computer 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 a point 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 the beginning, it's so hard because you, we just do things differently, where, you know, we're analog creatures, we do things differently. I remember someone saying to me quite early on some I go quite friendly with it at attacker dojo in Silicon Valley, which is sort of a cooperative incubator, and he said, to take aside, one of my questions was, is there a kind of coding mind? I can when I began one of the big questions that I think anyone's going to have when they approach this is can I do this I might not be able to? And the answer is, are we turns out to be like so many other things. Yes. And no, you know, there are some people who are going to 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 going to take to it naturally, and someone who's maybe going to struggle a little bit more, is someone who can look at dean of equation x equals x plus one 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 I could be a great program because actually x equals x plus one in everyday life. Looks Like, a contradiction with ex con equal x plus one at the same time, can it but once you start to understand the way computers work, then x, x equals x plus one, I add one 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 we're on the way inhabit the rest of the time. And, and that was something that I only realized months later, how profound that was what he'd said.
Tobias Macey
0:33:30
Yeah, I think one 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.
Andrew Smith
0:33:43
sure that it'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. program is definitely do.
Tobias Macey
0:33:55
So at the one 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 lay person who is on the outside of that sort of subculture and observing it.
Andrew Smith
0:34:45
That's, that's also a really good question because it was one of the things that I felt was most important when I started out in many ways, the impetus for the book was the notion that which is I've written about over the last five or six 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 important question to me, you know, 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 going to reflect you And is that something we should be concerned about? Because we, if we don't know who they are, you know, we would if we are going to 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 one 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 don't notice much difference in Silicon Valley is a little bit different because there's such a concentration. And I have had some conversations and what one of the big companies Joe, what I won't talk about that, which did alarm me a little bit because I thought, oh, there's a bubble is a real bubble here. And people aren't completely understanding the world that the software is going into. And that concerns 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 it becoming very, very conscious of the fact that their code is going into the world. is making changes and this stuff is important. And I'm finding a real general concern and wish to, you know, do good and do better. And so yes, I feel I feel, I feel really reassured about that, actually. And I've gone my wife laughs at me, she just says, You've gone completely native, you know, I find that I really like programmers adjust 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 one of the things that another thing that I that I started out with was the idea what will this change my brain, you know, will will it I have a very lateral mind, I had an English teacher who spoke of there being two critical minds is kind of convergent and divergent, the divergent tends to be looking outwards and gathering things from all over the place and the Convert tends to be very good at focusing inward intently on things and I'm I tend much more towards the divergent mind. And one 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 be whether my my mindset would change in the doing 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 an fMRI as part of this study. And hopefully, towards the end of my research, we're going to 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've no idea what will find I'm inclined to think now that if it does make a change, and actually a neuroscientist will tell you and has told me that anything you do changes your brain, everything you learn So my brain will have changed. But will it affect the way I do other things? And it, I'd be inclined to think that it's probably going to 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. And some really good ways. I think Nicholas was laughing at me, because I was telling him about how I'm organizing the book, when you write a book, one of the really difficult things is organizing, we all input all the information in a way that's going to be useful to you when you need it. 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 the past, I've waited until I have all the information and all the research in and then I 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 one because I've been trying to do the two 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. And 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 yet sounds like a software project. You're treating it like a software project, and you're doing in an agile methodology. For those exactly right. Yes, it's true made me really laugh. So it's already changed the way that I write books, or at least this book.
Tobias Macey
0:40:33
That's pretty funny.
Andrew Smith
0:40:34
Yeah, yeah, it took me by surprise. I didn't think I would be able to write a book like this underway. And it was uncomfortable at first, but actually, I'm really enjoying it now. And I'm enjoying the writing process much,
0:40:43
much more
Tobias Macey
0:40:45
than I ever have. So we met at the most recent pi con and us 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 public. On 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 and along what axes, they'll sort of create those identities?
Andrew Smith
0:41:21
That's a really good question about the communities and the differences. 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 enjoy it. It will, I will carry on going I fairly early on for when I better try some of the other communities to and see what they're like 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 Foundation is unusual. I think I've dipped into Ruby, and that seems to be fairly similar in some ways. It has a Really nice community and with a strong code of conduct and sort of fellow feeling, and and 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, most of the others. I've been to some AI ones and, and the DEF CON, and there are a few more to come. And I'm going to do rapid feeling that the the sense of community will be really different from Python. And I think that's one of the reasons why why I'd like to buy them so much when I when I found it. So I don't I don't really know, is the answer 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 or the the less sort of communal and inclusive, they're going to get by for logical, good reasons. But no, that's a working person. This was a Do you have any thoughts on that, that you have you found any.
Tobias Macey
0:43:04
So as you identified, 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 on 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 one around data engineering, but a lot of the other languages are a bit too dispersed. So for instance, Java, JavaScript, there isn't really one community there are a lot of sub communities 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 One 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.
Andrew Smith
0:44:27
That's interesting. Yeah, that's interesting. What so so yeah, my impression wasn't wasn't completely wrong. Then I went to Django con last year, which I loved. And because I thought I was going to learn Django and did start to then realize that I didn't want to do a website for my main thing, but the other I'll try, I'll have a look at DevOps. And the other thing that where I do think there is a fantastic community is in the Civic code movement, which is just the most exciting thing I think, because they're really, really good, useful work being done. by developers, 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 to at the moment, which will get stronger.
Tobias Macey
0:45:15
One 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
Andrew Smith
0:45:31
yet as a wickedly Good
0:45:34
job. I was myself many times, there's some there's a there's a
0:45:38
number of things one one is that I'm learning to live code music, which is a really exciting thing. I think 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 going to I'm going to get involved and try and get on the bottom of building and learning when I have talking Going to perform it. So that's terrifying, but would be really fun. And that's another community that I've done, I have met, you know, got involved with that I like a lot. And it's, it's developing quite rapidly right now, too. And the other thing is that there's a project, which I can't really tell you about it I without having to, you know, kill you first and then all you're going to 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 specific time. So those are the two 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 then various, various other things that I've that I've sort of been through. It's changed a lot. As I 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 want to do and you don't really know what you want to 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 pi con, there was a wonderful piece that it was Kurt Kaiser, who did it, I think which was about automating that his birdwatching habits. And so he, he used a sort of quite basic level neural network, I think it was what he was doing. I mean, it sounded extraordinary to to be able to identify the birds that were that were coming and 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 as the kind of hardware project to to keep the squirrels away from his bird feeders, which is a problem. I have I live in a forest, California. So it's thrown in my head, too. And it what it did was, it could track he
0:48:08
managed to make
0:48:10
one of those water rifles track a squirrel and distinguish between the squirrel and a bird, and then fire the water, drink water at the square or then run away. And initially I thought, This is what I want to do this is useful, it's great. And it was only when I looked at what it would involve doing and the amount of learning I would have to do in order to be able to do something like that, that I realized, no, I'm not going to be doing that. That's four years down the line. And so a lot of projects you look at also, sort of for that way to 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, well, no way that's that's way harder than I realized it which leads to the broader point of one 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 work on any machine, and that everyone's computer is different because you've got different dependencies on 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 supercollider last week, which is that that sound generation program I was having a year and then the sort of music program and 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 in two 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 obviously realize how much help you need. And that people talk about the old days of, you know, software engineering where you could have these lone lone wolves who can kind of 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.
Tobias Macey
0:50:22
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 could appreciate your sentiment there.
Andrew Smith
0:50:39
Yeah, it's uh, well that's really eye opening because in in everyday life
0:50:43
when I know that people around me and used to be me as well, if they put a bit of software on their on them laptop and it's not immediately working and they get angry, they get furious and I found my I find myself now always taking taking this side of the developers going to you know how hard that is, it's probably just clashing with some niggling little thing that you've got on your on your laptop on. But you know, we'll find it to take it out. But it's, it does teach you enormous respect. We're doing this in this incredibly difficult thing.
Tobias Macey
0:51:16
And so now that you have delved into some of the peculiarities of Kotor land, 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 and writing the book?
Andrew Smith
0:51:34
Yeah, that's another really good question. It's it. I mean, the advice of the engineers
0:51:39
it's don't just spend time with engineers.
0:51:42
And I think in Silicon Valley, that's a danger because it's very easy for people just only to spend time around people like themselves and as we know, you know, there is a big diversity problem and in engineering in the valley, in the people tend to come through the same schools and how roughly the same kinds of backgrounds. And so my my hope would be in mind, 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 do you know see people in different places do different things don't just hang out with, with other engineers.
0:52:23
Because the, you know, the word the the world outside of a laptop
0:52:30
doesn't always function the same way as the the ideal one 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 kind of magical what everyone's doing. It's, it's really 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 going to get that right and some things we're going to 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 one of the things that you learn from watching software engineers is that everything is process. It's all process, nothing is ever finished. I mean, there are there are bugs and everything you do, you know, you're always having to fix things. And I think those are really good skills. One 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 coders as being this kind of inflexible automaton. And that's really not true. You have to have such a flexible mind to do this. Also to be able to focus I mean, I understand that thing about people on the autism spectrum of sometimes having an advantage because they can focus very intensely on something for for a time an engineer Google was telling me that they do think there is something in that, because there's 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, one of the things I wish for people who aren't software engineers, you know, from people who have no interest in it will think they're not interested in 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 it that unhappiness will find you in the end he will live in a more feed Brio difficult environment and you won't be able to escape it. So really thinking you're out of your own interests. 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's 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 is the same thing that I say to their friends is the same thing that I said 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 mean, I think about this all the time with my work, I have to and, and I, I would that would be my wish for the world of engineering, and every other words,
0:55:55
for that matter.
Tobias Macey
0:55:57
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.
Andrew Smith
0:56:13
No, I don't think so. That's that was that cover that covered? A lot, a lot of ground and,
0:56:18
and it's really interesting. I mean, I could talk about this, you know, for weeks on end, I think it's so fascinating and I really envy the when I was when I was
0:56:28
young. Engineering wasn't something that that that would ever
0:56:34
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 sequences and so on which were which were primitive computers. So had some connection with it, but the idea of do something Be often in two 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 Zach spectrum ZX Spectrum or wanting a Commodore 64 or something like that. And whereas I was someone who would want to sit in front of it and do some stuff until I got bored, and 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 and 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 a little bit in a 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 luckiest one of the luckiest people live to get to do that. This, and CN to meet with people who are doing it full time.
Tobias Macey
0:58:05
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 going to move us into the pics and this week I'm going to choose the three line podcast from NPR. And it's an interesting show that uses historical context to try and shine light on the some of the motivations 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 pics this week?
Andrew Smith
0:58:46
Actually, yes, 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 um, it's a podcast and I can't remember it was called 20 hertz or hundred 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 got to listen to it yet, but the way that they told me about it, I know I'm going to be
0:59:13
completely taken with it, because they were.
0:59:17
And so that,
0:59:18
that that sounds that sounds something that it's probably worth having a look at.
Tobias Macey
0:59:22
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.
Andrew Smith
0:59:35
They'll be a copy for you in the mail.
0:59:37
Yeah, thank you very much, Tobias. That was really fun. I enjoyed that very much. Thank you.
Tobias Macey
0:59:44
Thank you for listening. Don't forget to check out our other show the data engineering podcast at data engineering podcast com for the latest on modern data management. And visit the site at Python podcasts. com 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 host at podcast in a.com with your story. To help other people find the show, please leave a review on iTunes and tell your friends and co workers
Liked it? Take a second to support Podcast.__init__ on Patreon!
Andrew's Adventures In Coderland 1