1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,410 JOSH: Hi, I'm Josh. 3 00:00:01,410 --> 00:00:05,950 I'm 16, and I'm from the island of Guam. 4 00:00:05,950 --> 00:00:08,910 So my question is, is that when you guys were first 5 00:00:08,910 --> 00:00:15,000 learning programming like a long time ago, what kept you motivated? 6 00:00:15,000 --> 00:00:18,970 And when did programming really click with you? 7 00:00:18,970 --> 00:00:21,540 SPEAKER 1: Oh, that's a really good question. 8 00:00:21,540 --> 00:00:25,130 So I think we can probably each answer this one. 9 00:00:25,130 --> 00:00:30,530 For me, I think it was when I finally started finding personal projects that 10 00:00:30,530 --> 00:00:32,270 were not academic in nature. 11 00:00:32,270 --> 00:00:36,410 They weren't homework, but they were actual problems that I wanted to solve. 12 00:00:36,410 --> 00:00:39,680 That's where I really got into programming and the excitement 13 00:00:39,680 --> 00:00:42,740 clicked and my thirst for wanting to learn more and figure out 14 00:00:42,740 --> 00:00:45,107 how to do things differently and better really clicked. 15 00:00:45,107 --> 00:00:46,940 And in fact, the first thing I can think of, 16 00:00:46,940 --> 00:00:48,560 I can paste this into the chat window. 17 00:00:48,560 --> 00:00:52,220 This is from like literally 20 years ago in Harvard's newspaper 18 00:00:52,220 --> 00:00:53,390 that I just Googled. 19 00:00:53,390 --> 00:00:56,060 I wrote this program at the time that was called Shuttle Boy, 20 00:00:56,060 --> 00:01:00,035 and it was this command line program that you could run in a Unix 21 00:01:00,035 --> 00:01:03,830 or in a Linux environment before there was web mail and gmail. 22 00:01:03,830 --> 00:01:06,890 Students at Harvard used to check their email in a terminal window, 23 00:01:06,890 --> 00:01:11,240 just like you might be compiling and running your C code or Python code. 24 00:01:11,240 --> 00:01:13,670 And at the time, there was no GPS. 25 00:01:13,670 --> 00:01:16,160 But we did have buses and automobiles. 26 00:01:16,160 --> 00:01:18,020 And so Harvard had a lot of shuttle buses 27 00:01:18,020 --> 00:01:21,607 that would drive around campus to take students from one location to another. 28 00:01:21,607 --> 00:01:24,065 But the way you could figure out when the next schedule was 29 00:01:24,065 --> 00:01:27,673 was, you picked up this old school technology, printed paper, 30 00:01:27,673 --> 00:01:30,590 and you could look up the time that the next shuttle could pick you up 31 00:01:30,590 --> 00:01:32,820 from location A and take you to B. 32 00:01:32,820 --> 00:01:35,120 So for me, this seemed like an opportunity 33 00:01:35,120 --> 00:01:39,290 to use some of the knowledge that I'd literally just picked up from CS50 34 00:01:39,290 --> 00:01:41,600 and a follow-on class called 651. 35 00:01:41,600 --> 00:01:46,040 And I wanted to implement a program that would make this process much easier, 36 00:01:46,040 --> 00:01:48,500 so students could check the schedule on their computer, 37 00:01:48,500 --> 00:01:51,740 then go outside when they know there's going to be a bus there. 38 00:01:51,740 --> 00:01:53,120 And it was just so gratifying. 39 00:01:53,120 --> 00:01:56,750 I was lucky that this happened to solve problems not just for me, but for lots 40 00:01:56,750 --> 00:01:58,320 of other people on campus. 41 00:01:58,320 --> 00:02:01,130 And I think several hundred, maybe a couple thousand students 42 00:02:01,130 --> 00:02:03,260 at Harvard ended up using this program. 43 00:02:03,260 --> 00:02:07,130 And what was so cool about that, was that it was never done, the program. 44 00:02:07,130 --> 00:02:11,370 I kept wanting to add more and more features to it, fix bugs, and so forth. 45 00:02:11,370 --> 00:02:13,760 So it really became a passion project. 46 00:02:13,760 --> 00:02:17,090 And that, I think, for me is when it really clicked that I'm not just 47 00:02:17,090 --> 00:02:20,390 studying, a topic in a class, I'm not just 48 00:02:20,390 --> 00:02:22,700 learning something very mechanical. 49 00:02:22,700 --> 00:02:24,590 Like I'm learning something very empowering, 50 00:02:24,590 --> 00:02:30,170 programming, that can genuinely solve problems that excite me and genuinely 51 00:02:30,170 --> 00:02:31,550 help others. 52 00:02:31,550 --> 00:02:34,490 Brian, any thoughts come to you? 53 00:02:34,490 --> 00:02:36,905 BRIAN: Yeah I think my general theory is fairly similar. 54 00:02:36,905 --> 00:02:38,420 That when I was first learning, the thing 55 00:02:38,420 --> 00:02:40,970 that really inspired me was the different types of problems 56 00:02:40,970 --> 00:02:42,097 that I was able to solve. 57 00:02:42,097 --> 00:02:43,930 And when things really started to click, was 58 00:02:43,930 --> 00:02:48,140 when I found a way that I could apply computer science in my life outside 59 00:02:48,140 --> 00:02:52,100 of computer science to be able to do interesting things and solve problems. 60 00:02:52,100 --> 00:02:54,830 The one that comes to mind is that in college I 61 00:02:54,830 --> 00:02:57,860 was a graphic designer for my college's newspaper. 62 00:02:57,860 --> 00:03:00,350 And I would often have to late at night be designing 63 00:03:00,350 --> 00:03:02,570 all of these charts and various different graphics 64 00:03:02,570 --> 00:03:06,620 in a particular style to put up on our website or to put into print. 65 00:03:06,620 --> 00:03:10,310 And very often we're designing a very similar type of graphic again and again 66 00:03:10,310 --> 00:03:11,120 and again. 67 00:03:11,120 --> 00:03:14,240 And I remember one day just deciding to write a Python for program that 68 00:03:14,240 --> 00:03:17,450 would just create these graphics for me, so I could just 69 00:03:17,450 --> 00:03:20,820 type in a few lines of code and generate the graphics automatically. 70 00:03:20,820 --> 00:03:23,240 And that alone just saved me hours that semester. 71 00:03:23,240 --> 00:03:25,280 I spent maybe half an hour writing a program, 72 00:03:25,280 --> 00:03:27,410 and immediately, it was making things easier 73 00:03:27,410 --> 00:03:29,720 for me and for the people that I was working with. 74 00:03:29,720 --> 00:03:31,970 So that, I think, really helped it to click for me, 75 00:03:31,970 --> 00:03:37,013 being able to write a little bit of code that helped us solve a bigger problem. 76 00:03:37,013 --> 00:03:38,180 SPEAKER 1: How about Colton? 77 00:03:38,180 --> 00:03:39,800 What inspired you? 78 00:03:39,800 --> 00:03:42,540 JOSH: So I went into it with a goal so from the very beginning, 79 00:03:42,540 --> 00:03:44,580 which was I wanted to make games. 80 00:03:44,580 --> 00:03:47,150 And that was since I was probably 10 or 11 years old, 81 00:03:47,150 --> 00:03:51,320 but I started around the time I was in high school, so 14, 15. 82 00:03:51,320 --> 00:03:56,780 And the first time I actually tried coding it was from an old book 83 00:03:56,780 --> 00:04:01,165 on the Torque game engine which was popular in the early to mid 2000s. 84 00:04:01,165 --> 00:04:03,290 And it used a custom language called Torque script, 85 00:04:03,290 --> 00:04:06,730 which looked kind of like Perl or PHP, but a little bit weird. 86 00:04:06,730 --> 00:04:08,930 Had its own syntax for some stuff. 87 00:04:08,930 --> 00:04:12,020 And probably because of all the syntax and just the fact 88 00:04:12,020 --> 00:04:14,930 that it wasn't formatted very well and it was black and white, 89 00:04:14,930 --> 00:04:18,709 I just kind of got immediately almost repulsed by it, to be honest. 90 00:04:18,709 --> 00:04:20,779 And didn't, I had never seen code before, 91 00:04:20,779 --> 00:04:23,990 so I wasn't really familiar with it or appreciate it or know how it even 92 00:04:23,990 --> 00:04:26,940 worked or knew how to, like, what games were even made of. 93 00:04:26,940 --> 00:04:30,650 I sort of thought they were all like Visual Editor-based projects. 94 00:04:30,650 --> 00:04:33,380 But the desire to make games didn't go away. 95 00:04:33,380 --> 00:04:35,330 I still wanted to make games. 96 00:04:35,330 --> 00:04:37,843 So I tried again, but this time I decided 97 00:04:37,843 --> 00:04:40,010 I was going to learn something beyond Torque script. 98 00:04:40,010 --> 00:04:42,348 I was going to go learn something like C or C++. 99 00:04:42,348 --> 00:04:44,390 Those are the first two languages that I learned. 100 00:04:44,390 --> 00:04:49,312 And learning from a more structured, beginner-focused way, you know, 101 00:04:49,312 --> 00:04:51,770 doing simple exercises, learning the very basics, you know, 102 00:04:51,770 --> 00:04:55,820 what's an if statement, what's a variable, what's the loop, 103 00:04:55,820 --> 00:04:59,023 all of this stuff sort of I think lit a fire within me. 104 00:04:59,023 --> 00:05:01,940 The fact that I could actually make a computer do things that I wanted 105 00:05:01,940 --> 00:05:05,180 to using what sort of felt almost Englishy, but you know, 106 00:05:05,180 --> 00:05:10,460 it's like giving instructions in a way, using C or C++, very imperative style. 107 00:05:10,460 --> 00:05:14,465 And that sort of allured me in a way to where it 108 00:05:14,465 --> 00:05:16,090 wasn't just about making games anymore. 109 00:05:16,090 --> 00:05:19,270 It became about coding because it was a craft 110 00:05:19,270 --> 00:05:22,210 and because I thought it was interesting, and because the landscape 111 00:05:22,210 --> 00:05:24,310 honestly, is just infinitely vast. 112 00:05:24,310 --> 00:05:26,830 You can your whole life and not know, you know, 113 00:05:26,830 --> 00:05:29,800 and this is the same with most sciences, but you 114 00:05:29,800 --> 00:05:31,990 won't be able to know everything there is to know 115 00:05:31,990 --> 00:05:33,532 about everything in computer science. 116 00:05:33,532 --> 00:05:35,282 So you'll always be learning something new 117 00:05:35,282 --> 00:05:37,300 and it'll always be fascinating and interesting. 118 00:05:37,300 --> 00:05:39,580 And that's what keeps me enjoying it to this day. 119 00:05:39,580 --> 00:05:41,680 I can learn, I can get a lot of enjoyment 120 00:05:41,680 --> 00:05:46,012 out of even small little new things that optimize my workflow 121 00:05:46,012 --> 00:05:48,220 or let me think about programming in a different way. 122 00:05:48,220 --> 00:05:51,240 So I don't know, it's been a fun journey. 123 00:05:51,240 --> 00:05:52,000