a16z Podcast - a16z Podcast: Coding as Literacy

Episode Date: January 19, 2015

Tracy Chou from Pinterest, and Chris Granger and Jamie Brandon from Eve, discuss whether coding is a literacy (or as Granger puts it, a "superpower" ). But as software infuses every industry... and much of our lives, do we all really need to start writing code? Or is a less hands-on approach -- educating ourselves about what software can (and can't) do, and the basic architecture behind its creation -- the most useful way to gain software literacy for most people? The views expressed here are those of the individual AH Capital Management, L.L.C. (“a16z”) personnel quoted and are not the views of a16z or its affiliates. Certain information contained in here has been obtained from third-party sources, including from portfolio companies of funds managed by a16z. While taken from sources believed to be reliable, a16z has not independently verified such information and makes no representations about the enduring accuracy of the information or its appropriateness for a given situation. This content is provided for informational purposes only, and should not be relied upon as legal, business, investment, or tax advice. You should consult your own advisers as to those matters. References to any securities or digital assets are for illustrative purposes only, and do not constitute an investment recommendation or offer to provide investment advisory services. Furthermore, this content is not directed at nor intended for use by any investors or prospective investors, and may not under any circumstances be relied upon when making a decision to invest in any fund managed by a16z. (An offering to invest in an a16z fund will be made only by the private placement memorandum, subscription agreement, and other relevant documentation of any such fund and should be read in their entirety.) Any investments or portfolio companies mentioned, referred to, or described are not representative of all investments in vehicles managed by a16z, and there can be no assurance that the investments will be profitable or that other investments made in the future will have similar characteristics or results. A list of investments made by funds managed by Andreessen Horowitz (excluding investments and certain publicly traded cryptocurrencies/ digital assets for which the issuer has not provided permission for a16z to disclose publicly) is available at https://a16z.com/investments/. Charts and graphs provided within are for informational purposes solely and should not be relied upon when making any investment decision. Past performance is not indicative of future results. The content speaks only as of the date indicated. Any projections, estimates, forecasts, targets, prospects, and/or opinions expressed in these materials are subject to change without notice and may differ or be contrary to opinions expressed by others. Please see https://a16z.com/disclosures for additional important information.

Transcript
Discussion (0)
Starting point is 00:00:00 The content here is for informational purposes only, should not be taken as legal business tax or investment advice or be used to evaluate any investment or security and is not directed at any investors or potential investors in any A16Z fund. For more details, please see A16Z.com slash disclosures. Welcome to the A16Z podcast. We are sitting here in the offices of Pinterest in San Francisco, sitting next to a car where there's two computer monitors. attached to it somehow. So we're happy to be here at Pinterest. And I'm here with Tracy Chow, who's a software engineer at Pinterest, not surprisingly, Jamie Brandon, a software engineer at Eve, and Chris Granger, another engineer and founder of Eve. Today's topic we want to get
Starting point is 00:00:49 into, since we have all these software engineers in the room, is coding and coding as literacy. and to what extent we think that software and coding needs to be a part of everyone's lives. And if it does, then how it does. So, Tracy, let's start with you because, as it turns out, you come from a family of software engineers. And if not just one, there's four of you. Am I correct? Correct. Both of my parents are software engineers.
Starting point is 00:01:17 I'm a software engineer. And my sister is a software engineer. So in your lifetime, it sounds to me like, I mean, you're almost a software engineer. too perfect example but how did software play a role in your education and then how did you know that sort of take you to where you are now software was actually not a very big part of growing up so the elementary school that I went to did make us do some programming classes from very early on I think in second or third grade even we were programming PC logo to make these little turtles
Starting point is 00:01:49 draw stars and houses just pretty cool but was not a consistent theme throughout my elementary, middle, or high school education, I took a CS class in high school and a couple of classes in college. But I think what was most important for me throughout all that was not necessarily that I was coding a ton or building a lot of programs, but that I understood that coding fundamentally is writing instructions for computers to follow. So you have to be very precise in what you're telling the computer. So if you tell the little turtle to turn 144 degrees, it will turn exactly 144 degrees. If you're off by a little bit, your star will not complete. Right. So you have to be very precise, but what's really awesome is that
Starting point is 00:02:33 the computer will follow your instructions perfectly if you know what you're doing, and many computers can follow the exact same instructions. So it's a way of thinking about how humans interact with computers, and now that computers are so pervasive, it's very useful to have that understanding of how we build software. Jamie and Chris, I want you guys to chime in too, but how did software play a role in your education? You guys both are software engineers, so clearly it's something you studied at some level, whether it was just on your own or, you know, formally. But how did it form your education? And then, as you think about it now, how should it play a role in everyone's education, if in fact you think that's true?
Starting point is 00:03:15 So I came into it pretty late. We had some programming classes at school, and I went through the first couple and decided that it was not for me. And it wasn't until I was... Why did you decide that? They seemed kind of pointless. We put a lot of time and effort into them. You could spend hours and hours programming, and we would get a button and you press it,
Starting point is 00:03:34 and the number goes up. And it just didn't really see the point. And it wasn't until I was university studying math that I started using programming to help me of my homework. Am I connecting it to something that I actually really understood and having it be very helpful? It suddenly became much more interesting. So it went from this kind of abstract,
Starting point is 00:03:53 oh, it's a button that doesn't do much to, like, wow, look what I can do. Yeah. Interesting. Chris. Yeah, I mean, I came out at it. I started programming really early in my life, and I was a tremendous geek when I was younger. So, like, one of the first programs I wrote, I was like, how does traffic work?
Starting point is 00:04:09 So I wrote a traffic simulator. That's what a normal kid does. And you were how old? I was 10 when I wrote that. But no, it was different. So the nice thing is back then, if I had written that in C++, you know, I would have never gotten anything done. But back then we had VB6, right, Visual Basic 6 got where you could drop the button directly on your little form, whatever, and you could write that program
Starting point is 00:04:33 really, really fast, right? But I came at it from, you could basically characterize my childhood as a quest for Legos. I characterized it as an infinite set of Lego blocks, right? It was this sandbox where I could build literally anything I want in it. I can make a car, I can make games, I can make all of these things. And back to your question about, like, how does that play into sort of like my education? I took some programming classes and stuff, but given that I had been doing it for so long, they weren't super useful. I think that what I gained out of it, and it's interesting you brought up logo, actually, is there are these, like, skills that underlie programming, right?
Starting point is 00:05:17 There's, like, the physical act of putting stuff into a computer and getting the computer to do it, That's one thing. But Seymour prepare, the guy who wrote Logo, has this book called Mindstorms, where he talks about what kids learned when they did that was breaking a bigger problem into many smaller problems and intuitively understanding why that's a good idea. And then almost more important than that even is this notion of error as not being a failure. So you think about like when you get a wrong answer in a math class. right um you got it wrong so you redo the problem you just did it wrong right and you do it right
Starting point is 00:05:57 or you do it as many times as you need to until you get it right whereas in software a bug is a bug it doesn't mean that you need to redo the whole program right it's a way of finding out that your process your way of thinking about something wasn't quite right you mentioned chris that that you thought that of these as legos and i i think one of the things that you're doing at eve and And Pinterest is an example of sort of complex programming underneath the hood, but that everyone gets to use. And so this idea that coding is the new literacy is this idea that we all should at some level be coders and play with the Legos and not just use the apps but kind of muck around in there.
Starting point is 00:06:42 Do you guys believe that? And what part of that rings true to you? I think it's important that people have a mental model for how the world works and so much of software is hidden away because you just see the apps interface and you don't understand everything that goes into it. Whereas with something like a building or physical structures, you can see that there are bricks that go into it or there's these structures that are physically put together. It's harder to see those things that are put together for software. So it's harder to have a mental model for how to interact with software applications, even though they are so pervasive. So I think it's very important that people have some basic understanding of how software is composed so they know how to interact with the world around them.
Starting point is 00:07:23 And as a corollary to that, people could also start to think about the ways in which software can be used to solve problems that they see. So there are a lot of people who are not technical and they don't understand how code works. They may actually encounter problems that could be very easily solved by software, but not understanding that software is a potential solution means that they'll never go to anybody to say, hey, why don't we try solving the problem in this way? So how do you bridge that gap? And I think that's exactly what we're talking about here. And especially as, you know, at the firm, we have this sort of, you know, overarching thesis that software eats the world.
Starting point is 00:07:55 But as software goes, leaves Tracy your family and Chris, your childhood and Jamie yours as well, and becomes an increasingly part of all of our worlds and all of our industries and our jobs, how do we bridge that gap from like, oh, I could fix that in software, but I don't know anything about how to do it. I mean, part of it I would actually argue this has already started to happen. So when you ask a big group of programmers what the most popular language in the world is, usually here either C or Java, which is not even close. The most popular programming language in the world is Excel. It is programming just like everything else is. And Excel is used by 800 million people every single day, right?
Starting point is 00:08:40 And it's used in every industry by people who would never in their wildest dreams, call themselves programmers. But they are using it as a tool, right? They're getting the computer to do work for them. They're getting the computer to model something for them, or whatever the case may be. And to me, that's the important part, right? And that's what part of what coding, like the phrase,
Starting point is 00:09:02 coding as the new literacy, kind of loses. It's not about everyone building apps, right? The new writing is not building an app. The new thing is about getting the computer to do work for you, whatever that may mean. being, right? Much in the same way, the original literacy, reading and writing, was a way of externalizing memory, right? It's like, I have all these thoughts, I can put them on paper, and now I can distribute them. And that allows you to think things that you were previously
Starting point is 00:09:28 incapable of thinking. Much in the same way that, you know, building these large-scale models of your entire business allows you to think about your entire business all of a sudden, right? There's a great story about an interview refinement where they discovered some of his old papers that he had written and they were they mentioned as a record of his work and he was very insistent that it wasn't record of the work it was the work like the work happened on the paper and he was just peripherally involved I think this idea of kind of like mental prosthetics is very important like you can make yourself more intelligent if you have these mental tools that allow you to offload parts of the thoughts that you don't want to have to deal with yourself
Starting point is 00:10:05 does that mental tool model then jibe Tracy with your kind of view of of how coding can help lots more people and lots more industries than it is right now? I think that's one aspect of it, but I think another big piece of it is just understanding where we can use software to solve problems, even if it's not something that you're directly using. So if I see a problem and I understand that a potential solution to that is software that someone else may build, then I could go start a company and try to recruit people to help me build a software solution to that problem, but just having a model of what tools are out there, and what are the ways in which we can leverage software to change the
Starting point is 00:10:44 world? I think it's a slightly different thing than using those tools directly. Right, and I think we're starting to see examples of that in companies that get started by, you know, people who have ideas, right? Like, wouldn't it be great if? Now, do I know how to build it myself? No, but I know some smart people who can help me. It's possible. They know it's possible now. Right. But is there a danger? It sort of reminds me of like, well, we'll just fix that in post-production. Like, you know, software can solve that problem, software will do it, how in-depth does our understanding need to be to sort of understand what can and can't be done? Or should we not even think of it in those terms?
Starting point is 00:11:22 So I actually made a lot of people who say they want to learn coding. They'll say, well, my news resolution is to learn how to code. And I often respond with a question, do you actually want to learn how to code or do you want to understand how software is architected and how things come together? So I will use an analogy sometimes with people to say, you know, building a software application is somewhat like building a physical building, except that the software engineer also has to be a bit of an architect as well as a construction worker. So we're thinking about, like, the product specs. Like, are we building a church or are we building an apartment building? The recs are going to be very different for these different use
Starting point is 00:11:53 cases. Or are we going to build a shack because we don't have resources? Like, you know, we figure out what we're trying to build. So you're architecting that out a little bit. And then you're actually also the construction worker. We have to go assemble pieces together. Maybe you have to do the wiring and plumbing work as well. But it's not just, you know, it's not just hammering a nail. Like that's, that's like the really basic parts of coding. Like you can write an if statement or you can write a for loop, but that's not what pulls together an entire building. And so I think what a lot of people want to understand is like what is the process of constructing a building, like what are all the pieces that go into it? But they think that it's just, if I learn how to
Starting point is 00:12:29 write a little bit of code, I'll understand everything that goes into software engineering. I mean, let's talk about the complexity of software then. What you guys are doing at Eve, in some ways, it seems to me that you're removing the complexity, or at least there's an abstraction where I don't see it. But should I? And why take that route, Chris? So I think there's different ways of looking at it. What you're talking about is like systems level.
Starting point is 00:12:55 I'm trying to build. I'm trying to model, you might argue with me about that term, but I'm trying to model some system, right? And there's an inherent amount of complexity in modeling any system. If I want to model macroeconomics, that's incredibly complex and something I probably cannot do. However, if I want to model my house, yeah, maybe with some time and some effort, I can do that. But there's a lot of weird things you have to start thinking about. Well, I have to think about how do I plumb the thing? How do I put electricity through it?
Starting point is 00:13:21 And that's the truth of software, too. The thing that we're tackling specifically is all the complexity that has nothing to do with the problem you actually set out to solve, right? And we were talking about this this morning. if you think of programming as a form of modeling, right? I'm like trying to take something either in my head or out in the real world and make a representation of it that the computer can work with. We have this weird case right now where our languages, Python, pick any language, right, is actually designed to model computer interaction, right?
Starting point is 00:13:54 It's designed to model how computers work, like I'm going to send TCP messages and so on and so forth. But if you think about what we're actually trying to build, we're trying to model humans. We're trying to model processes that exist in the real world. So Pinterest, as an example, is modeling the process of collecting lots of information and having, you know, a nice way of looking at it. And Facebook is a way of modeling human interaction, right? But we're writing these things in a language designed to talk about computers,
Starting point is 00:14:21 which is there's fundamental disconnect. Right. And so what we're trying to do is, it turns out if you can remove that disconnect, if you can start to express things in such a way where you're, really getting at what you're actually trying to model. All that complexity of dealing with, well, I need to send a packet over here using TCP just goes away. That's not what's important.
Starting point is 00:14:46 And so that's what we're focusing on. You can't get rid of the fundamental complexity in a problem, right? Like it's inherent, it just exists. But the very least you can make it easier to deal with. It's kind of meeting people in the right place. Like if you're working with a group of scientists and you want to give them software tools and they're like, okay, we want to, you know, work on this genome. You're like, okay, well, let me explain to you how bytes work and arrays work.
Starting point is 00:15:08 And then we'll talk to you about truth and equality and gyroscript. And they don't care about any of this stuff. We're trying to, it's so unrelated to the problem they're actually trying to solve, that you're forcing this bridge, this huge gap themselves. Yeah, I mean, I was going to say, it sounds to me like your, Jamie, your experience with software engineering has been very consistent. You're like, wait, I built a button that I can't use. I want to build things that I can use and that other people can use.
Starting point is 00:15:30 And how do we make that easy? Yeah, there's a lot of sort of very highly disputed research from Piaget and Seymour Papua on the way children learn things. And one of the points that they argue for very strongly is that you can't just start by teaching them something that's very foreign. Like we can't take people and say, look, okay, here is how bytes work and here's like where things are stored in the computer. And you have to start with something that is, that feels familiar and safe. So you have to relate it to something they're already going to. understand and then gradually like push the boundaries and get back to the thing you're actually trying to teach.
Starting point is 00:16:08 I want to switch gears a little bit and have you guys all comment on this, but one of the things that's been a little bit surprising in recent studies was that the number of women in software engineering has actually declined since, you know, World War II when everyone was working on cracking codes. Do you have an explanation for that? And I don't want you to solve all of our problems right now, but like, is there a way? way of reversing course on that, do you think? And does it get at some of what we've all been talking about? I have a number of theories that I've heard posited. There was a pretty sharp decline after the 1980s, which some have attributed to major changes in marketing around
Starting point is 00:16:50 computers and also games. So in the 80s, computers started to become more popular. They started to become this concept of personal computers that people would actually bring to their homes. But they started to become more marketed as things for boys and men. Like you play games on computers. There wasn't much else that computers would do back then. So it became more gendered in their marketing. Games were also originally more mass market. And with a contraction in the gaming market,
Starting point is 00:17:16 the marketing people decided to focus more on boys and men just to narrow their consumer market so they could be a little bit more targeted. And so I think the combination of these, too made it so that computers and gaming and all of this whole sphere of activity became gendered and not as positive a place for girls and women to be in. And I think the problem has been exacerbated over time as the percentage of women has gone down has become less and less friendly to women. And I think we're starting to see a little bit of a change in that. One thing that is pretty cool is that technology is now so pervasive that everybody is exposed
Starting point is 00:17:55 to it from very early. It's no longer there. that each family maybe has like one computer and it's in the boys room, like everybody has devices, the penetration of mobile phones, which are essentially computers, super high. And everyone is now exposed to technology. So I think that goes a long way towards making it more palatable to a more diverse audience. I think one thing that is missing is the link between the fact that you can be a software engineer or coding and building these things. So a lot of people still think of these apps as just magical things that appear. I've heard of people, I've met people who didn't realize that people worked at Facebook.
Starting point is 00:18:34 Like, I thought it just existed. Like, no, there are people building that. But it's not that clear. Like, it's not the same way that you can see that there's physical construction before buildings come up, that you can't see that same sort of thing with software engine. You don't know that there's people sitting in computers writing code, and that's how you end up with these apps. So I think the end product is now much more available.
Starting point is 00:18:54 but the process of getting to the end product is not necessarily as visible whereas before with computers you could take them apart you can kind of see things inside so it's a bit easier to understand that there's engineering that goes into these things now everything is all like one piece like one body
Starting point is 00:19:08 laptops and like your phone you're never going to take that apart so I'm not really sure which of those factors is going to weigh more heavily but I do think it's pretty cool that most people now have access to some sort of computer whether it's like a mobile phone or an actual computer
Starting point is 00:19:24 So the One Laptop Bachar project had this fantastic idea where there is a view source button on the keyboard. And so if you're using an app, you press this button and it shows you the code and you modify it and it just injects it into the running process. So everything you have can be opened up and played with, which is very different from the way that mobile phones are heading now where you can't even load code if you wanted to. Yeah. So to go back to what you were saying about the history about why maybe it hasn't happened. It makes a lot of sense if you liken it back to what you were saying before, right? What are you going to use this for? In your case, it wasn't until you had mathematics homework and, like, oh, a computer can do that for me, right?
Starting point is 00:20:00 But back in, like you said, back in the 80s, computers were word processors, right? You had VisiCalc, and then you had games. And the vast majority of people I know who started programming young, programmed because they wanted to build games, myself included, right? And that's just what you wanted to do. Well, except for the odd traffic engineering. Well, and the traffic engineering, yeah, that part too. But, you know, like you said, you had experience with the end. And product, you're like, I want to do that, right?
Starting point is 00:20:27 And that just didn't exist for a long period of time. And now that is starting a change. And people are like, well, there are these things on my phone. I could imagine a game that I want to make, right? Or I could imagine this thing that I want to do with it. Or I want a to do list, for example, that works the way I do, you know. So I think it does help there.
Starting point is 00:20:47 But I think we do have to expose children at least to the notions. Like I was saying before, in that book that Pappare wrote about Logo, he talks about these fundamental abilities that you gain that are useful no matter what you do, that are useful whether you're a biologist or a physicist or you're writing your memoirs, right? Just ways of thinking that are useful. And we have to teach those in school, I think. And that's actually what that entire book is about. It's a great read if you're interested in this stuff.
Starting point is 00:21:18 Tell us the book again. It's called Mindstorm. It was written in 89, I think, or like very late 80s, very early 90s by Seymour. I don't know how to pronounce his last name. I think it's P-A-P-E-R-T. He is a professor at MIT. He wrote Logo, which is a programming environment where, like you said, you have a little turtle and it draws. And there are a bunch of really interesting insights into there about, like, how you can teach people this kind of stuff.
Starting point is 00:21:48 For example, the turtle was really important because you could say to the kids, will go play turtle, and they would stand up, right? And they would mimic what they were telling the turtle to do, and they would understand very intuitively why something was not working because you were using your body to understand it, right? Not just your head or not just drawing it. And so these sorts of lessons, I think, are very, very important.
Starting point is 00:22:12 Getting everyone to write apps, I think we should, like you said, open the box, right? You should be able to press a view source and see these things, and you should know, at least be able to be exposed to how you would go about doing them. I don't know that it's realistic, though, or even desirable, right, that we end up with, you know, far more programmers than we end up with anything else. But people like to solve the problems that they themselves have. The startup advice that Paul Graham gives is to solve problems that you have yourself. So when we have a very singular demographic of people building software, we see a lot of solutions for the same problems or maybe not very big problems. If we start bringing in people from more diverse demographics who face very different problems, say,
Starting point is 00:22:52 A lot of women who have to deal with child care, and child care is extremely expensive and a very big problem for women's equality in the workforce. We might start seeing better software solutions for that. I think it's just that right now the population of software developers can't see those problems. And it's going to have a hard time building out those solutions. It's not to say that people can't build apps for people who aren't themselves. It just takes a lot more work and a lot more research because there's not that intuition or the native experience of having those problems. Yeah, I mean, a while back, Jamie said something along the lines of the vast majority of programs aren't written because the people who would write them can't, right?
Starting point is 00:23:32 And our whole pitch when we went around with Eve was that programming is a superpower, right? And if you can do that, if you can program, there's all sorts of things you're able to accomplish. And the truth is, I mean, it's real, right? Most of the programs that could be written don't because the people like us, I'm not a lawyer. I'm not a woman who needs to, you know, who has, like you said, the intuition to build. the child care apps that we need. So as a result, they're just not going to get built. And diversity in every regard there, right,
Starting point is 00:24:00 is what we're ultimately talking about here. And the implications of that are that, you know, you do start to service an incredible swath of things. Like, we're not going to end up with just Airbnb clones and Pinterest clones, right? Eventually, we'll start to get very interesting applications that are designed, you know, I'm a biologist, I'm working on cancer. This is purely for solving, for helping me solve cancer.
Starting point is 00:24:21 Right. And the implications of moving down that road are tremendous, I think. Like, that's probably the most exciting thing about what we're doing. Well, Jamie, Chris, and Tracy, I want to thank you guys so much. I feel more illiterate, I have to say. But I do. I think this is a really important discussion, and I look forward to sort of all your work,
Starting point is 00:24:44 both in making coding more easy at Eve and certainly at Pinterest, seeing what you guys come up with next. So thank you guys so much. Thanks for having you. Thank you.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.