Monitor performance issues & errors in your code

#112: Geeking out in the golden years Transcript

Recorded on Monday, May 15, 2017.

00:00 Michael Kennedy: I've always thought that if I retire, I'd more or less do what I've been doing the whole time for my job, except this time without meetings or reports. That is, write interesting and fulfilling software. In this episode of Talk Python To Me, we're back together with Philip Guo (@pgbovine) to discuss his research project aimed at improving the learning to code experience for older adults. That's those 60 to 85 years old. It's time to think about geeking out in your golden years. This is episode 112 recorded May 15th, 2017. Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities. This is your host, Michael Kennedy. Follow me on Twitter where I'm @mkennedy. Keep up with the show and listen to past episodes at talkpython.fm, and follow the show on Twitter via @talkpython. This episode is brought to you by Rollbar and Hired. Thank them both for supporting the show. Check them out at rollbar, and @hired_hq on Twitter, and tell them "thank you." Philip, welcome back to Talk Python.

01:26 Philip Guo: Hi Michael, how are you?

01:28 Michael Kennedy: I'm doing great, and I'm really looking forward to our conversation today. Last time you were on Talk Python, we talked about the CPython internals, and your CPython, your ten-hour CPython code walk, which was really fun, right?

01:40 Philip Guo: Yeah, that was awesome, yes. And that was actually my first ever podcast appearance. That was back in, I think, 2015.

01:47 Michael Kennedy: Yeah.

01:48 Philip Guo: And you actually inspired me to do a podcast series of my own, so not exactly on Python, but just on general, just general interesting conversations with interesting people, many of which are in science and technology, but I think appearing on Talk Python two years ago really inspired that podcast series.

02:05 Michael Kennedy: That is really cool! I'm really honored that I was able to inspire you to do that. Like, why don't you tell people, what's the name of your podcast? How do they find it so, if they wanna expand out a little bit, they can go check out yours?

02:15 Philip Guo: Yeah, so it's un-originally called The PG Podcast, after my own initials, PG. It's just on my website, I'll link to it. Basically my podcast is super low tech, I just record a YouTube Live session, so basically we just do it YouTube Live. It just streams and goes on YouTube. I usually record for about 30 minutes, because my conversations are usually less technical, they're more just kind of one idea with each person. So we do like a 30-minute slot, which is kind of like a work meeting slot, and then we just upload it online. So oftentimes, the audio isn't amazing, because we're just doing YouTube Live, but I find that since I'm an amateur at this, I just wanna get content out there, and I don't really care about the high fidelity too much. I just want to get interesting content out. I've found just going on YouTube Live and streaming is just super convenient.

02:58 Michael Kennedy: Yeah, that's really great. Yeah, I've listened to some of your shows, they're real inspiring. You had me on once, and that was an honor as well. I think what you said about, hey, like, don't let the perfect be the enemy of the good, and hold you up, is really important, not just in like, if you want to do podcasting, but any kind of creative stuff you want to do, like, a lot of these things you only get better by doing it. And if you wait until you're perfect, you're never gonna do it, so like, get out there and do something, whatever it is you're inspired about, right?

03:23 Philip Guo: That's right, I think that's exactly, I mean, that's the attitude I've taken to blogging, to now podcasting, I've been making these vlogs, these kind of short video logs, and I think that's exactly right. So as you mentioned, I had you on my podcast, it's very meta here that you were talking about the process of you starting up a podcast, and kind of turning it into a career and such, and this is kind of a jiu jitsu-like move, because you had me on first, and then I thought I could turn the tables and have you on, but then you ended up on top and having me on again, for the second time, so I think you have the high ground now.

03:56 Michael Kennedy: Just for the moment, right? It's always fluid. Very cool, so I am very excited to have you back. Let's not totally rehash all of what you did to get into programming, because we did have you on the show and cover that before. But maybe just, that's almost two years ago, let's remind people what you do day-to-day, because I think it's super relevant to where we're going with this conversation. You're at UCSD, right?

04:17 Philip Guo: Right, so I'm actually an assistant professor in the cognitive science department at UC San Diego. So I was actually, last time I was on your podcast, I was an assistant professor in a computer science department at the University of Rochester at the very opposite end of the country. So I actually recently moved to San Diego, because my family is from Southern California and it's a lot nicer weather down here, especially in the winter. So I've been enjoying it a lot so far. So I basically do research at the intersection of what I call cognitive and computer science. And that intersection is a lot about online learning. I'm especially interested in how people are learning to code, and learning programming and building tools to support the learning of programming, and I think that's what brings us here today.

04:59 Michael Kennedy: Yeah, it definitely is. That sounds super cool. I studied math a long time, but my first computer job, my first professional job I would say, was working at a company that was really a spinoff from a university in Southern California as well, with bunch of cognitive science PhDs. It's really interesting how cognitive science has this computational aspect, although it's not really thought of as like, hardly even a STEM, I mean, STEM I guess, but it's like on the border of STEM I would say even.

05:25 Philip Guo: Yeah, I would say actually it's kind of a great kind of interdisciplinary hybrid of the social and the computational sciences, because what a lot of people are interested in is this intersection, like I was saying, between cognitive and computer science, of studying how people are doing the act of programming, or studying or developing tools, helping people be more productive, and I think the unifying factor behind a lot of this research, even though it's computational in nature, is that it always involves the human in the loop. Like our brains are always the limiting factor, because Moore's Law is making computers much faster, but our brains are not getting any faster for millions of years.

06:02 Michael Kennedy: Exactly, we're relatively the same creatures that we were 50 years ago, more or less, right? It's kind of amazing that we can keep up though, right, in some ways.

06:10 Philip Guo: Yeah, I think that is amazing. I mean, it's kind of a testament to, you know, testament to the foresight of evolution or something like that, that we can, we're still able to keep up. But the thing is, we do use a lot of external memory aids. I mean, imagine going through our modern workflows in any intensive job, if we're not allowed to write anything down, or not allowed to use a computer, then we really can't actually do that much.

06:30 Michael Kennedy: Yeah, that's right. We just found better tools and keep building better tools. Awesome. So, one of the things that I think is really powerful for people in today's society is, learning not to just use computers, but to control them, right? To learn to become programmers, not necessarily for the sake of, I want to go get an official Senior Software Engineer title, but I want to somehow amplify what I'm doing with software, right?

06:58 Philip Guo: Right. So I think a lot of the big kind of movements lately about learning to code, I mean some of it, like you said, is practical, is for jobs, because software jobs are plentiful and there're software-related jobs in pretty much every field you can think of now. There's John Deere, which is a big company that makes tractors and farm equipment, they've recently been giving a lot of talks about big data, and it's because they've turned into a big data company, because they have all these things on their tractors and devices and stuff, and they're managing logistics, and all these companies that you think of as traditionally very hardware-mechanical companies, their competitive advantage now is becoming software. So jobs is one area. But even beyond that like you mentioned, there are many people who are interested in learning for say personal enrichment, or with this broad umbrella of computational literacy, just knowing what technology is all about.

07:48 Michael Kennedy: Yeah, absolutely, and I think that's the primary focus where we're going, but a significant part of it. So let's get to your research project and the paper that is sort of the culmination of that. So you guys over there at UCSD, you and, you had some grad students helping you out, is that right?

08:04 Philip Guo: Yeah, well actually, it's funny, this paper was actually just done by myself. It was kind of a summer side-project, that I collected with a bunch of data. But my other projects all involve students, this is just sort of an outlier, the single-author paper.

08:17 Michael Kennedy: Yeah, it's nice. So there were two titles that I ran across. One was like the press release from UCSD, which was great, which is like, "Geeking Out in the Golden Years." The official title was something to the effect of, "Older Adults Learning Computer Programming, Motivations, Frustrations, and Design Opportunities," right? So what's the general idea of this project that you undertook this summer?

08:38 Philip Guo: Yes, so the general idea is that there's, like we mentioned earlier, there's a lot of initiatives for learning to code and for teaching coding and new tools and games and everything for learning programming, but if you actually look at the target audience, a lot of those are targeting young kids, or primary or secondary school kids, or at most like college students. So basically anyone under 20 years old, there's a ton of stuff and excitement about teaching the next generation to code. So I thought, what about looking at the opposite end of the age spectrum, of people say age 60 and over, of which there are actually a lot of people 60 and over, right? So there's some UN, United Nations estimates saying that, by 2030, about a quarter of the population of North America and Europe will be over 60. And about 1/6 of the world population, so that's an enormous number of people over 60. And yet all this talk about technology and about programming literacy and computational literacy are focused on the youngest members of society, which is of course really important, but the older members of society have been really understudied, and I think it's actually a large and really significant population. So I set out to basically do an online survey to kind of get at the motivations and the frustrations that perhaps people who are 60 and over are facing when they're learning programming. Simply because no one has really explored it before, so it's kind of a green field research area, because, you know, one of the nice things about research is that you try to take something that's a common assumption and flip it on its head and try to study the opposite. And oftentimes you come up with interesting and surprising results. So that was my summer project last summer.

10:06 Michael Kennedy: Ah, that's cool, yeah. And I really enjoyed reading the paper. I think it's pretty accessible, it's not like super-dense academic stuff. Of course we'll link to it and everyone can read through it. If you skim it even, it has cool tables and graphs, which I think, the stuff that was captured there is really cool. One of the the things I think was interesting is, maybe let's start talking by the group that you studied. When we say "older adults," you could include me in that, maybe. I'm in my 40's, am I an older adult? What do you mean by "older adults?"

10:39 Philip Guo: Yeah, that's a good question, I mean, as with anything, we need to define what "older adults" means. One commonly accepted value is about 60 and older, and that's an interesting threshold to talk about some paper because a lot of, the UN kind of, they have this designation of "older persons" as 60 or older. Also, retirement ages are around 60 or 65. Some countries are creeping up higher for retirement ages, and also Social Security benefits, 401k, IRA, kind of cutoff ages are around 60. I found that 60 was an interesting threshold because that actually captures both people who are still working or people who are phasing out into retirement, or people who are actually retired already. So I thought 60 was actually a pretty good range, so you can actually get a fairly wide range of folks at 60.

11:28 Michael Kennedy: Sure, I think that's a good group as well, 60 to 85, it sounded like, was more or less ... It sort of tilted toward the younger side of that group. But there was a balance of people, some of whom were still working, many of them, some of them were very high up in their company, they were like lead scientists or they were CEOs, or something, and others were retired. I guess let's start with, why were they doing this, right? I understand if you're 20 and you want to start a career, why you'd want to do that. Or if you're 40 and you're like, "I am so tired of this law degree that I got, I want to go do something creative with software." Who knows, right? But what about, you're kind of at the end of your career, what were their motivations?

12:13 Philip Guo: Yeah, that's a great question. So that was, the motivations was the first major part of the study, and that was just a few survey questions based on why are you learning, what resources are you using to learn? I found several major sets of motivations that I talk about in the paper. I'll go over three of the most salient ones, because these are the ones that have to do with age. There are actually motives, like you mentioned, many people did talk about job-related motivations, because even though they were later in their career, these are probably the people who are the most, kind of, autodidactic, with the most self initiative. They want to still learn new technologies and learn later in their careers. But that's less age-related, right? So I think the age-related ones I wrote down here, I'm looking at the summary, is ... 22% of the respondents, this is the highest number, 22% wanted to learn now to make up for missed opportunities during their youth. What that usually means is, people said, "I always was interested in computers or technology, but then I never had the chance to do it because my career was as a doctor or as a technician" or something, "but now that I'm approaching retirement, I actually want to learn this programming thing because it's so accessible online to learn, and I grew up with a technical background, but I never actually learned it." So then 19, I'll go over the three of them. 19% wanted to learn to keep their brains challenged, fresh and sharp as they aged. These again are very much autodidactic self-starters. They didn't want to just retire and watch TV passively all day. They wanted a challenging activity that they could do, in their own homes, so they found that learning coding online was cool. And also, lastly, 5% were directly motivated by younger relatives such as their children or grandchildren. Some people said, "Oh, my grandkids are now learning to code in school, I want to play with this, too, because I'm curious." So they were directly motivated by relatives.

13:54 Michael Kennedy: Yeah, I think all three of those are super interesting. For the first one, there was a quote that you had in your article that was something like, there was this guy who was a retired chief information officer, CIO, very much in the technical space, but he said, "One of the reasons I wanted to learn to program now is, I always wanted to do this, and I kind of did a little bit in school, but then I got kicked upstairs into management, where I was, I sort of advanced my career out of what I actually wanted to do." So they're kind of coming back and saying, "Look, this is something I always wanted to do, now that I have time, I can choose this, kind of as my retirement interest," or something like that, right?

14:33 Philip Guo: Yeah, that was a great quote. We had quite a few that responded, actually, who wrote good paragraphs about their motivations, and it wasn't because, these are usually free-text responses, we let them write whatever they want. Some people really elaborated, so that person, he was a 67-year-old retired CIO, Chief Information Officer, and he said, he used this "kicked upstairs" metaphor, he managed to be in management pretty early, and he was always wanting to do the technical work, but his career obviously wasn't in it, and now that he has, he also said in the quote, "I always wanted to be able to create programs, "but between work and family I never took the time, and now that I am retired, I'm trying to fulfill the dream and learn."

15:15 Michael Kennedy: Well that sounds cool. I mean, I certainly think that somehow ties in to the second level of the motivation, is just wanting to do something interesting when you retire, right? Like, I see people doing crossword puzzles, I see them doing Sudoku or other things like that, and it's like, that's kind of interesting? But it's just nowhere near like the puzzle that is solving a problem with computers, right? That's a really interesting ongoing puzzle. To me, building a program, a website or something like that, it's kind of like, I guess if I were to think of it in those types of terms it would be like the thousand-piece puzzle, or something. Or you really get into it and you do it for a long time, it's not just, like, you spend five minutes on a Sudoku puzzle, something like that.

16:02 Philip Guo: Yeah, I think it's real interesting in that, both the fact that this is far more difficult and engaging, but also like you're saying, because it's far more difficult and harder to get started with, it's a lot harder than to just pick up a crossword puzzle or play bingo or something which is more routine, but it gives you that really short term dopamine release. Or playing some small game on your phone. So I guess the challenge there, design-wise, is, how could we make programming kind of engaging and creative still, but also accessible and fun so that it's not like, okay, gotta debug the C++ thing in Visual Studio before you get anything done.

16:38 Michael Kennedy: That's right. You have an incompatible header include, or something. Your C programming won't compile. That's no longer fun, is it? All right, so I guess one of the things that we could talk about that's pretty interesting that you guys covered in there is, what do people in this age group use to learn, and how is that similar or different from, say, like the 25-year-old person who wants to take a bootcamp or something?

17:04 Philip Guo: Yeah, so another question I had on the survey was, what resources were they using? And just to back up a little bit to give some context, I designed this survey to put online, but then they ... The one obvious question was, where are we gonna find older people learning programming, right? They're not in your local college campuses or bootcamps or, you know, they're not just around hanging out with their hoodies on in the coffee shop, right? So where do we find all these people? That brings me back to kind of a broader story about, I've been maintaining this learn-to-code website called Python Tutor at PythonTutor.com for many years now and it's had millions of users from pretty much every country under the sun, and I did a demographic survey a few years ago on the site, just a quick user survey, and it turned out that around 1/6 of the users were about 55 and over, I didn't measure it super precisely. But even though it was only a sixth of people, it's still like a lot of people, because if you have millions of people, 1/6th is still tens of thousands, hundreds of thousands of people. So then I thought, hmm, this could be a pretty cool population to deploy a survey to, because I own the site, right? So all I did was I made a short survey, and I just put it on the website when people were learning to code, just put it as an optional link saying, "Hey, we're doing a research study, if interested, click this link." And it was completely optional. Because of that, though, the people going on the site are necessarily gonna be ones learning online, right? These are people taking massive open online courses, these MOOCs, these are people searching on StackOverflow, teaching themselves, going on tutorial videos on YouTube, finding sites online. So the population is skewed toward online learners, but I think that there are a lot of people of all ages learning online. The MOOCs are the biggest source, which is unsurprising because a lot of people who use my Python Tutor sites come from MOOCs, from online courses.

18:49 Michael Kennedy: I see there's some online Python courses, and others that are like, here's how you do your exercises, you drop in at PythonTutor.com.

18:56 Philip Guo: Yeah, you can link to the site, yeah. A lot of it, or they talk about on the forums, because it's a pretty popular site, people will Google for "python debugger" or "python tutorial," and my site often comes up. So a lot of people who are learning online in all sorts of ways, from blogs, from watching YouTube, from Stack Overflow, they just get linked to my site. So there's a lot of online learners, and I think, getting back to your question of how does this population differ perhaps from, say, 25-year-old or 20-year-olds, is, I think the biggest thing is that they really lack a place to learn in person. In theory, they could go to coding bootcamp or a hackathon or a meetup, but you don't often see people over 60 at hackathons or bootcamps, because it's socially kind of a quote-unquote young thing. Just kind of culturally, it's a thing for younger people who are there to kind of gather. But then we might want to change that, right? What about having coding groups in senior homes? What about coding groups in community centers and stuff? I think that's potentially the future, which is pretty cool.

19:54 Michael Kennedy: Yeah, that is pretty exciting. So certainly the MOOCs, people cruise around YouTube. You said that very few of them actually learned in person, right? Like, 5% mentioned in-class or in-person learning in some form.

20:07 Philip Guo: Yeah, I mean very few people learned in person. And I think part of this is due to the bias of the sample, because we're doing the survey on an online site that people are using to learn online. But I think another part of it, I think there is some truth in it that usually, if you're over 60, you probably have fewer opportunities to be in a classroom than someone who is, obviously K-12 and college you're always in a classroom. But even if, when you're in your 20s or 30s, you might take bootcamps, you might do continuing education classes, you might do Python training with Michael Kennedy, right? You're more likely to do these sort of professional training events at work, but when you're, say, 65 and retired, it's maybe hard for you to think about where to go to do an in-person training. And I think, hopefully this will change in the future. Hopefully in the coming decades there'll be more in-person seminars and classes for this audience.

20:54 Michael Kennedy: Hey, everyone, Michael here. Let me take just a moment and thank one of our sponsors who makes this show possible. This portion of Talk Python To Me has been brought to you by Rollbar. One of the frustrating things about being a developer is dealing with errors. Relying on users to report errors, digging through log files, trying to debug them, or a million alerts just flooding your inbox and ruining your day. With Rollbar's full stack error monitoring, you get the context, insight and control you need to find and fix bugs faster. Adding the Rollbar Python SDK is just as easy as "pip install rollbar." You can start tracking errors and deployments in eight minutes or less. Rollbar works with all the major languages and frameworks, including the Python ones like Django, Flask, Pyramid, as well as Ruby, .Net, Node, iOS and Android. You can integrate Rollbar into your existing workflow, send error alerts to Slack or Hipchat, or automatically create new Jira issues, Pivotal Tracker issues, and a lot more. They have a special offer for Talk Python To Me listeners. Visit talkpython.fm/rollbar, sign up, and get the bootstrap plan free for 90 days. That's 100,000 errors tracked for free! But, you know, just between you and me, I hope you don't encounter that many errors. Give Rollbar a try today. Just go to talkpython.fm/rollbar. And if you happen to be going to PyCon this year, be sure to stop by Rollbar's booth. Get a live demo and pick up some of their swag. When I think of the different places, you're right that like university stuff, I really don't remember seeing people a lot older than me, even when I was college student-aged, you know? But meetups, like the meetups that you would find at meetup.com like the local Python or big data meetups or whatever, I think those do better. Thinking about all the places I've seen, I feel like the code camps, like the free code camps that are sort of like conferences, seem to do actually pretty well with having a wide diversity of ages and ranges and stuff there.

22:48 Philip Guo: Yeah, I think that's actually real interesting. The open source community has been fairly good, and kind of the stereotypical greybeard hackers are, you know, they're in the older generation. That's an interesting population because I feel like they're probably doing well in terms of having older developers who have been working on this for a long time. But I think it still may be hard to reach older people who have not been software developers, who are trying to get into it for the first time.

23:15 Michael Kennedy: Do you think that there's a lot of, hesitation, to go to these groups? Like, I saw there was a meetup and it's probably just a bunch of young kids, so I'm not going to go? Whereas in reality, I don't really think that that's how they are. I think they're pretty open and welcoming, at least the Python meetups.

23:32 Philip Guo: Yeah, I mean I think that's, I didn't ask about this in detail, but just from anecdotes from people's responses, I think there probably is kind of hesitation, because one of the things I talked about when I was talking about this work is, if you go do a Google Image Search for, you know, "programmer" or "learning to code," the images that come up are all like kids and young people with hoodies and you know, beer pong at startups and everything. So the popular image conception of coding and learning to code is very young. Perhaps that kind of dissuades older adults from doing so in person, but I think you're right, that once they actually go and see, especially in more welcoming communities, like the Python one, they'll see there are people of all ages here, this is actually not an intimidating environment. But I think the popular media conceptions from, you know, the Silicon Valley TV shows and Social Network movies maybe put off that way.

24:23 Michael Kennedy: Yeah, I'm not sure the popular media really portrays us developers all that correctly or accurately. It just may have different influences on different people. You talked about some of the reasons that people were learning. And you said there's actually some extra challenges. When we get to some of the stuff that you think you could do, I think some of the solutions might address what you already just now spoke about, like some of the isolation aspects. But there's also just, like, forgetfulness and other types of issues that come with age, that can make this harder as well, right?

24:57 Philip Guo: Yeah, so another part of the study was asking about frustrations. So the title of the study was "Motivations, Frustrations, and Design Opportunities." And I guess we'll talk about design opportunities at the end. Frustrations was really, what challenges were they facing while they were learning? What things frustrated them? And unsurprisingly, a lot of the frustrations were things that I'm sure you've seen, with students of all ages, right? Oh, syntax error, setting up my environment, just kind of understanding the semantics of how programming languages work. So these are universal. We know that these things are hard, about programming in general.

25:29 Michael Kennedy: You know, I find, I interact with people and I'm not sure if this is an age thing or not, but certainly people say, "Oh Michael, you solve this problem, you're really good at computers," and I had, I used no skill, all I did was just randomly try variations with the piece of software they're trying to get to work, until the thing just gave in and worked, right? It's not like I used some great skill or something, I was just persistently pushing through, and I was just willing to play with whatever the people brought to me with their computers, "Can you fix this?" and I'm like, I don't really know about that, but I'll try, you know, and I wonder if that's something about growing up with computers, like, we didn't have a lot of good sources to learn, so you just try variations until it works, and maybe that's something that comes to you easier when you grow up with it, and you're not learning when you're 60? I don't know.

26:18 Philip Guo: Yeah, I think that's, I mean, that's a good lead-in to some of the perceived age-related frustrations, right? The stuff I just mentioned with syntax errors, runtime errors, setting up environment, that's kind of general technical problems of programming. It's kind of like, if you're learning math, you have to learn all these mechanics that is just, they're just sets of rules that you have to learn. But I think that the self-efficacy and the self-confidence with tinkering was what you just mentioned, I think that is something that, for the older population that didn't grow up with computers and didn't grow up tinkering, they might have more issues with, because they think, oh I'm not a computer person, you know, I grew up as a librarian, I grew up as a business person, I don't deal with tinkering stuff, so maybe they're not as willing to tinker as much, and that's what hampers them from debugging more. So I think the self-efficacy is a big factor. I think I wrote that down in the paper, but, on a related note, I think the highest number percentage, 14% of respondents, were frustrated by their own perceived kind of cognitive impairment. They kind of mentioned things like memory loss, and difficulty concentrating, and just kind of not being as quick and as easy to get things as they used to. And again, I didn't do a rigorous, you know, I didn't do brain scans or anything, this was just a survey. This was all self-reported, so who knows how much of that is actually really cognitive impairment, and how much of it is just kind of self-perception and self-efficacy, like, "Oh, you know, I'm older now, "and I don't really want to try to do X, or Y is hard," but maybe they can still do it very well if they had good training or coaching. So I think that was, I kind of wrote in the paper, regardless of whether the cognitive impairments were real or self-perceived, they still perceived themselves as having that limit and that kind of frustrated them.

27:55 Michael Kennedy: It's a real roadblock and frustration, regardless of whether it's valid, right?

27:58 Philip Guo: Right, exactly. It's valid because they say it is, or it's valid for them. Whether it's psychological or physical, it's there.

28:04 Michael Kennedy: It's like an anti-placebo effect.

28:05 Philip Guo: Right.

28:07 Michael Kennedy: They also indicated that they felt like there was poorly organized online content, which kind of just describes the internet itself, right?

28:15 Philip Guo: Right, yeah, I mean, I think this is, again, I didn't mention this out as an age-related factor, this is a general factor if you're learning online and self-teaching yourself, it's actually pretty hard without a coach, right? It kind of related to another point that 10% of people mentioned, that they're frustrated by lack of human contact. Because, again, if you're older, you're less likely to be in a school environment or in a bootcamp or in a company where a lot of other people around can help you. So you're just fending for yourself, learning from these MOOCs, talking in forums, going on StackOverflow, reading, you know, outdated tutorials, and another factor we'll mention is that the technology seems to change so fast now, that even people who were programmers or engineers back in the day, they're like, yeah, my whole API fit in a book, right? I just learned a manual for my assembly language for my device, but now it's like, we have to Google for all these things and we do this web development or data science, and the library changes every month, and nothing works anymore on the web, and it's just, I mean, it's frustrating for me to think about.

29:10 Michael Kennedy: Yeah, and especially if they decide to learn Javascript.

29:12 Philip Guo: Right, right, right.

29:14 Michael Kennedy: Because that's both dramatically changing, and actually somehow getting really complicated! What happened to Javascript being simple? Somehow Python managed to stay true to its zen of being simple, but still being functional, and doing amazing things.

29:31 Philip Guo: Yeah, without getting in the weeds too much with language details, the Python tutor site, it's a web app that I maintain for this Learn to Code site that I used to deploy the survey itself. I was just working on it this morning, and I have this weird type script and web pack and minifiers and all this compile tool chain, and I have to remember how to compile and minify my code and deploy and everything, and I just remember, now I'm feeling old. I remember when I started Javascript, you just had a HTML file, you just wrote a thing in your HTML and stuff displayed, right? There's no compilation or transpiling or anything.

30:09 Michael Kennedy: Exactly. Now there's like four layers with MAP files, and contingency injection and modules and whatnot. Very interesting.

30:16 Philip Guo: Yeah, it's wild. You're right that the Python ecosystem still is, you know, it still can maintain, as long as you have a good package, a meta package like Anaconda or things, it's still fairly decent to copy and paste, as long as you have all the stuff installed, you can, you know, if you have ten lines of code, you import some libraries, you do some analysis, do a graph, it sort of works everywhere.

30:39 Michael Kennedy: Yeah, exactly. I mean, you've gotta get through the Python 2 versus Python 3 and you can of course go deep down into some package that's crazy, but there's like a base that is still simple, which is nice. So how long would you say these folks have been trying to learn? Are they all, like, really new? Have they been at it for a while and they're still sort of fiddling online? Or what's the spectrum of that?

30:57 Philip Guo: There's a really wide range, actually. I think, I'm trying to read from the paper itself. They range from, you know, "I just started and I was just playing with online site," to, "I've kind of been learning for years," right? This is a very imprecise measure, because a lot of people already know programming, and they're like, "yeah, I've been learning for a decade, because I already do it in my job, but now I'm just trying to learn a new language. I'm trying to learn Python or Javascript, or web development or data science." It ranged a lot. This is definitely not all newbies. Because people are on the site, self-teaching, this is not like a controlled environment where we're taking a sample of the population who have never coded before and tell them to code. This is definitely very much a very high variance.

31:41 Michael Kennedy: Yeah, sure, so, yeah, it seems pretty evenly distributed between zero and ten years.

31:46 Philip Guo: Right.

31:46 Michael Kennedy: Let's see. Another, I don't want to skip over this one, because I think this is worth pulling out as well. I think this might be one of these anti-placebo things. 6% of the respondents said that they are frustrated by their inability to think algorithmically, to conceptualize, plan and implement solutions. What do you make of that as being, that does not sound like an age-related thing to me at all. That just sounds like, it's hard to learn to program and be effective, like once you learn the syntax.

32:13 Philip Guo: Yeah, I think so. This thinking computationally or algorithmically, I mean, I kind of made those words, I mean, people didn't exactly use those words, but I kind of put the category of, you know, people were saying things like, "I don't know how to think like the machine. It requires so much precision. It requires all these intricate rules," or like, "Recursion is really hard," or like, you know, "Functions are really hard." That's absolutely right. I think there's a lot of very rigorous computing education and programming education research that shows that even if you learn the syntax and the semantics of a language, just this idea of being able to have, to think about abstractions and modeling and algorithmic thinking, thinking about things in terms of steps, it is a pretty hard process, and that's what a lot of my colleagues who are working with younger kids, part of trying to do computational thinking and teaching in school is to try to say, "Okay, we're not gonna teach you Java programming, what about using something like LOGO or Scratch that we can program robots, and the idea is to get you to think about step-by-step, making recipes instead of becoming professional programmers." I think this thing is a genuinely hard thing in programming, and something that, as people who have done programming for many years, we kind of forget how big of a leap that is for people who don't program.

33:27 Michael Kennedy: Yeah, it's, because I get this question from people who are not particularly old, and also not particularly brand new to programming, it's just like, I see how you solve that problem, I would have never ever come up with that myself. How did you think through to come up with this solution? Because the solutions often are not that hard, but there, it's like looking at a blank sheet of paper, or a blank Word document, and you're gonna write a novel. It's like, how do you start doing this thing, right? It's not that hard once you see it, but to say it's wide open, and what is the right choice to get started? Like, that's harder.

33:59 Philip Guo: Yeah, and I think analogy, an imperfect analogy of this would be, people's kind of math phobia with advanced math. I fall into this myself, so you know, I see my colleagues who are doing theoretical computer science work, or kind of mathematical, serious grad-level research math, I think that they have this, they pose this problem that's this open problem, and they prove these limits and theorems about it and they solve it, I think, I have no idea how you go about doing this. Maybe I'll understand the theorem if you explain it to me and present it well, but I have no idea how you go from, here is a problem, to like, many many months later of turning and trial and error, like here is an elegant one-page proof. And I think that obviously there is a process to this. Like we were talking about in the beginning of the hour with the hacking mentality, you know, these people are for the most part human just like us, and they've gone through certain mental heuristics and certain kinds of search algorithms in their brain and fitting pieces together and chunking pieces until they come up with mathematical proofs, and I think, I personally never grew up with a very rigorous math education in terms of proof-based math, so I would fall in the same boat if someone, at my age, if someone's like, okay, now you've gotta do proofs all day, I would be similarly as intimidated. I'm like, I have no idea how you start conceptualizing mathematical proofs.

35:17 Michael Kennedy: Exactly, it's one thing to read the proof of like, Green's theorem or Stokes' theorem, it's another to come up with it. Well, I guess that's why these people are famous and living on in history and they have theorems named after them, versus those other people who study their theorems, right? So there's a couple other questions that you asked that I would like to just briefly touch on, because I think they're kind of interesting. One was how many hours per week were they putting into this? Was this a half hour on Sunday morning? Is this like, they do it an hour a day? What was the story there?

35:47 Philip Guo: Yeah, so, people spent a wide range of hours, again. The interesting split in this data was between people who were still working and people who were retired or semi-retired, and unsurprisingly, if you're retired or somewhat retired, you have more time to spend on it. So the median for working people was about five hours a week for working people, and for retired or semi-retired, it was about 10 hours a week. But there was a pretty wide variation.

36:10 Michael Kennedy: Yeah, that's quite a bit though. Yeah, I would expect less if I had to guess, you know, that's cool.

36:15 Philip Guo: Yeah, and it is, again, it's all self-reported, anyways. But again, if people who are going on these sites to learn, and judging by the seriousness of their responses, they are probably more on the serious side, and again, I feel like one of my pet theories is that, if you're only doing an hour a week, you probably will give up.

36:32 Michael Kennedy: Yeah, that's true, you probably do have to put in more time than that, because it is something you've got, it's a pretty complicated thing with lots of facts, but also it requires tons of practice, kind of like the algorithmic thinking we were talking about.

36:42 Philip Guo: Exactly, yeah, I mean, I think if you've been sticking with it for a while, you hopefully get hooked enough so that you do spend, I mean, five hours goes by really fast. You can do that in a day if you're retired.

36:51 Michael Kennedy: Yeah. I recently looked at some kind of, it certainly wasn't an academic paper, it was more like a blog post report-type thing. I talked about it on Python Bytes. I'll put it in the show notes, but basically it was this code school that asked 20,000 people how they're learning, or why they're learning programming, or something like this, and one of the facts they had in there was gender, and they said 19% were women, and the balance were men, and I felt like on one hand, like, that's not really where we should be, but it's actually a little better than I would guess, just thinking of it like certain conferences I've attended, not in the Python space, where it's like 5% are women attending. So it's really good like, what's the gender story for older adults?

37:40 Philip Guo: For the respondents, we had 15% female, which is slightly lower than, there was 19 you mentioned?

37:45 Michael Kennedy: I think so, yeah, but that's like college-age learning. I think that's sort of the bootcamp crowd.

37:50 Philip Guo: Yeah, so that would make sense. The kind of college CS majors range is around 20-25% nowadays. So in this population it's around 15%. It's not that surprising again because in the older population especially, people who, most of these people are ones with technical degrees in science and engineering. Historically, in those days, most people were male, growing up in that generation, majoring in that. And also, I think this is also pretty consistent with online learning in general. I mean, kind of MOOCs and online learning environments, StackOverflow, those are overwhelmingly, you know, ninety percent-plus male.

38:25 Michael Kennedy: I guess we as guys are willing to just be by ourselves for hours and force knowledge down our heads, okay. This portion of Talk Python To Me is brought to you by Hired. Hired is the platform for top Python developer jobs. Create your profile and instantly get access to thousands of companies who will compete to work with you. Take it from one of Hired's users, who recently got a job and said, "I had my first offer within four days, and I ended up getting eight offers in total. I've worked with recruiters in the past, but they were pretty hit-and-miss. I tried LinkedIn, but I found Hired to be the best. I really like knowing the salary up front, and privacy was also a huge seller for me." Well, that sounds pretty awesome, doesn't it? But wait until you hear about the signing bonus. Everyone who accepts a job from Hired gets a $300 signing bonus, and as Talk Python listeners, it gets even sweeter. Use the link talkpython.fm/hired and Hired will double the signing bonus to $600. Opportunity is knocking. Visit talkpython.fm/Hired and answer the door. One final one of the questions, you asked what was their job or profession, and obviously you can't just list off all the jobs, but what was the general sense of types of jobs people had that were coming back to programming?

39:37 Philip Guo: I think the biggest one, I think were scientists and engineers, so these are people who had a career in science or a non-software engineering type major, so they're electrical engineers, mechanical engineers, civil engineers ... Basically these people were working at the equivalent of the Google and the Microsoft 40 years ago. They had a career in engineering or science, and now they're phasing out and they're getting in to try to learn this programming thing. Also, quite a few people were teachers, actually, which is interesting, and I suspect, I think most of them were not computer science teachers, because there are actually very few computer science teachers, unfortunately. Most of these were STEM teachers who wanted to learn, either to actually perhaps teach in their school, or that they're retiring now, perhaps volunteer to teach, or maybe teach summer school or teach part-time. It makes sense because the science and engineering crowd and the teaching crowd, these are probably the people who are able and willing to go online to learn stuff in general.

40:33 Michael Kennedy: Sure, sure. One of the opportunities you pointed out is, there's a big gap of people who can teach programming, or both can and have the time and interest in teaching programming, and the amount of teachers, especially at the middle school and high school level, not so much the college and professional level, as you're saying, there might be a way to match these two groups up and address that somewhat.

40:58 Philip Guo: Yeah, so I think one of the big issues in the US, I don't know personally about other countries, but in the United States, we have this dire shortage of computer science teachers at the high school and lower levels. At middle school and high school levels especially, we just have a lack of computer science teachers because anyone who is majoring in computer science in college can get much better paying jobs in the software industry or in other industries. And unfortunately in the US, with how teaching jobs are structured, these are usually not as well-paid as other industry jobs. So kind of the best and brightest computer science majors are usually not becoming teachers, unfortunately. I would love for government to reform and make teaching computer science the most glamorous, awesome profession ever, so more people do it, but the reality is that, it is really hard to get good teachers in computer science. One thing people have done, the most common way people have dealt with this is to retrain current teachers, current math and science teachers, to be computer science teachers. So there are initiatives saying, my computer science instructor was the AP calculus teacher in high school, and that's very common, because they're math, science people. So they're like, "why don't we, why don't you teach computer science as well, we'll give you a summer training course to teach you how to do AP computer science stuff." And there's quite a few researchers thinking about how do you retrain current teachers, they're called in-service teachers, to pivot them into computer science. And I have proposed in this paper, what about people who are 60 and over, right? These are people who are clearly very intelligent, very hard-working, very technically capable, and they're phasing out of their primary career, but they still want to keep active and keep engaged. And I think teaching, especially part-time, is a great way to do that, because you get to be social, you get to be active, there's all these great psychological and physical benefits of maintaining activity over age, and these people have the skills and the wisdom and the enthusiasm to teach. So I think that'll be an awesome thing, if we can make that work.

42:52 Michael Kennedy: Yeah, I think that would be really great as well. And I feel like people perceive this kind of stuff to be more challenging than it is in practice. So I'm thinking of my daughter, who is, I have a daughter who is in second grade, and I have older daughters as well, and we did an hour of code at her elementary school. What we ended up doing was, every grade had one hour of like, a programming exercise with me and the principal, actually, during the hour of code. At first, when I approached them with this idea, it was like, "Maybe we can do this for fifth grade. Maybe for fourth grade as well. But that's it, right, they have to be like more ... " And the teachers can't really help because they're not programmers. In the end, we ended up doing basically something from, I think it's Grok Learning, basically a Scratch thing. And even the first graders did amazing, successful problem solving, and all the teachers the next year were in there helping, because they realized, oh, this is not actually as challenging, as hard as I thought, and these kids are very excited, and everybody wanted to be a part of it. And I think it's one of those things that just sounds super daunting if you've never tried it, even if you're a good programmer like, I'm not sure I want to go be around a bunch of crazy kids and do this, right? You know? But in fact, I found it to to be quite easy and fun.

44:09 Philip Guo: Yeah, and I think that's also a testament to the success of these custom learning environments for children, so these are developed over many years of research and productization development of these more friendly virtual world environments or block-based environments, because again, if you're throwing, if you're throwing kids and their teachers with old versions of Borland Turbo C++ on Windows 3.1 that doesn't compile, then that's probably not a great first experience.

44:32 Michael Kennedy: Exactly. Well, but I think if you teach the hardest part, you teach the algorithmic thinking.

44:36 Philip Guo: Right, exactly.

44:36 Michael Kennedy: And the problem solving, and then it's like, okay, well, now I put that in words, fine. It's, when you first learn programming, and I feel like looking at the syntax in the compilers and all that stuff feels like that's the hard part, you get a compiler bug and a syntax bug and it won't compile and you finally get it to work, you're like, "Yes, I got my program working!" And it's like, you realize you're just starting the work. You've gotta understand where the real bugs and the real performance problems and everything else are. I think it's, you know, get through that thinking part straight away, and avoid the syntax, at least for the younger groups. I'm not sure about the older groups, if that makes any sense or not.

45:11 Philip Guo: Yeah, and that's actually made segway into design opportunities as well that we've already talked about. And one of the kind of design thinking things I had for the older population is that, a lot of them mention how they didn't want to be patronized. They didn't necessarily want games for kids, or cutesy things that are like, games or things that look like they're for kids, because these people are serious career professionals, and they want to learn code-

45:34 Michael Kennedy: They've run global companies or something like that. Now they are, like, thrown into Scratch. I mean, come on!

45:41 Philip Guo: Exactly. So I think that was an interesting design challenge. We have all this great research that shows what works well for younger kids. What are the equivalents of this Scratch and LOGOs for older adults? One potential thing that some people mentioned, are these brain training games. So these companies like Lumosity and other companies make these apps that are kind of engaging and try to test your memory and try to, you know, these kinds of, they make a lot of these games that stimulate older adults to learn and stuff, so perhaps couching learning programming in terms of these brain training puzzles, or you're making claims saying, oh, we can do this concentration game, or do this photo game or something, where you have to write some code, I think then they'll feel like, oh, this is something my peers do as well, so this doesn't feel like you're just giving me a kid's toy to play with.

46:27 Michael Kennedy: Yeah, yeah, that's for sure. One that I like that ties into the motivations was, I might be a scientist but work with a bunch of developers, or I am a manager working with developers, and I want to understand what the people I am the manager of actually do day-to-day, and not just at a higher level, right?

46:41 Philip Guo: Yeah, and I think that was for the kind of younger people in our generation, in our sample, right?

46:45 Michael Kennedy: Right, right, the 60- to 67-ish age.

46:49 Philip Guo: Right, the people who are still working, they want to learn quote-unquote industrial best practices. They want to be learning Python and web development and stuff because they wanted to see what people they're working with are doing.

46:59 Michael Kennedy: Yeah, for sure. All right, so you said in the end that there were seven ways that you thought we could help create something particularly useful for this age group, like not just Scratch, or something like that, right?

47:12 Philip Guo: Yeah, so I kind of outlined just kind of design ideas at the conclusion of this study, and again these are all kind of speculation, based on the findings, and one of them I already mentioned was, targeting the age group, right? So this is very basic user-centered design, knowing your audience, thing, of I think there's not a one-size-fits-all solution for this, right? Things like Scratch are great for working with young children, because they were well-tested and developed with that in mind. So what does it mean to make something like that for an older adult population? Maybe it is a game, because they do like games, or they like crosswords and Sudoku and brain-training games, but they're probably different kinds of games than the games that kids play. Another one is about this idea of universal design, which is this idea in design that says, if you try to design for people with certain, say cognitive or motor impairments, say older adults may not be able to remember things as well, or their hands may be more shaky so they make more typos, or they have more trouble typing and stuff, if you actually design, say, a programming environment or a learning environment that takes those into account and kind of mitigates those effects, that can actually end up universally helping everybody. An environment that helps people remember things better, and helps data entry be easier, can be good for people with other motor impairments, or for people with learning disabilities, or for people who are short on time. So I think that it's an interesting, this sort of population to study is interesting because by designing for them, you can not only help all the people over 60, you can help people of all ages learn better.

48:45 Michael Kennedy: Yeah, that's a really good point. It feels like maybe a little more distributed cognition. You know, maybe this whole coming wave of AI will somehow play into really helping here as well. If it doesn't just, say, here's more than just, say, auto-complete for something, but like, here are the things it looks like you're trying to do, maybe here's a resource to help you show that, to learn that or these are the common steps people take. The closest I've seen to this is something called Kite, but it's certainly focused on professional developers, it's not a teaching environment, right?

49:20 Philip Guo: Yeah, yeah, I mean, I think these sorts of better IntelliSense and better web search and web crawling type things, thinking about targeting that for a learner audience would be really cool, because like you said, you have the business angle is all for professionals at this point because these products and these deep learning startups are all trying to develop productivity tools for professionals or for data analysts or for things, but thinking about developing them for a novice population could be really promising.

49:47 Michael Kennedy: Yeah, I can see that helping a lot of people. Maybe you're a pro developer but you're new in a language. That's a kind of exposure that would be really helpful. Another thing you talked about was scaffolding. What do you mean with that?

49:59 Philip Guo: Yeah, so, one of the, so this idea of instructional scaffolding is just, it's sort of akin to physical scaffolding, that you don't want to build a building by just throwing everything together all at once. You want to build an outside infrastructure, you want to build a scaffold so you can kind of gradually layer stuff on top without it toppling over. A lot of the people were overwhelmed by just how many sheer choices there were in software development, like, start a modern Javascript-based front end web project. What can you do?

50:29 Michael Kennedy: I don't even know how to make all those choices, there are so many!

50:32 Philip Guo: Exactly, there's some flow chart somewhere on the web that's like, here, you want to be a web developer, here's like 500 things you can step through.

50:40 Michael Kennedy: Exactly.

50:41 Philip Guo: I don't know if they made that to be sarcastic or that they're actually serious about how this is, web development is awesome because you have so many choices. But yeah, so one of these, one of the ways to do scaffolding for these environments is just to make a nice, pre-packaged environment for a learning audience. Things like Racket, which is a Scheme-based language and environment, have done a good job. They use it a lot in colleges, and now in high schools, is that you can download Racket, it's called R-A-C-K-E-T, I can't spell on the air. It's basically a Scheme-based language, and IDE, so that you can do all your programming in the IDE, all the libraries are there, it's batteries-included. There are also things like Anaconda for Python, if you want to set up a Jupyter Notebook and do a data science workflow. And I think that they're all more web-based things now too. My Python Tutor site has everything, all the libraries are included, you can play with it. There are web-based IDEs now that I think just make things so much more convenient than having to install everything on your computer.

51:40 Michael Kennedy: Yeah, especially with things like Python Tutor, you don't have to worry about versions and all that kind of stuff, you just go run it. You also have nice visualizations, like stepping through, kind of like debugging, but more for a learning experience, not for a finding bugs step, like you can do on yours.

51:54 Philip Guo: I think visualizations are another great form of scaffold, not to plug my own work too much, but we're heading down that path. So having visualizations of how code is running is another great example of scaffolding. Because otherwise you're just looking at a terminal, at terminal outputs all day. But if you can peek inside the computer and see, oh, this pointer points here, and I thought it would point there, there's my bug, then that just helps you develop your code.

52:16 Michael Kennedy: Yeah, like why did it do that? That's not what I expected. Well, that's what you told it to do. Another thing that you talked about as a possible thing to consider for solutions was that learners change as they gain expertise. As the first week that you're writing code, you have a whole bunch of different problems than your first year, right? After your first year, a lot of stuff goes on auto-pilot, and then, now you think at a different level. How does that fit into this solution?

52:46 Philip Guo: I think there's two aspects that, there's one that is the technical aspect like you mentioned, which is, I think a lot of programming education, both tools and curriculum, are focused on the introductory end, right, on the how do you get started, the basic CS 101, and I think there's actually not that much work on how to progress, right? What happens at six months, what happens at one year? What happens at five years? And I think the other end of that, beyond technical, is the kind of social aspect, right, that when people are progressing as learners, they may not want to be treated like beginners anymore, they want to be treated like apprentices, say, to like an open source project, or junior colleagues in a company and such. And I think both the social and the technical have to go in lockstep, because, if we are only focusing our education on introductory, then it's sort of like a Lemmings thing, where they get started okay, but then everyone falls off the cliff because no-one gets support after that first, say, month.

53:42 Michael Kennedy: Exactly. So another motivation that you talked about, and I'm not sure if we actually touched on it, was, there's some kind of thing around their hobbies that they're really interested in, like, I still remember my grandpa was like, insanely into collecting beer cans. He had like a thousand-foot basement with walls built up, and every wall had like some rare beer can from some place. I mean, I don't know how many beer cans there were, but there were many, and he really had a hard time keeping track of them. And so one of the things that would have been cool is like, some kind of like, beer can trading software, which I was too young to write or whatever. But solving those kinds of problems, like, there's nothing for my beer can collection, maybe I'll, like, create that.

54:28 Philip Guo: Yeah, that's a great set of motivations too. We didn't talk about this earlier, but basically another main set of motivations is to actually create technologies or software that helps their peers and themselves. Just like many hobbyists are getting into programming because they want to scratch their own itch, right? That whatever field you're in, you want to write software for yourself and your friends. This kind of brings a larger conversation about the youth-centeredness of software. It's a cliche that Silicon Valley makes software for 20-something, unmarried young men, to have remote workers do their laundry and deliver them food because they still, you know, they still don't know how to cook, right?

55:10 Michael Kennedy: I have no actual analysis of that, but it does feel like a lot of the problems being solved there are in that vein.

55:18 Philip Guo: Right, and you know, there is the, you could play devil's advocate about that for other reasons, but it is true that, I teach at the college level, and I teach project-based human-computer interaction and web programming to ... classes, where students are making projects, and unsurprisingly, every project idea is, somebody's fulfilling a need that college students have. Every project idea is about deliver food, or picking courses, or doing laundry or finding parties to go to, and it's because these are the things that interest people who are age 18 or 24. At the same time, there's definitely reason to believe, we had this in our survey, is that, if you're 60 or over, you have certain hobbies like beer can collecting, or other people mentioned like personal health, keeping track of their health records is very important to them, right, health is a very important thing. Keeping track of personal memorabilia like family photos, or personal narratives about their history.

56:12 Michael Kennedy: Yeah, genealogy-type stuff, yeah.

56:13 Philip Guo: Genealogy, yeah, genealogy is big. So they now play with software to do all this stuff. They use online genealogy sites, they use social networks to share photos of memories with relatives, and programming and making custom software, or making plugins is a natural extension to their hobbies. And I think this has implications, broadly, economically as well, because if we have more older people doing programming and making open source projects or making products even, we're gonna have more age-specific great products for people of that generation, whereas now, the stereotypical, we're designing for 20-year-olds in Silicon Valley, with laundry and food delivery apps everywhere.

56:52 Michael Kennedy: Exactly. I've listened to you talk, and thinking about, I feel like there are probably still wide open spaces for relatively entry-level type software that would make a big difference to older folks on a, like, hobby-related type of things, right? If you look at the, how do I serve 20-year-olds, like that, there's probably not a lot of low-hanging fruit anymore. You've gotta do something really interesting or catch the right wave or whatever, right? I mean, Snapchat, things like that. But there's probably a fairly wide number of underserved needs that somebody who, the reason I bring this up is if you're learning to program, you can't go and create Amazon.com at its scale, but you could create like, something that'll track and rank and evaluate your beer can collection. That's not a super hard problem, and you could potentially make that a product and make it really an interesting, like, after-your-career career.

57:51 Philip Guo: Yeah, and that's a real interesting point you brought up, because one thing that has happened is that, when younger people I guess like us, or even younger are designing, are thinking, oh, let's think of business ideas, or even research ideas or, you know, government funding, when people think about older adults and technology, a lot of what people think about, both in government-funded research and in products, is assistive technologies, right? Is kind of slowing the decline of old age. It's kind of viewing old age as a quote-unquote disease. It's like, how do we help people live healthier lives? How do we make sure they're not bored? How do we make sure their mental and physical health is good? These are all important things, of course, but they take this view of age as quote-unquote decline, and I think that's unfortunate in a sense, because if you have people who are in that population designing stuff for their peers, like your grandpa or their friends, it's like, we're designing stuff because this is fun for us. This is like, how we're enjoying our life. This is our hobby, this is our equivalent of 20-year-old laundry-making apps. We're not making apps to help us stave off age-related decline, we're making apps because these are things we actually find intrinsically fun, and I think we'll hopefully see more of that as the older population is programming for themselves, rather than say, younger people like us thinking, oh, what products do you think my grandparents need?

59:05 Michael Kennedy: Right, that would be awesome. I'm just thinking of all the remote-control things that you could build, too, for remote-control hobbies and whatnot. It sounds great.

59:14 Philip Guo: Yeah, I think there's a lot of potential there, and I think that the future I'm hoping to see with this work and others is, to kind of view age as an opportunity, right. Again, if you Google Image search "older adults and technology," I'm sure a lot of the pictures you'll see will be health-related assistive technologies dealing with physical and mental disabilities, things that are kind of, they're necessary but they're kind of staving off decline. Whereas, I think in the future, when many of us are over 60, we're still us, right, we still wanna have fun, we still wanna make fun apps, silly apps, games, things to hang out with our friends, maybe sharing inappropriate things with our similar-age friends and stuff, and I think that I would love to see more of that in that generation, and I think they'll be empowered to do that once they know more about how to program.

01:00:02 Michael Kennedy: Yeah, that's, I really think that's a great thing. I always have felt like if I ever retired, I would just keep doing the same thing, just more for myself. So hopefully we've inspired some people to pick that up as well. All right, Philip, I think it's about time we should probably just leave it there. Let me ask you the two questions I always ask before I let you out of here. One, if you're gonna write some Python code, what editor do you open up?

01:00:26 Philip Guo: I think I've used Vim for exactly 10 years, since I started grad school around 2007, and I do not customize that much beyond the regular syntax. I am supremely low-tech in terms of programming. I just use Vim.

01:00:40 Michael Kennedy: Yeah, it just makes it easier to move around, right?

01:00:42 Philip Guo: Yeah.

01:00:42 Michael Kennedy: It's always the same, cool. And a notable PyPI package?

01:00:45 Philip Guo: Last time I was on here, I talked about Anaconda, or as I talked about this meta package, that this one-click installer for everything. I'm trying to think of if I could think of anything else at this point, that is major at this point. I might still be, you know, I think I'm still a proponent of these, of both Anaconda and things like Enthought, and just these one-click installer things that get you up and running, and I think even from two years ago, I think these have grown even more powerful because data science is a big thing now, and now they have Jupyter Notebooks and hopefully the JupyterLab IDEs and stuff. I just think having a one-click installer on your computer to get everything going, so that you can just copy any code from the web from any tutorial and play with it, I think is immensely powerful, and I think it covers the, I mean these meta packages cover most of what you need for production-level data science and analysis.

01:01:40 Michael Kennedy: Yeah, and they're definitely great. And I feel like, you know, if you were getting started just running Jupyter Notebooks and starting to type in there is actually not a bad way to go.

01:01:48 Philip Guo: That's right, and I think a lot of, speaking about education, a lot of more classes now are being taught in the notebooks because it's just a convenient, such a convenient medium. And also now, there are services I'm sure, I don't remember them off the top of my head, but there are web-based hosted platforms for Jupyter Notebook, which makes it even easier. So I guess my answer for that would be, use one of those and you don't have to install any packages.

01:02:09 Michael Kennedy: You get all the good ones, perfect. All right, final call to action?

01:02:13 Philip Guo: I think my final call to action, would be that, I've been going with this age-related theme, it is a cliche, but it is never too late to start. It's now easier than ever to, not only learn programming, but I was talking to relatives who were, I have older relatives who, they are retired or semi-retired, and they just learn a lot from YouTube. They're learning how to fix stuff around their house, they're learning to fix their cars, they're learning repair, they're also learning some basic things about coding. I was just talking to someone the other day, just to kind of get a sample added. I think these online resources are just amazing, and also I guess the other call to action is just, if you are in an older generation, just to talk to, this is a great way to communicate with your younger relatives, if you have kids or grandkids who are into technology and stuff, that's an awesome way to connect with them and to find common ground, and we even found people in our surveys who talked about one of the reasons they wanna learn, was so that they can chat with their kids and grandkids about technology.

01:03:16 Michael Kennedy: Yeah, that's awesome. Definitely this podcast, and yours, is a testament that developers love to talk about software, so if you're trying to connect, that's certainly a good way to do it.

01:03:24 Philip Guo: That's right.

01:03:24 Michael Kennedy: Yeah, so I guess one thing I'd like also to throw out there is, you know, maybe like, if somebody's out there and they're kind of inspired and they're in this age group, maybe you could create like, a Slack channel or a forum or host, like, some sort of virtual meetup on, like, Google Hangouts. These communities, you could totally create them. If people are feeling hesitant to go to, you know, a meetup with maybe a bunch of startup kids, start your own to talk about hobbies, or what you're doing, like some of these hobby projects or something, right.

01:03:54 Philip Guo: Yeah, that's great. And especially, I think the bar to tech space forums is a little lower. That kind of meetups, sorry, virtual meetups where you have to talk on camera, may be a bit more intimidating, but there are already quite a few forums, just online communities of older adults talking about, a lot of it again is about health, or a lot of it's about health, but there are already communities where older adults congregate to talk about their hobbies, and also Facebook Groups and everything. So if we can start more of those for technology-related things, that would be great. But I think this ultimately has to be started by kind of early adopters in that age group, and not necessarily by us.

01:04:26 Michael Kennedy: Right, exactly, like, some 20-year-old going to say, "I've got my new startup idea!" And maybe that works and maybe it doesn't. But it seems like someone from that community doing it would really have the most value.

01:04:37 Philip Guo: And I would love for someone like that to start a podcast, like yours or mine. That would be awesome, too.

01:04:42 Michael Kennedy: That actually would really be cool. So podcasting is definitely one of these options. If you're out there and you do create one of these, be sure to drop by the episode page and put a comment in the bottom so that people can find it. I believe this one is talkpython.fm/112, a hundred and twelve. So, yeah, people put notes there.

01:05:01 Philip Guo: Great, yeah, and you can email me or Michael as well. You should email us as well if you're listening and you're interested in this, because I think we'll definitely be happy to talk about this.

01:05:09 Michael Kennedy: Yeah, absolutely. All right, Philip, thank you so much for once again being on the show, and I'm looking forward to whatever we'll talk about next time you come back.

01:05:17 Philip Guo: All right, thanks again, Michael, this is great.

01:05:19 Michael Kennedy: You bet. This has been another episode of Talk Python To Me. Our guest has been Philip Guo, and this episode has been sponsored by Rollbar and Hired. Rollbar takes the pain out of errors. They give you the context and insight you need to quickly locate errors that might have otherwise gone unnoticed until your users complained to you, of course. As Talk Python To Me listeners, you can track a ridiculous number of errors for free. Just go to Rollbar.com/talkpythontome to get started. Hired wants to help you find your next big thing. Visit talkpython.fm/hired to get five or more offers with salary and equity presented right up front, and a special listener signing bonus of $600. Are you or your colleagues trying to learn Python? Well, be sure to visit training.talkpython.fm. We now have year-long course bundles and a couple of new classes released just this week. Have a look around. I'm sure you'll find a class you'll enjoy. Be sure to subscribe to the show. Open your favorite podcatcher and search for Python. We should be right at the top. You can also find iTunes feed at /itunes, Google Play feed at /Play, indirect RSS feed at /RSS, on talkpython.fm. Our theme music is "Developers, Developers, Developers" by Corey Smith, who goes by Smixx. Corey just recently started selling his tracks on iTunes, so I recommend you check it out at talkpython.fm/music. You can browse his tracks he has for sale on iTunes, and listen to the full-length version of the theme song. This is your host, Michael Kennedy. Thanks so much for listening. I really appreciate it. Smixx, let's get out of here.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon