Unsure which programming language you should learn first?
Charles Severance, also known as Dr. Chuck, is a professor at the University of Michigan School of Information and has taught over one million students on Coursera about programming, coding, and technology.
Below, listen to the conversation or read the transcript, and hear Dr. Chuck’s thoughts on:
- How he went from wanting to be an actor to a computer scientist (1:03)
- Why everyone should know how to code (4:52)
- His best piece of advice to someone who wants to start programming (6:36)
- What programming language to learn first, Python or Javascript (10:17)
- If Python or JavaScript is still worth learning in 2020 (13:37)
- The best way to learn Python (15:12)
- His view on boot camps and what you need to do well in them (16:21)
- The best advice on how to get your first job in programming (18:30)
- The strongest thing you can show in a programming applicant (21:32)
Want to hear more from Chuck?
Enroll in his Programming for Everybody course, which is part of his Python for Everyone Specialization. Or enroll in another one of Dr. Chuck’s other classes.
If you’re a member of the press, set up an interview with Dr. Chuck or learn more about the topics he can speak to.
___________________________________________________________________________
Transcript
Coursera: From Coursera, this is Emma Fitzpatrick. And today, I’m speaking with Charles Severance. Though, you might know him better as Dr. Chuck. He’s a professor at the University of Michigan School of Information, and he also teaches programming and coding on Coursera.
Today, we’re hearing from him about why he thinks coding is an essential skill, whether you should learn Python or JavaScript first. And also, he’s sharing career advice about how to break into the industry and get your first programming job.
But before we get into all of that, Dr. Chuck is going to tell us how he went from thinking he was going to be an actor to going into computer science.
[00:00:43] I know you said theatre really helped you kind of find your purpose along the way, but math was a big part of your world growing up.
So, how did those two forces work together when you went to college? Did you ever consider majoring in theater, or did you know you wanted to go more math/computer science route?
[00:01:03] Dr. Chuck Severance: Well, when I was finishing up high school, I had a conversation with my mother in the kitchen. I distinctly remember it. We had olive-colored appliances, which was a 70s thing, and I said, “Mom, I think I’m going to be an actor. I think I’m going to go to New York City and become an actor.”
And my mom said, “Yeah, that’s great.” She said, “But I have a suggestion. What you should probably do is go to college and get an engineering degree. And then if you still want to be an actor after you have an engineering degree, then you go ahead and be an actor.”
And so I did go to university with the intention to be an engineer, and I was secretly sneaking in acting classes while I was doing all my math and engineering classes.
And I would take as many of my electives as I could, I would go take theater classes in my electives. And so I was sort of secretly trying to become an actor. And I was acting in community theater during my college, and so I was sort of scratching that actor itch.
And then I became a pretty good engineer, and I didn’t know I wanted to do computer science until I actually came to college. That’s how old I am. There were no computers in high schools, but there was a computer at the university that I went to. And I learned how to use that computer.
[00:02:22] And I really fell in love with programming as a freshman in college for the very same reason that I fell in love with acting, and that was that as a programmer, the computer pays attention to you. And that’s why if you look at my course, I’m always talking about this concept of “What next?” That the computer is like just waiting, just anxiously waiting for your next communication.
“Hello print, hello world,” and it’s like thank you for that. “Hello world,” and you say, “Four I equals 1 to 100,” and it says, “I will dutifully go do a loop for you.”
[00:02:56] So, I love the notion that the computer made me valued. I felt valued as a person when I was writing programs because first, the computer was the destination of the program. And then I realized that I could write programs that other people would use, and then that’s what really got me going.
You know, I wrote this open-source learning management system called Sakai, and you had about six million people around the world that, like every morning, they would log in and check their grades. And it was software that I helped write, and again, that gave me purpose.
I mean, it gave me attention, and so initially, I felt like the computer was paying attention to me. And then, as I begin to build software throughout my life, I was building software for an audience. And the writing of the software is not that different than singing a song in the middle of a musical with the people out there clapping at the end.
You know that that was a great song, or that was a wonderful piece of software or whatever.
And so, both programming and performing were a way for me to feel appreciated and valued and to give me a sense of my place in the world.
Coursera: Wow, that’s a really interesting take on that. Do you remember what the first programming project was that you built where you felt like you had that audience?
[00:04:17] Dr. Chuck Severance: Yes. The first thing I did was a text-based Hangman game. And so the Hangman game was a moment where I thought to myself, “Oh, wow. I’m building a thing that someone else might enjoy playing!” I could see how my creation could be experienced by the people, and I love that.
Coursera: Was that the moment when you were hooked?
Dr. Chuck Severance: That was the moment where I was hooked. What happened was I was a biology major in the night. Shortly after that Hangman experience, I changed my major computer science because I’m like, “I love these things, and I want to know everything about them. “
[00:04:52] Coursera: Yeah, and why did you see so much importance and need to teach coding to those who weren’t going to go on to be computer scientists—at least the large majority?
Why do you see it as such an essential skill now?
Dr. Chuck Severance: Well, so it goes back to the experience that I had on campus when I would watch the graduates who were doing something other than programming in their profession having a little bit of programming and seeing the tremendous value they got out of that, right?
[00:05:21] We don’t have to turn everyone into programmers, but there need to be good business majors, who know how to program, good accounting majors, who know how to program. And so I was pretty convinced that this notion of programming plus liberal arts of one form or another was a great combination for people who did not want themselves to become engineers or professional computer scientists.
My model was well, you’re going to go get a job, and it’d be nice if you know a little bit of programming. But that was just the tip of the iceberg of the demand that I found through Coursera.
How am I going to use this education? Different people use it very differently. If I can help people in sub-Saharan Africa learn a bit of programming, then I feel like the world’s getting a little smaller, and I’m helping do that. Or if I can find unemployed people in West Virginia in the United States, and we can teach them to program, and then they don’t have to work in coal mines anymore, then I feel good about that.
So, I am, at this point, an evangelist for the idea that everybody should program, and it doesn’t take four years of college to learn how to program. It takes ten weeks on Coursera to learn how to program. That’s all you got to do, and it costs almost nothing—and you can do it anywhere on the planet.
[00:06:36] Coursera: And what’s the best piece of advice you pass along for someone who is intrigued by the idea of programming—they think they want to do it, but they’re a little unsure about their ability to break into it?
[00:06:52]Dr. Chuck Severance: Well, I think that as long as we have a course like Python for Everybody on Coursera, there is enough of a little sort of magnetic draw that will get them to click a couple of times.
And one thing I really like about Coursera is the fact that the videos are public. Basically, all the lecture videos from my classes have URLs. And you can watch the video, and then it says, “Join Coursera, or join this class if you liked it.” There’s so much wonderful stuff.
And then people could stumble in, and they could watch a lecture. And they can go like, “Hm. I want some more of this !” And getting that sort of bump in the threshold in the doorway to be as small and as easy to cross as possible.
Because for me, I hope that you know if they have the smallest of motivations, and they get into the course, then they’ll be hooked, just like I was.
[00:07:46] Coursera: So, if someone is intrigued by it, your best piece of advice is really to not make a big commitment. Watch a short video.
[00:07:56] Dr. Chuck Severance: Yeah, and in particular, keep your expectations low.
Don’t think to yourself, “Now that I’m doing this programming class, I’m going to be in a cubicle the rest of my row life pounding on a keyboard like they are in the movies doing code.”
You’ll understand that taking a programming class is not that different than taking a music class. You’re not necessarily going to be a musician just because you took a music class, but you will appreciate music more.
And so I think increasingly we need to characterize programming as more of a liberal art—the emphasis on art. It’s an art form. It’s like reading. It’s like art. It’s like history. And at least the non-professional aspects of programming—Programming for Everybody—that’s more of a liberal art than it is an engineering activity. It’s not a professional activity. It’s just a general life skill, like public speaking, etc., this low-level programming.
[00:08:50] And so when you come to it, don’t expect that you’re going to necessarily convert careers. And the thing I’ve heard a lot from students about how they apply this. The most common way of applying Programming for Everybody is not qualifying for a new job. It’s either taking more classes that then will lead you to qualify for a new job—or finding ways to use programming in the job you already have.
And so that’s what is really cool. One example I use is you’re a salesperson. And you got a spreadsheet every month of the sales figures for that month, and you’d like to read 12 spreadsheets and figure out you know, who won two months in a row or something, right? So you can print out all these spreadsheets and stick them on your desk and kind of go through them with a highlighter and figure it out.
Or you spend a few minutes and write a Python program. And give it the last 12 months of spreadsheets as files, and say “Compute blah, blah, blah.” And like two seconds later, you’ve got the answer as compared to hours of like looking at pieces of paper —and then you actually get the wrong answer when you’re doing it by hand. And you say, “You know, I was a salesman before I took this class, and I’m still a salesman after I took this class. I’m just a salesman who can look at data better, so I’m a better salesman, right?”
And so that’s the kind of stories of people who to learn to program and didn’t become programmers but use technology to do whatever it was that they were doing better.
Should I learn Python or JavaScript first or learn Python after Javascript?
[00:10:17] Coursera: So, if someone is interested in coding and want to make that career switch, would you recommend Python as the first language for them to learn?
[00:10:31] Dr. Chuck Severance: Yes, but. So, I would say that Python is the first language to learn sort of from a take a class perspective—meaning that it’s the first language that you should study.
So, it’s pretty hard these days to not have run across JavaScript in your browser. You maybe looked at the developer console. You did a view source on a web page. Or maybe you built a web page, and you had to cut and paste some JavaScript in.
And so I think it’s perfectly fine to fiddle around with JavaScript because it’s right there in every browser. But JavaScript, I think, is a very bad language to use as the first language to study. And in my Web Applications for Everybody Specialization, I teach JavaScript. I teach it as the third language. I teach Python, then PHP, then JavaScript.
[00:11:24] JavaScript is an amazing language, and it’s very sophisticated. It’s not a toy language. It’s not a simple language. You don’t want to be learning what programming is with a language that has so many rough edges and sharp points and places to trip and fall. And JavaScript is loaded with places to get confused.
And so I think it’s really bad as the first language to study, seriously study. But it’s a good first language to fiddle with and play with and sort of say, “Wow. That’s amazing!” Because it’s so easy because you just play in the browser or edit a web page, and your JavaScript does something. Because you go and you say, “What JavaScript does it take to make a set of eyes that stare at the cursor while it’s moving around on a web page,” and you go find that and you paste into a webpage, and now you got this cursor that’s like moving around these eyeballs are looking at it like I did something great!
The problem is is that to know enough JavaScript to be able to run that, without just cutting and pasting it, is too difficult and fraught with so much baggage in terms of knowledge to know how to write what I just said in JavaScript.
[00:12:31] And so using Python as the first language to study seriously—kind of there’s a lot fewer distractions. You can learn what a variable is. You can learn what if statement. You can learn what a data structure is. It’s not like you’re in the middle of JavaScript, where there are these loud noises going off all the time, distracting. So, Java is a messy, messy language. It’s powerful and probably going to be more widely used.
And so I would say that the thing to do is to learn how to program, study programming formally. What’s object-orientation? You should definitely learn that—in Python. And then, when you learn a second programming language, then you can cement the concepts. So if you really want to be a programmer, you have to understand the concepts of object-orientation. And you don’t learn object-orientation with one sort of slice of the apple. You got to go at it again and again and again. It takes years to really understand it. And so, there’s no shortcut.
[00:13:28] And people who learn JavaScript and know nothing else, they’re just going to trip and fall far too often.
So, I say Python first and then JavaScript second.
Is Python worth learning in 2020?
[00:13:37]Coursera: So, do you see Python sticking around for the long haul?
[00:13:41] Dr. Chuck Severance: Python is one of those languages that I guarantee you will be used more ten years from now than today. There are 30 languages that will be used less ten years from now than today.
Is Javascript worth learning in 2020?
[00:13:51] Coursera: Do you view JavaScript in the same way?
[00:13:54] Dr. Chuck Severance: JavaScript sticks around only because we can’t get rid of it. I think of JavaScript in some ways, like it’s like an infection that we got. It’s making us stronger, and it’s the only way to get through this.
But if I could get JavaScript to go away, I would like it. I just think that JavaScript is a scary link, but it’s not going away because it’s in the browser. And a lot of advanced people use it in the server, and that’s fine.
What we’re finding is that languages like JavaScript and Python as they’re being moved from one application area to another application area. What we see is the same language, but with different libraries.
[00:14:35] And so things that used to require a new programming language, these days don’t. And there was this tendency—ten years ago and earlier —every time you have a new problem to solve, let’s make a language for that problem! And everybody’s like, “Fine!” And we go learn that language. But now, we don’t need to. We just add a Python library.
So, I think that’s the thing that’s kind of changing. And the libraries that will be using in Python in 10 or 15 years may be quite different than the libraries we’re using in Python today. But we’ll still be using Python.
That’s at least my theory on that, and I see no expansion of JavaScript into a completely new application.
What’s the best way to learn python
[00:15:12] Coursera: What’s the best way to learn Python or JavaScript?
[00:15:16] Dr. Chuck Severance: I think that it’s difficult to get started by reading a book. I think that’s where a Coursera class is a great thing to get you started because it sets your agenda and gives you some schedule and maybe some help if you get stuck and you’re in it with other people.
But increasingly, once you have the basic knowledge, you’re going to learn often by doing and searching, right? And so, you can learn by sort of writing code and applying it — and then learn some more.
Now the thing I would say though is yes, you sort of learn some Python, you learn some JavaScript, start using them, and then you learn more based on the problems that you have to solve. I think that it’s good to do stuff, but it’s also good to keep educating yourself. And it almost doesn’t matter.
I mean, that’s why the Specialization I did after Programming for Everybody was Web Applications for Everybody, which taught JavaScript, SQL, and PHP.
Now you say, “Well, is that exactly what people have to go for in their jobs for?” But I’m like “No, but it’d be good for you to learn that because then whatever job you’re going to do. If you’re going to do React, it’d be good to know all that stuff.”
[00:16:21] So, the key is, the more you learn, the more the ideas overlap, and thus, the more firmly the pieces fit in your head. So, if you learn only one language or one environment, you are surprisingly fragile in your understanding of how things fit together inside computers.
That brings up to me the fallacy of the boot camp, right? The fallacy of the boot camp is that I will take you for ten weeks and you don’t even have to be able to, you know, write your name. And at the end of ten weeks, you’re going to be a Ruby on Rails developer, and you’ll make $100,000 at the end of ten weeks.
And the answer is… first, that’s a lie. The only people that do well in that are people who probably knew four or five languages before they walked into the boot camp.
[00:17:07] I’m not saying boot camps are bad, but their ability to take you from nothing to expert in ten weeks is a lie—an absolute lie.
And so the key thing is these boot camps can be a tremendous accelerator for a career. But the right people to go into a boot camp are people who have taken like three programming languages on Coursera. Like, take Python for Everybody. Take Web Applications for Everybody. None of those are in Ruby on Rails. Then, go take a Ruby on Rails boot camp, and you will be great — and you will actually do what they say.
But they don’t tell you that you should come into a boot camp with a functioning understanding of what’s going on. Because if you don’t have a functioning understanding of what’s going on, the speed at which the boot camp is working is not going to stick.
You can’t learn new concepts in a boot camp. All you can learn is techniques in a boot camp. You need the concepts to be super solid. Otherwise, your $20,000 boot camp is a total waste of money.
And I’ve had students that told me they took my class and then did a boot camp. And they were great, and they were helping the other people in the boot camp because the boot camp was so hard for people who didn’t have the right prerequisites.
But the boot camp people will never tell you that you need prerequisites for the boot. Their prerequisite is, “Do you have a check for $20,000 in your hand?” That’s what they care about. I care about the ultimate success of the student.
And so boot camps are not bad. But boot camps are not the starting point. They’re the ending point.
[00:18:30]Coursera: And any other advice like that that you would pass along to someone interested in becoming a programmer?
[00:18:38] Dr. Chuck Severance: The most common advice I tell people who say, “I think I get it. Now, what do I do?”
Meet people. The skills that you get themselves are not sufficient for them to just knock on your door and hand you a check for $70,000 a year. Say, yep, we heard you finished your class on Coursera. Here’s your job.
Jobs and careers have to do with connections with human beings. And so what I tell people to do is go to meetups. And if you can’t find a meetup, can’t find a free code camp, go to a PyCon. Just find out when the next Python conference is and literally go. You might think, “Oh, I don’t know enough to go to a PyCon.” And the answer is you know enough, and you should go. And you need to not just know what programming is, but you need to understand how programming people are and behave.
[00:19:28] And the reason that it’s so important to meet people is that one of the hardest jobs to fill in most organizations is a low-level, entry-level programmer job. There are so many people who apply for that job that companies often won’t post those jobs. So, the job that you want to get you will find is almost never posted on like a site like Indeed.com.
But then what you find is that people who need to hire those people will continuously complain about the lack of availability of applicants. So, they’ll be like, “Man. I just need someone who kind of basically knows Python. I could use like five of them right now, and I can’t seem to find ’em.” Now what you say is like if you posted the job, you’d get a thousand applicants, and that’s the problem. The problem is if you post an entry-level job and you’re honest about it, then you’ll get so many applicants that you won’t know how to hire.
[00:20:24] These people want to hire, but they won’t post their jobs. So, how do you get in? Here’s how you get in. You go to a meetup. Just hang out. Have some coffee. Listen to the fun talks.
So, you sit in the back, and you’re sitting around, and then you’ll ever overhear somebody say, “I work for XYZ insurance company. We need to hire like five Python programs. We can’t find anyone knows Python.”
And you just go like, ” Hey! I know Python. I’m still working through it, but I took a Python class. And I’d love to get a job.”
And they’re like, “Really? You know Python?” They go, “How much will you work for?”
“I only need about $30,000 a year, whatever.”
They go like, “Man. Why don’t you come down Tuesday? Let’s see if you can.”
And then boom. You got a job, right?
They never posted it because it’s difficult for them to hire. And so this is where being near people will lead you in career directions than simply waiting for jobs to be posted and then applying for those jobs. You’ll sometimes wait forever.
So that’s why I say go to meetups. Meet people. Go to conferences. Figure out who the people are in the field, and then your skills can come to bear.
[00:21:32] So, I’ll just add one thing. I’ll just tell you what I do when I look to hire people. When someone says, “Look at this cool website I built.” It’s not nearly as impressive as when someone says, “Here’s my GitHub account.”
The strongest thing that you can give me is a GitHub repository with public commits. And do your projects in public. Do them in GitHub. Commit them. Get little green squares on GitHub.
And so, the nice thing about that is I can look at that as deeply or as not as I want. If you just show me a website that’s really pretty, I don’t know. Did you do the whole thing? Did you do the graphic design? Did you do the back-end design? Is it really a significant back-end? Can a lot of people use it?
And so, this notion that you make a project, and it’s a web. I’m not saying that’s bad. If you want to be a designer, then a design portfolio is a great way to show your skills as a web designer—no question about it.
But as sort of a programmer, back-end developer, I think showing me a GitHub repo — even if the stuff in that GitHub repo is silly or fun projects or test projects. The fact that you’ve been using GitHub for six months, even if you started using it while you’re taking a class.
[00:22:43]That’d my secret weapon in terms of the job. You will stick out because everyone else will say, “I know X. I know Y. I know Z.” And you go like, “Here’s my Python program. It’s in GitHub. Here are the commits that I made.”
And then I can look at your code. I can figure you out pretty well by looking at a GitHub URL.
[00:23:01]This is Charles Severance. I teach a class on Coursera called Python for Everybody. It brings great joy to my life, and I hope that it makes you happy as well.
If you’ve been thinking about programming, this is the perfect place to start. We don’t expect any math. We don’t expect any background. You don’t have to have learned programming before. We really are teaching beginners, and we’re really teaching everybody. Hopefully, we’ll see you in the class.
[00:23:25] Coursera: To enroll for free in Programming for Everybody or any of Dr. Chuck’s other programming or coding courses, go to Coursera.org today.
And as always, thanks for listening, and happy learning.
36