Dave thomas

Dave Thomas

Programmer, professor Pragmatic Bookshelf

Dave is a programmer and adjunct professor at Southern Methodist University

Ashley fong

Ashley Fong

CS Student Oregon State University

Ashley Fong is a former middle school history teacher and was most recently part of a fundraising team at an art museum. She is currently a student pursuing a Bachelor of Science in Computer Science through Oregon State University's Ecampus Post-Baccalaureate Program.

Description

What's the value of a computer science degree? Is it worth going back to school for? We talk to a computer science student and professor to help us answer these questions. Ashley Fong is a history major who's going back to school to get her CS degree online. She shares how she made that decision and what her experience has been like. Dave Thomas is a programmer who recently became a professor. He shares why he had doubts about the value of the CS degree and how his experience teaching has influenced his opinion.

Show Notes

Transcript

[00:00:05.23] 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 computer science degrees. One of the big questions we get all the time, is should I get a computer science degree? Or, should I go back to school to get my computer science degree? Today, we talk to two people on two very different sides of the computer science degree question. Our first guest is a computer science student -

[00:00:40.24] AF: My name is Ashley Fong, and I'm a student at Oregon State University.

[00:00:45.14] SY: She decided to go back to school to get her CS degree.

[00:00:47.14] AF: Through their Ecampus program, postbaccalaureate computer science program.

[00:00:52.22] SY: She tells us what it's like to be a student in an online program, and how she made that decision. Later on the show, we'll talk to the other side of that equation, a computer science professor -

[00:01:02.20] DT: My name is Dave Thomas, and recently I've become an adjunct professor of computer science at SMU in Dallas.

[00:01:09.28] SY: What's great about Dave is that he's not just a computer science professor - he's a programmer with a lot of experience.

[00:01:17.05] DT: I've written a number of books, I've now started online video training courses, I write code and I've been writing code for the last 45 or so years.

[00:01:26.18] SY: And he's kind of famous. Have you heard of agile software development? He's one of the people who came up with that. But first let's talk to Ashley. After this.

One of the best parts of being a coder is finally being able to bring your passions to life. You have the skills to design, to code, to create the thing you're excited about, and share that passion with the world. And Hover can help you with the first step, of sharing your passion with the world - getting your domain name. They've got a really beautiful and easy to use interface where you can find and register your new domain name in just a few steps. And to give you full control, they separate your domain name from your hosting, so you're never stuck with one service. They keep your domain name safe while giving you the flexibility to use whatever hosting service is best for you. They also give you free "who is" privacy, so your personal information is safe, too. To get started, go over to Hover.com/newbie to save ten percent off your first purchase. That's hover.com/newbie. Link is in the show notes. (Music)

[00:02:27.01] SY: So, tell us a little bit about what this program is, and specifically the whole post-bacc part of it.

[00:02:33.18] AF: Sure. The post-bacc part of it was one of the things that drew me in because I already have a Bachelor's in a non-computer science-related field, so my Bachelor's is in history. I also have a Master's in history, so it's a little bit, quite of a shift. But it's designed for people who already have a Bachelor's degree and wish to seek a computer science Bachelor's degree. And what drew me in was that I was looking at all the local programs here in town - I'm in San Diego, but it seemed like the route there would be to do a Master's and in order to do the Master's I would have to do the prerequisites and I found this program through Oregon State, where you can obtain a second Bachelor's degree.

[00:03:23.18] SY: So when you looked at this program to begin with, was your intention, your goal to use this as a way to work up to your Master's? Or were you hoping to really get a lot of career value and mileage from just having that additional Bachelor's degree?

[00:03:37.05] AF: Definitely career value. It had been something I was looking into for a while. I had taken some community college courses, to kind of just pique my interest and see if it was something I wanted to pursue further. This seemed like the best path at the time to make that career shift.

[00:03:57.23] SY: So tell me a little bit more about that, because especially nowadays, there's so many options, right. There's boot camps, three-month boot camps you can do, there's longer bootcamps you can do, there's continuing education courses at established universities, but the B.S. in general is a more well-rounded, not always a hundred percent practical degree. So it's probably one of the bigger time and financial commitments you can make. So when you were thinking about all these options - and I know there's a lot of listeners who are currently comparing all these options - what were the things you considered to help you get to the decision you came to?

[00:04:34.11] AF: It's funny because it wasn't until I started the program and started to find out about all these different opportunities that I realized how many resources there are. Getting a Bachelor's, going back to school was what I knew, what I felt comfortable with, I didn't know anyone who had gone through a bootcamp, I didn't know anyone really who had really self-learned and taught themselves so I felt like for me at the that time it seemed like the safest path to pursue.

[00:05:09.06] SY: So when you looked into the curriculum, tell us a little bit about some of the things that got you excited, some of the things that you learned. What do you learn in this type of program?

[00:05:19.03] AF: In the program we start off by learning C++. There are two courses of C++. One of the very first things we also take is discrete math. I didn't really understand it at first, but it really became clear when I was taking discrete math the logic that comes behind it and how that is used in computer science. And it's very tailored to computer science, because a lot of the examples we would get in discrete math would have a computer science application. I'm only four courses in so I can't speak to a ton, but I've also taken usability engineering this past quarter, which has been really interesting. Next quarter I'm going to take data structures, computer architecture and assembly language, and web development. Later on, our courses in software engineering and introduction to databases, operating systems, mobile and cloud software development, and computer network, so it kind of runs through a lot of the different things. So I feel like you get a wide range of topics you can kind of explore, and I guess I'm using this program and my time in it to really navigate what I really want to pursue in the future, in terms of the tech industry. I'm not a hundred percent yet, but I feel like with the classes I'm taking, I'm being exposed to a lot of different avenues I could pursue.

[00:06:55.27] SY: Yeah, and even as I'm hearing you list those courses and those topics, I'm really excited, but I'm also kind of terrified of it. What were your feelings as you're reading the curriculum and diving into these topics?

[00:07:07.24] AF: Honestly, I had to look up every single things because I did not understand what they were. It's a little bit cryptic in terms of the language. And another benefit of this online post-bacc program is there are a lot of different tracks, and so I do have classmates who are doing this part-time or a class at a time, or two classes at a time, and so there are as fast as one-year tracks to four-year tracks. I think the four-year track you take one class a quarter and so it's really flexible in terms of how people want to do it.

[00:07:48.19] SY: And how are you taking it? Is this essentially your full-time job right now?

[00:07:52.01] AF: Yes, I am doing this full-time right now. I'm hoping to complete the program in about a year and a half. I was hoping to do it a little bit quicker, but I think after some thinking I really want to build in some time to maybe get an internship to get a little more experience and kind of figure out what I might be pursuing in finding a job.

[00:08:18.27] SY: So, one of the big benefits of doing a class at a college is that there's a classroom, the professor, people are sitting next to you, raising their hand, getting frustrated and crying together and high-fiving together. There's a huge community aspect to taking a physical class. But because this class is online, how does that work? Do you feel like you get that same level of support and comradery, or does it work differently?

[00:08:46.22] AF: One of my main points that I kind of go back and forth on with doing this online program is there are often lectures for the topic of the week, and there are so many times where I wish that I could ask a question during that lecture. I can rewind the lecture and watch it again and again -

[00:09:10.23] SY: That's really helpful.

[00:09:11.16] AF: Con is I can't ask the question in real time, so there is a bit of delay in trying to figure things out. There is a discussion forum component and a lot of the times people will ask their question there, again there's that delay in getting your answers, but something I've come to realize is that wish that delay, it's forced me - whether I like it or not - to problem-solve myself, and try to figure out what can I look up to help me. And the second C++ course, from the onset, they were very clear that we were not going to be able to tell you everything you need to know about this particular topic, and part of problem-solving and learning to program and to code is to seek out those other resources. In terms of the community, that is something that I really do miss in terms of having a more traditional set-up, so I think there is a lack, a little bit, in terms of the community factor and I really do miss that in terms of having that as part of the school experience.

[00:10:27.15] SY: Yeah, that makes sense. So one of the big criticisms that I've heard about computer science degrees in general is that they're too theoretical, it's too much about foundational stuff and not enough practical stuff - have you felt that to be true, are you seeing a lot of things that you've already done or are looking forward to, that feel more practical, or is it generally a foundational type of education that you're getting that hopefully you'll be able to apply at a job one day?

[00:10:56.27] AF: I think because I'm in the early, early beginnings of the degree, right now I feel it's very, very foundational, and resources like CodeNewbie have exposed me to so many more of the practical things, in terms of getting a job later on. That really hasn't been introduced to me yet. The good news is that I've worked with a couple of upperclassmen and seniors in my usability course, since it is an elective it's kind of all mixed up in terms of where you are in the program. And they seem really well-versed in GitHub, they've introduced me to things like Overleaf, and so the upperclassmen seem to be well-versed. I don't know how much of that is finding their own resources, or it's been introduced to them via different course work. But at the beginning of the program it's definitely more foundational. And some people in the program seem to be coming into the program with already knowledge of side-projects, or they've done other online courses, so they're a little bit more familiar with the world. But for me, it was a whole new process and a whole new thing.

[00:12:17.16] SY: Was that intimidating at all, knowing you're coming into it very new, with really no background, no context, there were other people in the class who seemed to have a little more familiarity of what was going on?

[00:12:28.07] AF: Definitely. I would find myself in a panic because I felt like oh no, maybe this was the wrong choice, maybe I'm not cut out for this. It really took me a while to figure out that I needed to not compare myself to other people. I'm here to learn and that's my main focus and it's ok to take the time to learn.

[00:12:52.00] SY: WHen you have those moments and you start to panic and feel like you don't belong, how do you deal with that, how do you get through those moments?

[00:12:59.08] AF: CodeNewbie!

[00:13:02.16] SY: Yes! That was the right answer.

[00:13:03.24] AF: Discovering things like CodeNewbie has been incredibly helpful to hear other stories and to hear that other people struggle, and it really helps to hear that people from all ranks, whether they're beginners or they're a little bit more experienced, still feel those feelings.

[00:13:27.00] SY: Yeah. What tools, what strategies in terms of learning, have you found to either work really well for you or totally don't get the job done?

[00:13:32.02] AF: I thought I knew how to take a college class. I had different colored pens, different colored post-its, and I thought that would be it. And it took me a while to figure out that I needed to go back and just think about the fundamentals. I remember one time in my first C++ class, it was the final project, and I felt like I was just trying to type something to make it work. And of course it didn't work. And I posted for help in the discussion forum, and someone reminded me that this isn't how you call a function. You can't call a function like this. So it really forced me to think, ok, I really need to go back and relearn each step. And I think prior to computer science, I studied history, I read a lot, I thought a lot about things, I wrote papers, I analyzed different primary sources. So it wasn't as - it was completely different. And that project in the first C++ class really forced me to think, ok, what don't I know, what do I still need to know and what do I need to read and practice ten times before I finally understand it.

[00:15:03.26] SY: So knowing what you know now - and especially after hearing about other bootcamps and other resources - do you think you would make the same decision again?

[00:15:11.17] AF: I think so. I feel like I wouldn't know where to start. Granted, I would have to look into bootcamps and look into their curriculum. What also intimidates me about bootcamps is the time. I'm not confident that I would be able to learn in a shortened time. Even right now in OSU quarter classes I still feel like I don't have enough time to learn at all. I think for me, I would make the same decision, just because I know that I do need the discipline and the structure of classes and ok, this is what I should take next, this is the class and this is the language you're going to learn. I don't feel confident enough in my own organizing in terms of what I might need to know for learning computer science.

[00:16:11.23] SY: That totally makes sense. So what advice do you have for folks listening who might be debating whether they should go back to school, get a B.S., do a bootcamp, do online resources - what's a piece of advice you might give them?

[00:16:24.03] AF: I think evaluate what your learning style is and think about what will help you best. So I guess that might be my piece of advice, just to explore every option and kind of think about what might help you learn the best and what might most suitable to your situation.

[00:16:47.17] SY: Ok, next we're going to do some fill in the blanks. Are you ready?

[00:16:50.26] AF: Yes.

[00:16:52.08] SY: Number one - worst advice I've ever received is?

[00:16:54.11] AF: Follow your passion.

[00:16:58.00] SY: Ooh, tell me about that.

[00:16:58.11] AF: I think, for some people, that they know exactly what they want to do, since they were young they've wanted to do X, Y, Z. And it really works out for them. And I think that's great. I unfortunately am not one of those people (laughs), it's bad advice when you don't know what your passion is -

[00:17:16.22] SY: It's the worst.

[00:17:20.13] AF: And just trying to navigate that and especially when I feel like I have multiple and varied interests, and feeling like you need to make a choice of what your passion is. I think that doesn't have to happen. And it's taken me awhile to get to know people and hear their stories and realize that people had multiple careers and people have multiple paths and multiple interests and multiple passions.

[00:17:48.05] SY: Awesome. Number two - my first coding project was about?

[00:17:51.16] AF: The project that I mentioned in my first C++ class where I wasn't pulling the function correctly was an online store stimulator, a tech space online store simulator, that really made me force myself to relearn things and to apply to that project.

[00:18:12.20] SY: Number three - one thing I wish I knew when I first started to code is?

[00:18:16.27] AF: Don't be so hard on yourself. I think that kind of going back to me learning that I don't have to compare myself to others, or I shouldn't compare myself to others, I think part of that is not being as hard on myself, even though there might be looming deadlines, I have to just remind myself that I'm here to learn and that's the most important part of it.

[00:18:42.00] SY: Coming up - Dave talks about why he decided to teach computer science.

[00:18:46.05] DT: I have these doubts about computer science degrees, and what I wanted to do was kind of experience it from the inside first.

[00:18:54.26] SY: He gives us his take on the value of the computer science degree. After this.

When I learned to code, I was so excited to finally bring my passions to life. I could build things that I really cared about, and share them with the world. And the first step in sharing is getting a great domain name. That's where Hover comes in. They've got a really slick, easy to use interface. They've got awesome domain names to pick from and they separate your domain from your hosting, so you have full control and flexibility over your online identity. So go to hover.com/newbie to save ten percent off your first purchase. That's hover.com/newbie. Link is in the show notes.

[00:19:36.06] SY: Do those students know how lucky they are - like do they understand that you're a really big deal in the dev community?

[00:19:40.24] DT: I wouldn't necessarily think that they were lucky because of that, but yeah, a lot of them do. Which is kind of nice. It is kind of nice.

[00:19:48.22] SY: Yeah. Have you taught before, before this adjunct professorship?

[00:19:52.04] DT: Not at college, no. And that's actually the reason I wanted to do it. Because I have these doubts about computer science degrees, and what I wanted to do what kind of experience it from the inside, first.

[00:20:05.06] SY: So, what were some of these doubts that you had?

[00:20:07.07] DT: So, I see people graduating - and this is not universal - but I see a lot of people graduating and frankly they can't code. Or they can code or they can't work in a team, or they have no concept of what it is like to get a job programming. And maybe that's ok, maybe that's not the job of a university, but it strikes me that they're not really serving their students well if they're not preparing them in that way.

[00:20:35.22] SY: So, at the end of the day, people with computer science degrees get jobs - do you feel that the jobs are at that point teaching them how to be useful and useful programmers, or is it that the students are figuring that out on the side while they're in college, and they become useful on the job?

[00:20:51.05] DT: I think it depends on the job as to which of those happens. But definitely that is a phase they have to go through. They're going to join thinking they are God's gift to humanity and within the first week they're going to be really quite viciously disabused of that idea. And so they got to learn. And they will learn a mixture of what they're taught on the job and the better ones will also try to go and pick stuff up on their own. But mostly it's going to be what they learn on the job. The problem with that, is that if you're not lucky, if you end up in an less than ideal company, you're going to learn a bunch of bad habits, and because it's the first thing that you learn, it's going to tend to stick a lot more than other things down the road. So to some extent, it's a little bit too late by then to start learning.

[00:21:39.24] SY: What it sounds like you're saying then is, having those skills is really important, but making sure you have them early and building them into good behavior as a programmer is really important, too.

[00:21:47.14] DT: Yeah, and it's sort of reflexes that you're developing, as well. It's like any other skill - what you're trying to do it to take conscious thought and make it unconscious, subconscious. You want to make it tacit. And you only do that by experience. And so all those experiences that you're getting are shaping your reflexes for the future, and quite often without you even realizing it. And that is the vital thing, because you can only be effective as anything, but particularly as a programmer, if 99% of what you do, you do without thinking.

[00:22:22.13] SY: Yes. So you've been an adjunct professor for how long now?

[00:22:25.23] DT: This is my second year.

[00:22:28.05] SY: Second year, ok. So how big are the classes - how many students do you teach?

[00:22:31.25] DT: It's about thirty-five, thirty-eight, something like that.

[00:22:35.26] SY: Oh, that's awesome. That's nice and small.

[00:22:38.06] DT: It's a nice, small class, and about ten of those are remote.

[00:22:43.03] SY: Oh, very cool. So you've been doing this for over a year, going into your second year now. Have your concerns been alleviated at all, or are you still skeptical?

[00:22:52.29] DT: No, they have not been alleviated. But I've learned good things that I didn't know as well, so I think the jury is still out. The students that I'm teaching are juniors and seniors and master's students. And the juniors and seniors are the ones that are impressive in terms of that they take it seriously and they have a good grounding in what they're doing. Of the undergraduates though, I would say maybe half of them have discovered a passion. And they really enjoy it. And they always take their labs a bit further than everybody else. And they ask all the hard questions. And that is fantastic. But they are also not really being that well-served by the course they've been in so far. So I can ask a lot of pretty basic questions, like what testing frameworks have you guys been taught? And they'll look at me like I just spoke Martian. Version-control - not really. But it really is just being taught in a not--passionate way. So they're basically learning facts and they're learning techniques and that kind of stuff, but not being infused with the stories of why that's important. And that breaks my heart, because these people clearly wanted to do this, they elected to do it.

[00:24:17.28] SY: So when you say that it's not taught with the passion, is it that the current curriculum includes topics that are more mundane and boring, or is it if you have to learn a four-loop, there's a way to teach it that makes it really exciting, but the way it's being taught now is just totally missing the point?

[00:24:34.28] DT: I think it's the latter. I think almost anything you can teach you can teach with enthusiasm.

[00:24:42.26] SY: Yes, absolutely.

[00:24:42.26] DT: But I think that a lot of these things, like algorithms, basic algorithms, I guess the guy who teaches that has probably taught it for the past twenty years. And maybe every now and then he'll throw something new in, but I would guess not. So it's going to be a pretty mechanical course for this person to teach. So I think that probably gets reflected in the enthusiasm of the students. The alternative would be to look at that class and say, ok, why do we care about this? What's the point here? And then to motivate it all with real world problems that you can solve. And what you have to do is motivate the things you're teaching by showing them there's a problem. You bump into something and you say, ok, but look at this, you can do this or this or this. And they go, oh, great. And they'll remember it.

[00:25:38.01] SY: And that to me feels so obvious - it feels so obvious that if you're going to teach someone how to do something, you should give them a problem first, you should show them why that thing is important, why it's relevant. But I feel like that never happens. So where do you think that disconnect comes from?

[00:25:53.03] DT: Do you want to hear my grand unified theory of how we should do it?

[00:25:57.16] SY: Yes, please.

[00:25:58.17] DT: So, on the basis that you have to know the problem before you're interested in the solution, what I think a computer science degree should look like is you go for maybe four months at the beginning, so start in September, you go through September, October, November, December, yeah, end of the year, then you go out into the industry. And you work for 9 months in the industry. And yeah, you're not going to be doing lead developer, but you'll be doing stuff, you'll be capable of doing stuff because you'll be taught the mechanics of what you have to do during those first four months. So it's like a bootcamp almost. And then you come from industry and you spend the next year at college. And in that year, they address all the things you saw while you were out there. So, did you notice that people weren't communicating well? Well, let's look at how we can do that. Did you notice this code was hard to change? Well, here are ways of stopping that. And everything is motivated. So you have another year of that, they go back out, and while you're doing that, you're still making the program, and that's the other vital thing. Is that if you're doing a computer degree, then you have to be programming. So you go back out into industry for another 9 months and you're in a more senior position, and probably you're lining up a job for when you leave and you're getting more and more experience, and then you come back into college and they basically round it all off with the higher-level concepts and ideas of where to go next if you want to go into research, if you want to do this or that, and basically at that point, you have graduated - probably already with a job because you can go back to the people you've been working with over the summer or whatever - and you are very much more capable of participating in the industry.

[00:27:53.12] SY: I love that. You need to start the Dave Thomas school of programming.

[00:27:57.25] DT: Actually, there are a couple of people doing something similar. There's a guy called Yann Bachus and he worked in the art department at SMU and the art department actually runs a computer science degree, and he teaches it totally the opposite way around. He teaches it very much the way I was describing, where everything is a problem first. So he could start off with, ok, here we have two million rows of data on voter demographics. How are we going to display that in a way that makes sense? And then the next three months they're looking at different tools to do that and different techniques to do that, etc., etc. So he moved across to Bend, Oregon, which is one of the secondary campuses for OSU. And he is just about to start a new four-year course which follows that kind of line. I don't know, I haven't actually gone through the syllabus, but I know there's a surprisingly large number of startups in Ben. And so he's placing students out into those as part of their degree program. So I'm keeping a very close eye on that, because I think that's the way to do it. It really is.

[00:29:17.02] SY: That really makes a lot of sense to me. And it also makes me wonder, one thing I've heard about computer science degrees is that if you have been coding on your own since you were twelve, you're probably going to do decent, you're going to do well in a computer science degree program. But if that first intro to programming class you take when you're a freshman, sophomore is the very, very first time that you've heard of a terminal or opened up a text editor, then it's going to be a lot harder for you. And so I'm wondering, with this new paradigm, this new idea of teaching where everything is very much about the problem first, do you feel like it might level the playing field a little bit more, between people that have been hacking around for a while and folks who are actual newbies at this?

[00:30:00.26] DT: Yeah, I think so. If it's done right, it'll more than level the playing field, it'll actually broaden the entire arena. Because if you're doing the classic computer science degree, then your syllabus and the materials you give out to students really is going to emphasize - we do programming, we learn this, we learn that, we learn the other. If instead you were to present your course as a set of challenges that the student meets, I think that would actually appeal to a much broader spectrum of people. And I think there's a whole bunch of people out there who actually are incredibly good programmers, they just don't know it yet. In my class, last year, there were six, maybe seven, probably eight by the time you count remote ones, eight women out of 38. In the creative computing one, they were in the majority.

[00:30:52.02] SY: Oh wow, oh that's interesting.

[00:30:52.23] DT: And I don't know whether it's because they sampled and didn't like it, or because they were more interested in the more practical approach that it was advertising. But whatever it was, it was very much a different feel. It was a very, very - it was very collegiate.

[00:31:11.23] SY: So now that you are a teacher and you have some control over your students' experience in this computer science degree program, what are you doing differently? What are you trying out to see if you can make it a little bit better for them?

[00:31:23.13] DT: Well the most important thing is I teach with my shoes off.

[00:31:29.24] SY: (Laughs) I remember seeing that as LoneStar Ruby and I was like, that is very interesting.

[00:31:33.15] DT: But I walk away from those classes energized, because it was a good, fifty minutes of good back-and-forth and I also felt I was actually doing some good. So what I do differently is just like be myself and show them how much I think it's cool.

[00:31:53.08] SY: How does that manifest itself? Is it - 'cause I mean one thing that when I originally asked you do they understand how lucky they are, what I was thinking of was, you've been a practitioner for so many years, you have so much experience, you're so well connected that I feel like in a classroom you can very easily draw from all of that and integrate it very seamlessly in a class, whereas someone who has maybe only been a professor, only been a researcher, doesn't have those real-life experiences. So is that one of the tools that you have to make it more interesting?

[00:32:26.02] DT: Yeah, definitely, definitely. I mean, storytelling is always a good idea, and I always try to start my classes like the first three minutes or so with some sort of relevant history lesson. Not like formal or anything. But for example I introduced parallel programming by talking about War's law and so I bring up a picture of Gordon War and talk about who he was and everything else, and lead on into why gaming computers catch fire. And why that then leads us to parallel programming. So I try to do things like that, to give everything a bit of a context. To anchor it into something real.

[00:33:04.13] SY: Have you seen the difference in students, maybe from the beginning of the class to the end, have you seen these methods work?

[00:33:12.18] DT: I believe so. Yes, I believe so. I think particularly the engaged students I felt were more competent at the end, more capable of expressing their own opinions and telling me I was wrong, which is fantastic, it's kind of what I was aiming for. The last assignment I set was, I called it coder's choice. And it was basically write me an application, I need you to use the following, like six, facilities. They were writing in a programming language called Elixir and the strengths of Elixir is that you can write very reliable parallel programs, and so I wanted them to build aspects of reliability and parallel blah blah blah. The students who weren't engaged freaked out, totally freaked out. And I got email after email like, tell me what to do, what kind of program can I write. The ones who were connected to it, they went off and they did the wildest things. One of the girls wrote an application that had a back-end that went to Twitter and it picked up tweets from Hilary Clinton and Donald Trump. This is just before the election -

[00:34:28.23] SY: (Laughs) I was going to say!

[00:34:29.05] DT: Right about the election time. So it's picking up those tweets, and then dynamically populating a wordcloud of the two of them - two separate wordclouds - and so you just basically went to a web browser, to this url, and saw this beautiful screen with like pictures of the two candidates and then these words would just start appearing. I sat there and I was grading the assignment, and I had no idea what it was, and I started the app up and had a look at it, and I just sat there for five minutes, just watching. I found that really rewarding. Because I think clearly she had got hold of something there and she was expressing herself. That's what it's all about. The real joy of programming let's people express themselves - possibly people who've had trouble expressing themselves in other ways - you can extend your existence via computers.

[00:35:21.05] SY: Huh. That's beautiful. So you mentioned a few times now, there are kind of two categories of students. There are the people who are very engaged and take things the extra mile, and those that aren't so much. What is the difference between these two? Have you found any other variables that explain why some students are more excited and doing really awesome wordclouds, and others are frantically freaking out and emailing you what to do?

[00:35:44.25] DT: Well, I think one of the things is why they are there in the first place. A lot of the students in the class were international students, and they were typically sent to get an American degree so that they could go back home, and because they had an American degree, they would get a way better salary or job or whatever it might be. And for a lot of these students - not all, I've got to say, definitely not all - but for a lot of the students, this was kind of like a task that was given to them by their parents. And it was very noticeable that a lot of those students, those were the ones that were really worried about grades, those are the ones that always queried, can I have an extra two points. They typically took no risks and their coding was not great. Now, the domestic students, there were some like that as well, but there was a category of domestic and international student who was there because they wanted to be. And they were very different. They were not focused as much on grades. They were more focused on learning stuff and pushing the limit. And so in their homework assignments they would take bigger risks. And so I think that's part of it.

[00:37:02.13] SY: That motivation sounds like it's really important.

[00:37:04.23] DT: I think it is. I mean, anything that's difficult - why would you do it if you weren't motivated to do it?

[00:37:12.18] SY: So when you think about the decision to get a computer science degree, especially nowadays when there's so many other options, there's bootcamps, there's online courses, there's - you can just learn on your own using books that have always existed, there's so many different ways to get these skills, especially if you're just trying to get a job and you're going to be employed as soon as possible - what do you feel are some good reasons to get that CS degree, and in what context would you just be better off learning on your own and doing it a different route?

[00:37:43.09] DT: Ok, let's address that indirectly. I think bootcamps, if done well, are a fantastic resource, in that they can take someone who has no experience and turn them into someone who can get into the door of many companies. And as long as you realize that once you get inside that door, it's your job to keep learning, and soak up everything you can like a sponge, for people who are self-motivated like that, then I think they're a really great way of doing things. Yeah, you may not get paid as much as a graduate, but you also haven't just paid $200,000 to a college. So there's a plus-side there. I think if you're one of those fairly rare people who know early on that this is what you want to do and you've been programming since you were twelve, you have a portfolio, then you might want to think about skipping college and just going straight in, particularly if you can find a friendly company. You're not going to be a rounded programmer. But you're certainly going to be valuable to them, and I'm not sure college is going to add too much to that. For the rest, I think you've got to be very careful to pick a degree that is going to reflect what you want to be doing. Like, if you look for example at MIT. I mean, their program is a rat-race, it's really aggressive in terms of student versus student and that kind of stuff. And that appeals to certain companies. There are other colleges that are way more laid back, liberal arts kind of background, and other companies like that. But choose the college that reflects what it is you want to see yourself doing.

[00:39:29.28] SY: Cool. Ok, should we move on to fill in the blanks?

[00:39:32.11] DT: Let's!

[00:39:34.23] SY: Ok. Number one - worst advice I've ever received is?

[00:39:37.00] DT: Does that one work? count as advice?

[00:39:42.00] SY: Yes, I think that does. I like that.

[00:39:44.26] DT: And I used to listen to it. That's the really sad thing. When I was younger and I had some really stupid idea, people I respected would say, oh, that doesn't work. And I'd go oh, damn. You know, and never even start. I mean, 99% of the time they're right. But when they're wrong and you don't do it, you're missing out on an incredible opportunity. So I think that's probably the worst advice, consistently, that I get.

[00:40:11.10] SY: Yeah, I like that, I like it a lot. And even if they are right, you going through the process of figuring it out and seeing for yourself and drawing your own conclusions is very powerful and very helpful.

[00:40:20.10] DT: And also the thing there is that you may be totally dead wrong, but as you go along, you realize that ah, they're right, that's not going to work. But if I change this, this, and this - it's always going to be an evolution, it's always going to be a process. And nobody knows up front whether it's going to work or not.

[00:40:40.11] SY: Yep, totally. Number two - my first coding project was about?

[00:40:43.07] DT: So I - my first programming language was basic. I was doing, it would be the equivalent of an AP class over here in computer something or other. And they were looking for volunteers from the local secondary school, so I volunteered and went across, just because I had nothing else to do, and I fell in love, absolutely fell in love with writing code. And we were coding using a teletype, which is one of those really clunky devices, it's even worse than a typewriter, because the keys are like cylinders that go up and down. You write your programs by typing and as you type, it punches paper tape. And when you finish, you dial up the local computer and you have a hundred and ten board connection, and you basically feed the paper tape through it and your program goes up there and then the computer goes back and says, error on line 2. Anyway, so we actually negotiated to get some storage, so we wouldn't have to keep loading our programs on paper tape. And they gave us room to store five programs on their main frame. So the first real program I wrote was a self-modified basic program, where you could actually load as many programs as you wanted into the source code of this basic program, and then upload it onto their machine and then you would say to the program, ok, extract subprogram one, two, three, and basically you write that one out into the file system, so I could then play with it, and then at the end, read it back into the program. So basically it was a file system written in basic. So that was my first piece of code, I guess.

[00:42:23.11] SY: Very cool. Number three - one thing I wish I knew when I first started to code is?

[00:42:27.27] DT: I think one of the things I didn't know going in was how important it was to look for value. To try to do things that had value. My natural tendency is to do things that are fun and to do things that are interesting and exciting. And when you do that, it's kind of like instant fun, but it's not really that satisfied. Because you never actually see the thing doing anything. Whereas when you do it for value, you get to see people using it, and you get to experience this idea that you've actually changed the world a bit. I think the idea of looking for value is important. And I don't know if twenty-one year-old me would've even listened to that. But I kind of discovered it roundabout late thirties or something. I found far more satisfaction in getting something into a customer's hands than doing something further.

[00:43:39.03] SY: And that's the end of our first episode of season three. Let me know what you think! Especially if you've been thinking about getting a CS degree for yourself. Did this episode change your mind? Did it make you want one even more? Tweet me @CodeNewbies or send me an email, hello@codenewbie.org. If you're in D.C. or Philly check out our local CodeNewbie meetup groups, we've got awesome community coding sessions and events every month, so if you're looking for real-life human interaction, look us up on meetup.com. For more info on the podcast, check out www.codenewbie.org/podcast, and join us for our weekly Twitter chat. We've got our Wednesday chats at 9 PM ET and our weekly coding check-in every Sunday at 2 PM ET. Thanks for listening, see you next week. (Music).

Thank you to these sponsors for supporting the show!

Thank you to these sponsors for supporting the show!