[00:00:05] SY: (Music) Welcome to the CodeNewbie Podcast where we talk to people on their coding journey in hopes of helping you on yours. I’m your host, Saron, and today, we’re talking about the future of programming with Author and Founder of O’Reilly Media, Tim O’Reilly.
[00:00:19] TO: I think in general, our education system creates a disconnect between purpose and mechanism. We teach the mechanism and we fail to teach the purpose.
[00:00:29]
SY: Tim talks about how he got into coding, what we’re doing wrong and what we’re doing right with teaching programming today, and how we need to make coding more inclusive for more than just career developers after this.
[00:00:49] Flatiron School is one of the best bootcamps around. On campus or online, you’ll build a community of like-minded coders and learn the fundamentals of what you need to know to dive into the rapidly growing tech field. Go to flatironschool.com/codenewbie to learn more. That’s flatironschool.com/codenewbie.
[00:01:09] MongoDB is the most popular non-relational database for a reason. It’s super intuitive and easy for developers to use. Now with MongoDB Atlas, you get its flexible document data model as a fully automated cloud service. It handles all the costly database operations and admin tasks like security, high availability, and data recovery so you don’t have to. Try MongoDB Atlas today at MongoDB.com/cloud.
[00:01:38] If you like this podcast, there’s a good chance you’ll also like one of the other tech podcast that I host. It’s called Command Line Heroes and it’s produced by Red Hat. So if you’re looking for some really fun and informative tech podcast to fill your feed, check out Command Line Heroes at redhat.com/command-line-heroes. That’s redhat.com/command-line-heroes.
[00:02:08] SY: Thanks for being here.
[00:02:09] TO: Glad to be with you.
[00:02:10] SY: So your career is insanely vast. You’ve done publishing from the whole internet user’s guide and catalog in 1992, to Make Magazine in 2005. You’ve done influential conferences and now you have a new book coming out, WTF: What’s The Future and Why It’s Up to Us. But first, I want to talk about your coding journey. Tell me how you got started in programming.
[00:02:32] TO: My path was really through on the editing side starting ed and ex and vi and then those wonderful regular expressions and then getting into sed and AWK and then ultimately into PEARL. Probably the very first programming I did was Assembly Language because the very first manual I wrote was an Assembly Language manual for a data acquisition processor. And so I had to understand, you know, just literally reading and writing to registers. So getting free software and figuring out how to make it run. That was particularly true on Unix. Everything had to be ported. It was unlike the PC where you had a sort of a standard hardware set, you had a very divergent hardware set with software that was nominally the same, but had to be modified to run on your particular machines. Anyway, the web represented this advance in speaking with computers, and that up to that point, we embedded little bits of human language into code that was primarily oriented to the language of the machine. We were getting up from the early programmers who programmed in binary. We went through Assembly Language to the level language like Fortran and C and then all the way up to higher and higher level languages, scripting languages. But then here was this revolution with HTML. What we were doing was that we were embedding little bits of coding, i.e. things that would be behind programs that would be run by clicking on a link into human language. It seems so commonplace today. But in 1993 when the web first took off and particularly when CGI, what they call the Common Gateway Interface, the ability to hook up a database or program behind the link as opposed to just linking to another document. It was this sort of very, very different experience where you very easily create an environment where you could give instructions to the computer that were embedded in human language. And I think we’ve continued to explore that. If you think about something like Jupyter Notebooks today, they’re really an expression of that same use case where a scientist writes a paper and they go, “Well, here’s my data and here are the programs I use to manipulate the data and you can modify them here.” And here’s the program embedded in a human language context as opposed to you have to go in there and you go, “Okay, well, there are some comments that are embedded in here in the program or this error message is embedded in the program,” the program is embedded in a communication of humans.
[00:05:12] SY: I want to dig into that because we talked about what it was like to program over the years. We talked about the past a little bit. I want to hear what you think about programming today. How would you describe today’s version of programming?
[00:05:24] TO: Obviously, there’s a vast range of approaches to programming. There are still people who are programming in ways that we’ve been familiar for the last 20 years. But I think with the rise of machine learning and AI, yeah, you’re effectively rather than telling the computer exactly what to do, you’re feeding it lots and lots of data and building a model in which decisions are made and optimizations are made and you don’t know what the output is going to be. And [00:05:55] a lot of revolutions in programming that are just starting and that we’re a long way from being done with.
[00:06:02] SY: When we think about the future of programming specifically learning how to code, I assume you have ideas and thoughts about things we’re doing right and maybe things we’re doing wrong. I want to hear what you think we’re doing wrong, especially when it comes to schools and courses and programs helping people learn how to code. What are we messing up right now?
[00:06:19] TO: Well, the first thing that is wrong with a lot of coding instruction is that it’s abstract, kind of like the way we teach math. And yeah, we’ve known for years that that’s bad. Math is incredibly useful and yet we teach it with these toy problems. I think that the most important way to teach programming is to expose people to problems where they discover that this is a superpower rather than going, “Oh, well, we’re going to teach you Python.” It’s Python for what?
[00:06:55] SY: The application.
[00:06:55] TO: Yeah. That’s really how I learned. I was just trying to solve problems and it was like, “Oh my gosh. This is a really powerful set of tools for solving this problem that I have.” And I think in general, our education system creates a disconnect between purpose and mechanism. We teach the mechanism and we fail to teach the purpose, and there are environments. Kids kind of doing Minecraft and they kind of slip imperceptibly into programming the same way I slipped imperceptibly into programming simply by trying to run my business using a Unix based system that had this environment, but clearly you could do things the hard way or you could invest a little bit of time and get the computer to do more of the work and that’s really what programming was for me. It was like, “Oh my God, this is a superpower.” Like when I’m indexing a book and I’m writing out this kludgy program that’s a mixture of sed and AWK and Shell scripts, but I can index a 2,000-page manuscript in four or five hours because I’m having the program do most of the work and I’m just sort of cleaning it up and then cleaning my script up and feeding it back through again. Yeah, I was like, “Oh my God, I am Superman.” And that’s the experience that I think particularly for kids that you want them to have, that there’s something that they want to do. So game-based environments are fun or if in fact they do want to put up a webpage, great. There was a time when putting up a webpage was kind of cool, but now it’s kind of… But in general, starting with the problem is good. You know, schools like the [inaudible 00:08:35] School, they don’t even teach courses. They just basically have a curriculum, but it’s based on a succession of problems and then resources to solve those problems, whereas a lot of coding instruction is like, “We’re going to start from ground zero. We’re going to teach you the basics. We’re going to build up this body of knowledge.” And again, I can’t argue against that. There’s a lot of people who’ve come that path, what did computer science in school and they learned an awful lot. But this sort of also just a working programmer and I think of this like somebody like myself for whom it was just part of my business or a scientist who says, “Wow! You know, I actually need to do R for data analysis.” And then they go, “Oh, actually I could do this better with Python and NumPy.” You’re improving your skills in pursuit of a goal.
[00:09:30] SY: I’m curious what you think about more short-term programs because I think the idea behind bootcamps and those 9-week, 12-week programs are exactly addressing the problem that you’re talking about, which is, “What am I actually going to use this for? How do I use it? What do I get after learning all this stuff?” And I think it’s way more application driven and way more hands-on than a traditional four-year degree. Do you feel like that is helping to solve that problem or what are your thoughts on bootcamps in that type of instruction?
[00:10:01] TO: You know, it really depends on the bootcamp. I think there are just like with any kind of education. If there’s a mismatch between what skills employers are really looking for and what’s being taught, then it’s not going to go well. You spent a lot of time on a set of skills that maybe they’re transferable, but I think there are some set of inflated expectations that get peddled a lot particularly by some of the lesser schools. But again, I’ve watched some amazing programs. I was in particular I think of this coding school at San Quentin, The Last Mile, where they’re teaching people to code and then basically they get a job. It’s the best job in the prison, you know, is being a coder. You’re literally building websites for people. And how awesome is that? These guys have never seen a computer and they’re working in one of the hardest environments because you have no access to the internet. You know?
[00:11:00] SY: Yeah. Yeah.
[00:11:01] TO: But they’re getting these skills and then they’re able to use them, and yeah, they come out and getting jobs, and yeah, absolutely. That’s wonderful. But again, this is just a bias. I’m just a fan of learning by doing.
[00:11:18] SY: Yeah.
[00:11:19] TO: The thing I worry about is if it’s not real problem first, you can fall into the problem that Richard Feynman talked about with physics where you don’t really know how to apply what you know. He has this great passage in, “Surely, you must be joking, Mr. Feynman,” where he been asked to critique Brazil’s physics program that they were very proud of and he said, “I’ll only come down and spend time with you if you’re actually willing to hear what I have to say.” He was scathing. He said, “You know, you could ask them any formula and they could recite it.” But here I was in a class where they had just discussed something. I can’t remember what it’s called now. It’s a particular formula for measuring distance using the angle of incidence of light. See, he says to the class, you know, looking out the window, he says, “How far do you think those boats are in the harbor?” And he said, “Nobody had any idea, despite the fact that we had just been discussing this particular formula that would be used to solve that problem.” And they could recite the formula backwards and forwards if you ask them about it. There is a kind of thing that you get when you don’t know and you’re struggling and you often do it badly at first, but then you get better at it.
[00:12:53] SY: If you’re looking to excel in a new rewarding career in tech, you can start right now by signing up at Flatiron, a global school that has helped thousands of students from all backgrounds invest in themselves by learning to code online or in person. Not only will you be able to learn popular languages like JavaScript and Ruby, but also important skills like how to ace your job interview. Go to flatironschool.com/codenewbie. That’s flatironschool.com/codenewbie.
[00:13:22] As a programmer, you think in objects, with MongoDB, so does your database. MongoDB is the most popular document-based database built for modern application developers in the cloud era. Millions of developers use MongoDB to power the world’s most innovative products and services from cryptocurrency to online gaming, IoT, and more. Try MongoDB today with Atlas, a global cloud database service that runs on AWS, Azure, and Google Cloud. Configure, deploy, and connect to your database in just a few minutes. Check it out at MongoDB.com/Atlas. That’s MongoDB.com/Atlas.
[00:14:07] SY: One of the things that has really been made possible by bootcamps and online instruction and courses and such is just the fact that we can reach more people and include more people in the world of technology. I want to know how do you think about what a program or even is. Is there a distinction between the hobbyist and the career developer or are those lines blurred at this point or how do you think about the landscape of who gets to be a coder nowadays?
[00:14:34] TO: I guess I would say that I wish that we didn’t think of it as a profession as much as we do. There are people who say, “I’m a writer,” but we expect everybody to be able to write or we should.
[00:14:49] SY: Yeah.
[00:14:49] TO: We need programming to be more the fabric of everybody’s skill set.
[00:14:55] SY: Yeah.
[00:14:56] TO: And I think that we’re running down the same path a little bit that we went with math where people literally can say, “Well, I’m not a math person.” It’s just like, can you imagine somebody saying, “Well, I’m not a word person”? No. Everybody should be a math person and everybody should be able to understand that we have this tool that is so powerful at our disposal and it’s not that hard to build the skills to give instructions to this tool because that’s really what programming is. It’s literally saying I want to be able to talk to this machine and have it do things for me. And so everybody should have some access to that. So again, I do think that there’s a wonderful place for professional coding. I make my living off of selling information to professional coders. But first off, we’ve created environments that don’t encourage coding. The thing that I loved about the Unix command line was that the same language was your first programming language. You issued a command. And as we moved into gooeys, we kind of abstracted away that layer where you could learn to talk to this thing. And again, we see it crop up periodically. HTML was like that. Literally you had view source and then it became more and more complex with CSS and JavaScript embedded in the program in various frameworks until you could no longer just look at the code as a not particularly sophisticated program or maybe even being a non-programmer and kind of understand it and modify it. And so we complexify these environments to the point where it’s no longer possible for somebody who’s not trained in the dark arts of programming to interact fully and properly.
[00:16:54] SY: Yeah.
[00:16:55] TO: We would be well served by having more environments. And again, they crop up like Minecraft. Programming is sort of a natural outgrowth of what you’re trying to do.
[00:17:09] SY: It’s like an adult Minecraft almost.
[00:17:10] TO: Yeah. I mean Unix was like it. It’s like an adult Minecraft. Jupyter Notebooks are kind of like an adult Minecraft. You know, I mean, Excel macros are that, but I don’t think there’s enough attention spent by people who build interfaces, to build those power user interfaces that lead imperceptibly into programming.
[00:17:34] SY: Tell me what the value of that is. If we had more adult Minecraft, so we had more of these environments for people to naturally become programmers, what is the effect of that for the tech community as a whole?
[00:17:47] TO: Well, if you blur the boundaries between being a programmer and being a non-programmer, if everybody has some computer literacy, first off you get out of this problem where computers are foreign and other and I don’t do that stuff, you’re less helpless in the face of technological change. And that’s important, to have it be an inclusive culture. You mentioned Make Magazine and this is really the creation of my colleague, Dale Dougherty. But yeah, this is an example of a kind of a culture. Programmer is a maker and we have a culture that is so focused on people becoming consumers and the understanding that you can change it. One of the Make’s slogan used to be, “If you can’t open it, you don’t own it.”
[00:18:43] SY: Oh, interesting. Yeah. Yeah.
[00:18:43] TO: That’s a great slogan for our device. If you can’t open it, you don’t own it. When I say open it, I mean modify it. Again, we’ve created ways for people to add to their phone by downloading new apps from the App Store, but we don’t really have a development environment there that makes it easy for people to create repetitive actions, for example. I’ve often wondered like with Siri or with Alexa. When is somebody going to create the equivalent of a voice shell? Yes. They have some ways that you can create routines and so on for Alexa, but they don’t really have it in the form that you had it in the Unix shell where it’s really in the same language. You create a routine through this UI rather than for example have, you know, I think about the beauty of the Unix shell was that you could issue a series of commands and then you could save that series of commands into a file and run just that one command now and it would run the whole series and then you go, “Oh, well, so these programming constructs. If you want to do it, iterate over a set of files, here’s how you would do that. Oh, if you wanted to do it as a fixed number of times, here’s how you do that. Hey, you can also have conditions.” And you start bringing in these programming concepts and before long that simply let’s just record what I did and run it over again becomes a program. And imagine what that would be if right now I say, actually if I say it right now, it’ll wake up. If I were to say, “Alexa, what’s the weather?”
[00:20:25] ALEXA: Oakland, it’s 64 degrees Fahrenheit with showers. Today, you can look for intermittent clouds with a high of 72 degrees and a low of 57 degrees.
[00:20:35] TO: But how nice would it have been? It turned out I did laundry this morning and I hung it out on the line and I didn’t happen to check the weather and how nice would it have been if I could have said, “Alexa, please tell me if it’s going to rain.”
[00:20:52] ALEXA: It’s raining right now.
[00:20:54] TO: Yeah. Well, she told me that today, but say, “I want you always do that.” It’s just things like that and you go, “Wow! If there were just affordances in the language that Amazon is building, people would find their way into programming.”
[00:21:09] SY: Yeah.
[00:21:09] TO: they’re like, “Let’s put some conditionals in here.” It’s like, “Alexa, tell me the weather whenever there’s a day that is going to rain.” Now, see, all she does is tell me today.
[00:21:21] SY: Right. Coming up next, Tim talks about what he’s excited about, what the current state of programming, and what we can do to have a better tech future after this.
[00:21:47] Did you know JavaScript was created in 10 days? Command Line Heroes, an original podcast from Red Hat that I host, is back for Season 3 and it’s all about programming languages. In this clip of Episode 3, we chat with Charles Severance, a professor at the University of Michigan School of Information about Brendan Eich, the man who created JavaScript in 10 days and how he created it like a Trojan Horse.
[00:22:15] When JavaScript was released along with Netscape Navigator 2.0 on November 30th, 1995, all that magic was housed into a powerful little seed of a language, 28 companies, including America Online and AT&T agreed to use it as an open standard language. When it was released, there were some old pros looking down their noses at JavaScript. They thought it was just a language for newbies. They missed its revolutionary potential.
[00:22:47] CS: Brendan decided he would sneak in all these super advanced concepts from languages that are not well-known that were very like advanced object-oriented languages. So JavaScript is almost like a Trojan Horse. It’s sort of sneaked into our collective consciousness with the idea that it was silly and fun and easy and lightweight but then built-in from almost the very beginning was a powerful, deeply thought, well thought out programming language that’s capable of doing literally almost anything in computer science.
[00:23:19] SY: You can find it wherever you get your podcast and make sure to check out the show at redhat.com/commandline.
[00:23:30] Okay. So we talked about the ways that technology could be better, the tools could be better, the way we teach people could be better, but I’m wondering what are the things that we’re getting right? What are you excited about when it comes to the current state of programming and maybe even the future programming?
[00:23:45] TO: I love some of these interactive environments like Jupyter Notebooks. I think that they are making it possible to record our interactions with computers in new ways. The fact that we have a crisis of reproducibility in scientific research, for example, because all we had was the ability to describe a process. Well, we did this research and you leave out a lot of details. And one of the beauties of programs is that if you leave out details, they don’t run. And so when you actually have to tell what you did in a way that’s runnable, you start to make some big steps towards solving a problem like scientific reproducibility because you’re actually having to capture all the variables, you’re having to provide the data that you need. So that’s really great. I think that the transformation of the open-source revolution into… we don’t really even think about licenses. We just share the code via GitHub and the ease of software distribution is kind of a fabric and infrastructure of people being able to build on each other’s work that we just take for granted today.
[00:24:56] SY: Yeah.
[00:24:56] TO: I still remember when I wanted to, I have it actually up on the wall of my office, I have two diskettes that were sent to me by a guy in Cleveland, Ohio with the source code for UCP and Usenet for this Burroughs Computer. This actually was the Convergent Technologies’ mini frame. It’s like, “Hey, it didn’t come standard with Unix System V and I wanted to be able to run it.” So I basically was able to get on and send out a message saying, “Does anybody have this?” And some complete stranger sent me these diskettes through the mail so that I could get the code for this particular machine.
[00:25:31] SY: Wow!
[00:25:31] TO: And you know, it was hard though. You had to go find somebody and they had to send you a tape or a diskette. And now it’s all there. That thing that was sort of rare in the early days, you join a user group, I still remember the Boston Osborne Users’ Group and they had these diskettes, bog live, all these free programs, it’s like, “Wow!” Here’s the source code for adventure, for the Osborne,” and you can run it and it’s very easy to take that for granted if you don’t remember a world in which that was a rare countercultural activity. The other thing I think of course is the amazing frontiers of what is happening with AI and algorithmic systems. There was a lot of focus on what is going wrong like Facebook’s runaway algorithms or YouTube where they’re showing people more of what makes the company more money, but it actually has bad social effects, but there’s really a marvelous fabric of computing being built for our society where we can take into account many, many complex factors and come out with better answers. There’s a great quote from Paul Cohen who’s the dean of the Information Systems School at the University of Pittsburgh. Before that, he was the DARPA program manager for AI and he said, “The opportunity of AI is to help humans model and manage complex interacting systems.” And that ability to take massive amounts of data and model and build something that just works autonomically. For example, I was at an Amazon conference and went to a session about the kinds of predictions that they have to make in order to make the Amazon Locker System work where you can go pick up your product or drop off or return. This is incredibly complex combinatorial problem. How big are the things that are being shipped on average? How long do they stay there? How often do people not come pick them up at all? And they take all this data and they manage it they optimize it and they somehow make this thing work.
[00:27:44] SY: Yeah. I mean, it’s really incredible the things that are possible today.
[00:27:48] TO: Or just think about the complex routing fabric of getting you your Uber or Lyft, it’s astonishing. And so all of these things in the physical world where programming is starting to touch our lives and not just our screens is really the Forefront of something, really big. Where I see it is actually when I talk to people at all line companies and they don’t understand how much their white-collar jobs are going to change because they’re used to for example say having an analyst who is studying something and making a recommendation or a decision or an executive making a decision. And many of those day-to-day decisions have to become autonomous. So I wrote a piece three or four years ago, Sloan Management Review asked me to write something about the future of management. I said, “You know, when you look at Google and Facebook and Amazon, it’s very easy with the 20th century mindset to imagine that those programmers there are workers and they’re just producing software in the way that people in a factory produce widgets, they’re workers. I said, “No.” The workers at Google and Amazon and Facebook and Twitter and all these companies are programs and all those programmers are their managers. That’s the future of management. You’re basically building stuff and then you’re looking and see how well it’s performing and then you’re tuning in and you’re giving it feedback. What is the programmer at Google do and the search team? They basically saying to one of their workers, “Hey, you didn’t get that quite right. Here’s the way to do it better.” They give you the instruction. It’s like in the old days that would have been thought of as management, right? These all line companies don’t get it that it has to become autonomous.
[00:29:42] SY: So I’m wondering, what is one thing that we can do today to give us a better tech future?
[00:29:48] TO: I guess the first thing would be to get rid of the myth of the unicorn startup. I think our tech culture has been corrupted by money pretty seriously. I mean, there are great companies still being formed, no question. But for so many software entrepreneurs, I say, “How are you? What are you doing?” And they give me something. I say, “How are you doing?” And they say, “Well, we raised our series C.” And I’m going, “Well, that’s not how you’re doing.” What are you actually accomplishing? And it’s all about, “Well, am I raising money? What’s the valuation that I’m getting from my company?” And I find the most interesting times in my career have been when people don’t think there’s a lot of money to be made, they just think there’s an opportunity to do something important.
[00:30:36] SY: Absolutely.
[00:30:37] TO: That’s one reason why for the last number of years I’ve been spending time working with software and government. When people go to work for Code for America, a nonprofit started by my wife, they’re basically saying, “I want to make a difference,” when people go the United States Digital Service, which was something else. She started it when she was at the White House. They’re saying, “I want to make a difference.” I love it when people are motivated by that kind of desire to solve real problems. And again, that’s part of why I find that the use of technology in science in many ways more interesting than a lot of the startup scene.
[00:31:22] SY: Now at the end of every episode, we ask our guests to fill in the blanks of three very important questions Tim, are you ready to fill in the blanks?
[00:31:29] TO: I’ll find out when you asked me.
[00:31:32] SY: Number one, worst advice I’ve ever received is?
[00:31:35] TO: That’s a tough one, the worst advice I’ve ever received. I received lots of good advice. I don’t tend to remember the worst advice.
[00:31:43] SY: What’s a piece of advice that maybe you’ve ignored?
[00:31:46] TO: Very early on, I had a meeting with a guy from the Harvard Business School about my company. This would have been early ’80s. And he said, “You’re doing everything perfectly, but you don’t have a board of directors,” because I was a self-funded company, and it took me about 10 years to get to the point where I actually hired people who I was forced to be accountable to. That’s probably not a lot of companies in that place because they have investors, they get aboard, but forcing yourself to be accountable as a CEO is hard. That was something I left too late.
[00:32:23] SY: Number two, my first coding project was about?
[00:32:26] TO: The earliest major coding project I did was writing accounting order entry system in dBase II on an Osborne Computer.
[00:32:34] SY: Nice. Number three, one thing I wish I knew when I first started to code is?
[00:32:40] TO: How much sleep I would lose.
[00:32:42] SY: Interesting. Tell me more about that.
[00:32:44] TO: Well, coding is incredibly addictive. I still remember one time I was writing a program and debugging it and I was living in Boston and my office was in a barn next to my house and it wasn’t heated particularly well. And I went in, my wife and kids have gone to bed and I went and just said, “Well, I’ll just do a little bit. I got to do some work on this because it’s due tomorrow,” or whatever. Yeah, I remember, it’s maybe five or six hours later, I suddenly realized I was frozen to the bone.” It was winter and I was just wearing a T-shirt. I don’t know what happened. But coding can be so incredibly absorbing because that feedback loop that I get, right? You’re trying things, you’re debugging, you’re trying to solve a problem that you just shut out the outside world and I remember getting so sick after that. And the same thing with sleep. It’s incredibly addictive, which is why programmers often have bad hours.
[00:33:45] SY: Well, thank you so much Tim for joining us today.
[00:33:47] TO: Thanks very much.
[00:33:55] SY: This episode was edited and mixed by Levi Sharpe. You can reach out to us on Twitter at CodeNewbies or send me an email, hello@codenewbie.org. Join us for our weekly Twitter chats. We’ve got our Wednesday chats at 9 P.M. Eastern Time and our weekly coding check-in every Sunday at 2 P.M. Eastern Time. For more info on the podcast, check out www.codenewbie.org/podcast. Thanks for listening. See you next week.
Copyright © Dev Community Inc.