JavaScript Jabber

JavaScript Jabber is a weekly discussion about JavaScript, front-end development, community, careers, and frameworks.

Subscribe

Get episodes automatically

143

143 JSJ Teaching Programming and Computer Science with Pamela Fox


Check out JS Remote Conf

02:37 – Pamela Fox Introduction

04:11 – Working at Khan Academy

  • Dominant Age Group = Middle School

06:43 – Encouraging Devs to Learn While on the Job

09:42 – Technology Used to Build the Curriculum

12:20 – Common Errors for Beginners

21:12 – Creativity & Expression

27:40 – Learning to Program

36:01 – Teaching Adults vs Kids

37:53 – Coding as a Basic Literacy?

40:18 – Getting Education as an Educator

45:18 – Traditional Computer Science Education vs Non-traditional Computer Science Education

52:09 – Dave’s Daughter, Molly Smith, Joins the Show

This episode is sponsored by

comments powered by Disqus

TRANSCRIPT

DAVE:  Jamison, do you prefer Jame or Jamis or Jamison?

CHUCK:  [Laughs]

JAMISON:  Just call me I.

PAMELA:  Jam?

[Laughter]

JAMISON:  Because it’s [in the middle of] my name.

AJ:  Well, I prefer to call him Mi-son. Like, “What’s up, My-son?”

[Chuckles]

[This episode is sponsored by Frontend Masters. They have a terrific lineup of live courses you can attend either online or in person. They also have a terrific backlog of courses you can watch including JavaScript the Good Parts, Build Web Applications with Node.js, AngularJS In-Depth, and Advanced JavaScript. You can go check them out at FrontEndMasters.com.]

[This episode is sponsored by Hired.com. Every week on Hired, they run an auction where over a thousand tech companies in San Francisco, New York, and L.A. bid on JavaScript developers, providing them with salary and equity upfront. The average JavaScript developer gets an average of 5 to 15 introductory offers and an average salary offer of $130,000 a year. Users can either accept an offer and go right into interviewing with the company or deny them without any continuing obligations. It’s totally free for users. And when you’re hired, they also give you a $2,000 bonus as a thank you for using them. But if you use the JavaScript Jabber link, you’ll get a $4,000 bonus instead. Finally, if you’re not looking for a job and know someone who is, you can refer them to Hired and get a $1,337 bonus if they accept a job. Go sign up at Hired.com/JavaScriptJabber.]

[This episode is sponsored by Rackspace. Are you looking for a place to host your latest creation? Want terrific support, high performance all backed by the largest open source cloud? What if you could try it for free? Try out Rackspace at JavaScriptJabber.com/Rackspace and get a $300 credit over six months. That’s $50 per month at JavaScriptJabber.com/Rackspace.]

[This episode is sponsored by Wijmo 5, a brand new generation of JavaScript controls. A pretty amazing line of HTML5 and JavaScript products for enterprise application development in that Wijmo 5 leverages ECMAScript 5 and each control ships with AngularJS directives. Check out the faster, lighter, and more mobile Wijmo 5.]

CHUCK:  Hey everybody and welcome to episode 143 of the JavaScript Jabber Show. This week on our panel, we have Joe Eames.

JOE:  Hey everybody.

CHUCK:  Dave Smith.

DAVE:  Hoi hoi.

CHUCK:  AJ O’Neal.

AJ:  Yo, yo, yo, coming at you live from the snow globosphere of Provo.

CHUCK:  Jamison Dance.

JAMISON:  Hi friends.

CHUCK:  I’m Charles Max Wood from DevChat.TV. And this week we have a special guest, Pamela Fox.

PAMELA:  Hello.

CHUCK:  Do you want to introduce yourself real quick?

PAMELA:  Yeah. So, I’m Pamela Fox and I work at Khan Academy where I create the computing curriculum, the computer programming, computer science, and also engineer the platform that delivers it along with a team of a few more engineers. And I really like teaching programming and I also teach it on the side because I can’t get enough of it. So, I do that for the Girl Develop It San Francisco Chapter. And that’s teaching web development.

CHUCK:  Very cool.

JAMISON:  You’ve been involved in education for a while though. Weren’t you at Coursera before?

PAMELA:  Yeah. So, I started my entire career I guess at Google in Developer Relations, which I think of also as being education. And that was on Google Maps API and Google Wave API and showing developers how to use those. And eventually I realized that education was really the thing I liked so I went to Coursera and was a frontend engineer there. And that was fun but I got kind of jealous of all the Coursera professors who got to teach, because I wanted to teach. So, since I don’t have a PhD because I never quite had the patience to get that, I discovered that Khan Academy would be a place where I could both teach and code, which is perfect.

JOE:  So, we have yet another Google Wave…

[Laughter]

DAVE:  Two in a row.

PAMELA:  Who did you have last time?

DAVE:  Joseph Gentle.

PAMELA:  Oh yeah, Joe, yeah. He was interning when I was on the Wave team. He’s great.

DAVE:  Very cool. Well, glad to have…

CHUCK:  Yeah, we liked him, too.

JOE:  Yeah so, Khan Academy is a very cool company. What’s it like working there?

PAMELA:  It’s great because everybody’s just really into what we’re doing. And just everybody legitimately loves learning and teaching and all that stuff and it’s a lot of fun as well. I guess I was a bit worried when I joined it that since Khan Academy’s primary audience is kids that it would mean that we wouldn’t ever talk about anything adult.

[Chuckles]

PAMELA:  But it turns out that that’s not the case. We are able to have adult conversations at lunch. So that…

JAMISON:  Is there Blue’s Clues playing on all the TVs?

[Laughter]

JOE:  Do you get recess, a nap time?

PAMELA:  Yeah, pretty much. I wish we get recess.

CHUCK:  Snacks?

DAVE:  Wait, wait, you said Khan Academy is for kids?

PAMELA:  Well, it’s primary audience right now is centered in middle. I dominant age group is middle school. Now, that doesn’t mean… so when I am creating curriculum I think to myself, “Okay, the most likely users of this are 12-year-olds. But I may also have a bunch of adults using it,” because I do use it when I’m teaching adults. So, ideally we teach things in a way such that all ages like it. But there are people who look at Khan Academy and say, “Oh, it’s only for kids,” because we have cute avatars and whimsy and stuff like that. But I just think that they’ve forgotten the part of themselves that likes cute avatars, right?

DAVE:  Yeah.

[Laughter]

PAMELA:  Who wouldn’t like that stuff? So, I don’t know. It could be that I’m actually a 12-year-old at heart which has been rumored. But I think that everybody is a 12-year-old at heart.

DAVE:  I totally agree.

PAMELA:  [Chuckles]

DAVE:  And if you’re not, it just means you have to get in touch with your 12-year-old again.

CHUCK:  [Chuckles]

PAMELA:  Yeah. I think we optimized for people who either have a 12-year-old in their heart or want to get in touch with that. That’s our target audience.

CHUCK:  That reminds me of dealing with my extended family. If I want anything to get done, I have to treat them like 5-year-olds.

DAVE:  Aww [chuckles].

JAMISON:  Oh boy.

DAVE:  Do you give them avatars, Chuck?

CHUCK:  I don’t know about avatars. Sometimes I threaten them with timeout.

JOE:  [Chuckles]

PAMELA:  Yeah well, so badges and avatars are surprisingly motivating. I was a little hesitant about the whole badging, gamification, that sort of thing, because we did some experiments with it at Coursera. But I was very hesitant about it because as soon as you introduce badges, then you’re introducing extrinsic motivation and all that stuff. But they are still doing a lot of learning on the way. So, it’s a careful balance with the badges and the avatars and making sure that you’re awarding the right things. And so, we’re constantly tweaking the things that you get awarded for to try and make sure it’s around good pedagogical games.

JAMISON:  So, I have a question around education in Khan Academy. You alluded to this when you said your team is all really excited about learning. But are there things that you do as a company to dogfood the idea that everyone should be constantly learning? How do you encourage developers to learn while they’re on the job basically? Does that make sense?

PAMELA:  Yeah. So, we like to dogfood our own stuff. We call them dogfoods, once a week. So, any time there’s a new product we’ll have a dogfood of it. We’ll gather around the lunch table or we’ll do a virtual dogfood. So, most people will try other people’s things before they come out. And that’s a great way of getting feedback. But that’s more about the product experience.

For the actual dogfooding the content side of the product, we did recently create new missions I think around algebra and calculus. So, Sal sent out an email to everybody I think before Christmas [chuckles] challenging us to do the algebra and calculus missions, reporting any feedback along the way. So, I know Sal went home and did it. And then Sal went home and did it with his kids, though a lot of people also have kids that they’re doing it with. So, I think we all actually use Khan Academy. Right now I’m using Khan Academy to learn basic life skills, like what are taxes, which maybe I should have learned earlier in life.

[Chuckles]

PAMELA:  But I’m really happy. Yeah, I bought a house last year with my brother and I watched the mortgage video last week. And now I know what that mortgage is that we got.

DAVE:  Cool.

PAMELA:  So, that’s great. So yeah, and the cool think about Khan Academy is there is a ton of stuff on there. So, we may not all be learning the same stuff, but there’s just generally an attitude of learning.

DAVE:  Is the tax curriculum really popular among the 12-year-old audience?

[Laughter]

PAMELA:  I’ve actually had… I always read, every time I watch a video I always read the questions and answers, because I find that the most interesting thing, to see if other people had the same questions/answers than me. And I just watched the interest video and there are a lot of people saying they didn’t know what logarithms were yet. So presumably, those might be middle-schoolers, because they don’t know what logarithms are yet. And so, I think that…

JAMISON:  Yeah, middle-schoolers.

PAMELA:  The middle-schoolers, they’ll just go…

[Laughter]

JOE:  We all know what logarithms are here.

DAVE:  Of course.

JOE:  We just want to hear what you think they are to make sure that you know what they are.

[Laughter]

PAMELA:  Yeah, that’s a good thing. One thing I’m starting to realize is how much basic math is involved with little parts of life. And I guess I start to realize it more like geometry in sewing and trigonometry in painting the walls or figuring out which paint to get and stuff. So, I think the middle-schoolers will just wander. They’ll just wander all over Khan Academy even if they’re not at the right level for it. They don’t care and that’s fine, right? As long as they don’t get discouraged, then.

JOE:  How many middle-schoolers have watched the thing on mortgage-backed securities?

[Laughter]

PAMELA:  I will do a big query after and let you know.

JAMISON:  [Laughs]

DAVE:  So, can you tell us a little bit about the technology that you use to build the computing curricula at Khan Academy?

PAMELA:  So, John Resig built it originally. You may know him as having invented jQuery. But he also invented our programming environment. And it is built just using the Ace editor, which is one of those coding editors. A lot of people use CodeMirror as well, but Ace actually does have better support for mobile. So, we use the Ace editor. We load the Processing.js library in and then output onto the canvas. Now, in between that there’s actually a lot of work to process the JavaScript before we output it because we want to, well first thing we’ve got to do is check for infinite loops. Because if you introduce an infinite loop in your code and you evaluate in the browser, the browser’s going to freeze. And middle-schoolers do love when they successfully crash Chrome. And I’ve seen them beg their teacher for a cookie when they did that.

[Laughter]

PAMELA:  But we don’t want everyone’s programs crashing. So, we have to do an infinite loop detection which involves sending off to a web worker, having the web worker attempt to run the code, seeing how long it takes, checking for a timeout, and then saying, “Oops. It took too long.” So, that checks for infinite loop as well as just really slow-running code. So, there’s that and then we also check for errors. So, we send the code through JSHint which hopefully all JavaScript developers know because it’s a great way to check your JavaScript for errors and best practices. And then we also send…

DAVE:  Amen, amen.

PAMELA:  [Laughs] Yeah, everybody should just have that installed in whatever plugin, whatever environment they’re using like SublimeLinter. And then we send it through BabyHint which is something we made up which checks for spelling errors, because a lot of people don’t know how to spell ellipse. And you should still be able to learn how to program even if you can’t spell ellipse. So, we send it through that as well. And that’s more web workers. So, a lot of web workers in the middle, but finally it will get output to the canvas. So, that’s the whole frontend of it. And the backend is done with Google App Engine, Python, BigTable, which is the stack that’s used across Khan Academy.

DAVE:  So, you’re saying the browser itself does not actually execute the student’s programs?

PAMELA:  The first thing to execute the student’s program is a web worker which has Processing.js stubbed out because web workers cannot access a DOM. So, we stub it out, we run it in the web workers, see if it will run successfully, and then we’ll send it to the browser. So eventually, the browser does execute it.

DAVE:  Oh.

PAMELA:  But it’s not the first thing that executes it.

DAVE:  Okay. So, you’re just checking for common problems before you let the browser run it.

PAMELA:  Yes, yes.

DAVE:  Okay.

JAMISON:  That’s really cool.

DAVE:  Yeah. I wouldn’t have guessed that.

PAMELA:  [Chuckles]

DAVE:  Very clever.

JOE:  That was…

JAMISON:  So, I have a question about just teaching programming in general. The tech side is fascinating but I’m also interested in the human side. And where do you find beginners get stuck mostly in programming? Are there common errors you identify? And then do you do things to smooth those out for them?

PAMELA:  So, we found that beginners get, they get stuck a lot on syntax errors. So, the way we teach is we have a talk-through which is me coding and talking. And we recode the audio file and then we play back the audio file synced to a live playback of the typing commands that I typed. So, it’s like a video but you can actually pause it and edit the code at any point. So, it’s a little more interactive than a video. So, we have a talk-through.

And then we have a challenge. And a challenge is where there are three steps and each step says, “Okay, try to draw a rectangle. And here’s some hint code for you.” And then you try to do the step and then we analyze your code using static analysis and give you some message to try and get you to the solution. Because the goal isn’t just to assess you. It’s also to help you understand where you got wrong and to try and get you to the end of the challenge. And then finally, we have projects which are more freeform and get peer-evaluated. So, the very first challenge they just draw an eight using rectangles, so three rectangles. And that is where you find a lot of very interesting syntax errors.

And so, we do send the code through JSHint. But you know, JavaScript is a crazy language. And an error is so hard. You see a particular bit of JavaScript and it’s really hard without context to know why they made that error. Like, why is there a semicolon instead of a comma? So, I actually for that first challenge also have a set of regular expression-based syntax checks and output those, because there is no way, we can’t get to good enough error messages just with JSHint. Because JSHint does not know the context, so it has to give the error that is the most generic about the parsing problem it saw. But I can give a more specific error like, “Oh, you put a colon there. You meant a semi-colon actually, right? Make sure you pay attention to the difference there.”

So, there’s definitely a ton of syntax errors that happen on that first challenge, because it’s their first introduction to syntax and the fact that syntax matters, and the fact that a semi-colon is different from a colon. And that little difference will break your entire program and that’s significant. And then later on conceptually, the hard parts, you can probably guess. But hard parts are variables, loops, and object-oriented programming. Those are probably the three hardest part of the curriculum for people.

JOE:  So, are you familiar with a lot of what other companies or organizations are doing to solve the same problem? And what do you like about their approaches? What have you guys tried to do differently that maybe solves problems with people getting lost or caught up differently or better?

PAMELA:  Yeah, so yeah, there are a lot of different companies in the teaching programming space. A lot of them for younger people are teaching using drag and drop blocks, so Scratch, SNAP!, Code.org using Blockly. And the advantage there is that you can’t make a syntax error. You could make a runtime or a logical error but you can’t make a syntax error. So, that can be really, really good for people because it lowers the intimidation faction.

So, we have started experimenting with drag and drop JavaScript. And it’s our take on the whole block-based drag and drop coding, because most of those block-based environments are more higher level. And they kind of look like code but they don’t quite look like code, whereas our drag and drop environment looks exactly like JavaScript but with some borders around it that you can drag around. And that’s nice because people can do it on an iPad. They can do it, if they don’t feel comfortable typing yet. And they seem to really like it when we had it for Hour of Code in December. So, we’re going to keep experimenting with that.

But the other thing that people do is that they do use more higher level environments. So, we’re using Processing.js. And Processing.js if you haven’t used it is like the Canvas API. So, it’s pretty low-level stuff. You draw rectangles. You draw ellipses. You build those up. You can respond to mouse events. But if you want to make a game, you got to figure out how to turn rectangles moving on a screen into a side-scroller. So, that’s a lot. You’re not going to be able to do that until you’ve learned quite a lot of programming. So, what other environments do is that the actual language and environment is more higher level. And so, if you want to make angry birds, a side-scroller, or whatever, it’s actually a lot less code to get to that point. Or they’ll provide a lot of libraries that will make it a lot less code to get to that point. And that gets people to the, “Yay, I get it” point faster.

So, I think that there’s a lot of good to that approach as well, because I know Code.org in their Hour of Code they were able to teach loops. And for me to get to loops in an hour of JavaScript, I guess there’s a way I could get to it. But I would feel like I wouldn’t be able to properly cover everything else getting to loops. But the time we got to loops within an hour of teaching JavaScript they wouldn’t have a deep enough understanding of the other stuff. But with more higher level environments, with the drag and drop, you can actually get to loops really quickly. So, you can get to more fundamental ideas.

So, I think it’s two different approaches. And we are starting to experiment more with the more higher level stuff and earlier ages and no typing, that stuff, and trying to look at what they’ve done.

JOE:  So, I don’t know how much of the different Code.org things that you’ve seen. But I don’t know. Have you seen the CodeCombat [inaudible]…

PAMELA:  Yes.

JOE:  That they talk about? So…

PAMELA:  Yeah. CodeCombat, yeah.

JOE:  Yeah. I did five or six different Hour of Code events that week. And I used a lot of CodeCombat. That seemed to be, I offered kids Frozen or CodeCombat. And everybody wanted to do CodeCombat, not Frozen. [Chuckles]

PAMELA:  Interesting. So, CodeCombat, the idea is using JavaScript commands to move this ogre around the screen and fight. And then the Frozen Code.org is using…

JOE:  The Blockly.

PAMELA:  Yeah, using Blockly which generates JavaScript behind the scenes to, I was drawing a snowflake which was actually I thought really cool. You know, because you have to draw different arms of the snowflake and add some details. And yeah, so I think, but I don’t… So, when I see CodeCombat I have to admit I don’t like playing games. I find it really boring. So, I don’t really, I’m not personally attracted to things like CodeCombat, especially because there’s no way for me to express myself in it. So, I like to make sure that in any programmed environment, that there is the ability to express yourself. So, if in CodeCombat I got to program a victory dance and have a different costume, I would like that.

[Chuckles]

PAMELA:  And so yeah, so I generally like to make sure that there’s some creativity and some expression in what we do, because that is a big part of programming, at least for me. And for many people I think it’d be a big attraction, is the creativity and the self-expression. So, that’s what I would want to have a bit more of in CodeCombat. I know that it is attractive to quite a few people. But I’m not sure if it’s attractive to everyone.

JOE:  Right.

PAMELA:  On the other hand, our stuff might also not be attractive to everyone because maybe we’re too far on the creativity spectrum, not enough in the more logical or fighting or all that sort of things, right? So ideally, so we just talked to the Scratch team this morning. So hopefully, Scratch is really cool. It’s from MIT. And it’s very much about creative expression. And you can make games and animations and stories and all that stuff. And their actually main focus is on creativity and expression and not so much computer science concepts. But they were talking about widening the walls, which means increasing the possible number of ways that, or reasons that you get interested in programming.

JOE:  Right.

PAMELA:  So currently, they’ve got dancing and animation and stories. And now they’ve got a grant so that you can use programming to create hip-hop dance routines. And that might appeal to this whole other person, right? So, it’s a thing about programming. There are so many things we can do with it. Program music and program it with data. So, I think that would be our goal, to see like, “Okay, are there particular audiences that we’re missing out on because we haven’t widened the walls and we’re not appealing to their interests?”

JOE:  Right.

PAMELA:  And how can we do that?

JOE:  It’s interesting to me what you said about creativity because, well I completely agree with it. What’s fun about programming is being able to create something you want. And like you said, when playing CodeCombat which is just a game and you just use statements to get through it, there’s not really any creativity. You have a very prescriptive thing that you have to solve, right?

But on the other hand, one of the things that I noticed was although it had some rough spots to it, CodeCombat got to looping within 15 minutes with a kid who’s reasonably capable at understanding. Now, I would say that was by far the biggest place where kids got stuck, was understanding what they were trying to do. And I didn’t feel like it was so much the fact that they couldn’t figure it out, but that CodeCombat just needed to do a little bit more A/B testing and figuring out what kinds of words would help the kids understand that, “Hey, you’re looking for a repeating pattern. Try to solve a repeating pattern,” right?

PAMELA:  Yeah.

JOE:  So, for the very beginners, the expressivity didn’t seem to be such a big deal. When they’re doing Frozen they can make those snowflakes. That’s very cool. When I went and did the Frozen, I was screwing around with it while some kids were doing it at a corporation. And I ended up writing the initials of the corporation using the girls on their ice skates, because I thought that would be really fun and it was basically expressing myself in the programming. But the kids that were learning, they weren’t doing that. They were just trying to get through the level and get to the next place. So, for education, do you feel like that still, like at what point do they need to have that creativity, that opportunity to be creative? Because it seemed like right at the beginning, the kids are very engaged for that first hour without much opportunity to be creative.

PAMELA:  Yeah, it’s a good question. I think you could make things engaging and they don’t… because I did the Frozen Code.org as well and I was also having fun with it just getting to the next step. So, you can be engaging and it doesn’t necessarily have to be creative. But I guess the question is when you come out of that experience and somebody asked you what is programming, and what are they going to respond? So, they might respond that it’s a way of solving problems, right?

JOE:  Right.

PAMELA:  And that’s the way it’s primarily presented there. I want students to come away thinking it’s a way of solving problems but also a way of creating.

JOE:  Right.

PAMELA:  Just because that’s I guess a particular passion of mine, is the creation aspect of it. So, ideally you do both. And I don’t know how the graders are done on Code.org, but we do our graders on Khan Academy so that there is a rough idea of a right answer, but there’s also a lot of flexibility in it. So, the one where they have to color their ice cream cone, they can color their ice cream cone any color as long as they got in across the idea of how the coloring commands work and they understand the order of the commands matter.

JOE:  Right. Yeah, so I had my 10-year-old son go through CodeCombat. And without the expressivity, he went through for 45 minutes then he just got very bored. He wanted to go back and play Minecraft where he could be creative.

PAMELA:  Mmhmm.

JOE:  So for him, it wasn’t engaging for very long.

PAMELA:  Yeah. People are very, yeah kids are really into Minecraft. Some of them have reprogrammed it on Khan Academy actually.

DAVE:  Oh yeah, I’ve seen that one.

JAMISON:  Whoa.

PAMELA:  [Chuckles]

DAVE:  Yeah.

PAMELA:  Well, I actually try to use Minecraft because I’m like, “Oh, well the kids are into this. I should get into this.” But I actually couldn’t figure out how it worked. But anyway, that’s embarrassing.

[Laughter]

PAMELA:  Yeah. I don’t really have solid statistics I can give about, at what point do you need creativity. But I know that, I think just personally and on the team we want that to be one of the things that you come away with thinking that programming can be.

JOE:  Right. So, who…

PAMELA:  And just generally, kids need more creativity in their lives. Especially at Khan Academy and math. Our math exercises, they’re just, maybe there’s a way in which they could be creative. But right now they’re like multiple choice, enter a number. And it can be really satisfying to answer them, but there is no creation there. So, trying to bring more creation into the learning process starting in computer programming, but maybe it will go out to other aspects of Khan Academy.

JOE:  So, we just had Jenn Schiffer on the show a little while ago talking about staying interested in programming through art. And that was very…

PAMELA:  Oh yeah, yeah.

JOE:  that was very interesting. That was a very interesting conversation but still along the same lines. At a certain point if all you’re doing is solving a problem and learning programming that way, it’s just like if history is memorizing dates then it gets boring really quick.

PAMELA:  Yeah. I think that everything is more fun to learn when you have an actual application for this. And I’ve started just noticing this more in everyday life now. So, actually being motivated to remember trigonometry because we’re trying to decorate a room and cut out a sewing pattern and stuff like that. So, it feels like generally we should be teaching more things via practical applications of it.

JOE:  Mmhmm.

PAMELA:  Why do we do chemistry and all this stuff separate? Why isn’t it that we have cooking class and that’s actually how we learn a lot of these chemistry principles?

AJ:  Seriously. I totally agree with that.

JOE:  Fact: AJ was recently answering some question on some online forum where somebody is asking about getting started in programming, and I’m paraphrasing AJ. Maybe he’ll remember exactly what he said. But he says [something to the effect] of, figure out a problem you want to solve and then start there.

PAMELA:  Yeah. And so, you can think of it as a problem you want to solve, or I think of it as a thing you want to create, which is…

JOE:  Right.

PAMELA:  Is the same thing, just in terms of what you imagine in your head. And then that will motivate you. And that’s what I constantly tell the adults that I teach how to program. Because we do these workshops and they do exercises. But then I’m always telling them, “You have to keep practicing. You have to practice so much. You have to program for just hours and hours. It’s a skill that takes a lot of practice.” But you shouldn’t be doing these silly things that I come up with, because those are the things that I came up with. You should find something that you are really into and then that will motivate you to actually get through the hard parts, because part of it will be hard.

Programming’s not easy. It can get hard. And if you’re working on something that you’re not into, you’re not going to be motivated to get through those hard parts unless somebody’s paying you or bribing you with a stick or something like that. But it’s way better if you want to get through it because you’re really excited about what the end result is going to be.

JOE:  Mmhmm.

CHUCK:  I’m going to put my foot in the door here. Dave had a question he wanted to ask.

DAVE:  Yeah, sure. So, I’ve come across people who seemed to think that you are either born with the ability to program of you’re not. What has your experience teaching programming to other people taught you about this particular idea?

PAMELA:  That’s a very interesting question. So, what I’ve seen on the adult level is that the thing that can have a big effect, or even at the high school or [middle] school level is the ability to tinker and experiment and being okay with trying things, you can’t be timid around the computer. So, I think that just being adventurous around a computer, so I think feeling comfortable with things on a computer that aren’t programming is good preparation for learning to program. You should be using keyboard shortcuts and Google Docs and playing around with spreadsheets and all this stuff, right? And you should feel pretty comfortable typing if you’re going to… because if you, I see some people who are typing and they’re typing very daintily and gently. And it’s like, “No. You just got to ugh, just slam it!”

[Chuckles]

PAMELA:  Anyway, I just, I don’t want, when I see that timidness it usually doesn’t coincide well with how much they progress in terms of programming, because you just need to be yeah. So, I think that’s an attitude thing. And what I’ve seen is that it seems to get, as you get older we seem to get more timid. So sometimes, it can be harder to teach older people. We did a workshop with middle school and high school students. And the high school students were just much more timid and unwilling to experiment and seemed almost uninterested or not as curious, right?

JAMISON:  Really?

PAMELA:  And the middle school students are very curious.

JAMISON:  Interesting.

PAMELA:  Yeah. And I think high school students get tired and they’ve got all these concerns and everything in life, right? So, I don’t know. So, this is also a thing I don’t have the stats on. But so, I think that’s why it’s good just to, if you want to get your kids programming, just get them used to tinkering with any sort of computer app. I didn’t start as a kid programming but I started when, my earliest memory is like, five years old, was playing with a painting program. And I used so many painting programs growing up. I loved painting programs and drawing programs and all that stuff. And so, I got used to treating software as this thing that I can be curious about and experiment with and all that stuff. And then programming just became another thing to be curious about and experiment with.

JAMISON:  Did you ever use Kid Pix?

PAMELA:  Oh my god. Kid Pix is amazing.

JAMISON:  Oh, man.

DAVE:  I loved that!

JAMISON:  Me, too.

DAVE:  I loved Kid Pix.

PAMILA:  Yeah. So, the paintbrushes that have sound effects. I just remembered because we…

JAMISON:  Yeah.

DAVE:  Yes! [Laughs]

PAMELA:  We just released sound effects on Khan Academy. And I meant to make a mini Kid Pix.

JAMISON:  Make Kid Pix? Oh, it’d be so rad.

PAMELA:  Yeah, because I have a…

DAVE:  Oh, man.

PAMELA:  Water [inaudible] bubble sound and you could do a little water bubble. Yeah, Kid Pix is amazing. So yeah, you don’t have to have your kid programming at five. Just have them playing with things and be willing to play. So, I don’t know about being born with the ability to program. I am reading an entire textbook right now called ‘Sex Differences in Cognitive Abilities’. And it’s just an overview of every single study about cognitive abilities and sex differences, because there are a lot of people that would claim that maybe men are born with the ability to program more than women. So, I’m only 10% of the way through that textbook right now. But there’s [inaudible] studies.

JOE:  You’re reading this?

PAMELA:  Yeah. Well, I rented it. Textbooks are expensive. So yeah.

JAMISON:  Yeah.

[Chuckles]

PAMELA:  I’m renting from Amazon. I’m highlighting basically every other sentence and hoping that that basically means I get to keep the whole textbook.

JAMISON:  [Laughs]

DAVE:  Nice.

CHUCK:  Wow.

JOE:  That’s of particular interest to me as my daughter’s getting into programming now. So, that’s really interesting to me about gender differences and how to prepare her for what it’s going to be like as she moves into one, a male-dominated field, and two, encourage her. When she first got into it I thought maybe she just wanted to go into the web design type stuff because that’s what she was doing and she really liked it. But then she kept insisting, “No, dad. I want to code, want to write code.”

PAMELA:  Yeah. So, what I have seen on Khan Academy is that we do still have more males than females that start our curriculum. But the females are equally successful at completing it as the males. So, it seems to be just a problem of starting. So, we’re working on various initiatives to get just more females starting the curriculum.

And the other thing that I like to point out is that I just think that software is a huge field. And there are so many parts that can appeal to different people. So, there’s human-computer interaction to appeal to people that really like thinking about the people side of it. There’s architecture. Like if you’re the kind of person that likes thinking about how to organize your kitchen and have it perfectly clean then you might be a really good software architect, right? So, there are just so many aspects of software now that I feel like we’re at the point where even if there are cognitive differences, maybe females and males differ in their spatial or their social or anything like that. But there is a part of software that’s better for people in each of those, with each of those skills.

AJ:  So, I had an experience where I thought that cars were complicated and unapproachable when I was younger in my teens.

PAMELA:  Mm.

AJ:  And then I got out of college and I had to fix a car on my own. And so, I realized that the car was simply made of screws and nuts and bolts and metal. And so, as I got under the hood and I started playing around with it and realized, “Oh, this isn’t magic. This is like programming. This is a bunch of simple components that are all put together in a system that works,” then I was able to have the confidence to then move forward with that.

And it seems to me that a lot of people lack the confidence. Like you’re saying, they’re timid with the keyboard. It doesn’t seem to be like necessarily a creativity blocker or something like that that’s the problem but more people don’t feel confident using something or taking apart something or building something they don’t understand. Like maybe it’s the aspect of failure. Like, “Oh, if I program it wrong and my program doesn’t run,” then maybe it’s the time cost fallacy or something. Like, “It wasn’t worth my time because it didn’t work,” or something like that. I don’t know.

PAMELA:  Mmhmm. Yeah, so that’s something that Khan Academy generally thinks about a lot. And we did launch this whole campaign earlier this year called the You Can Learn Anything Campaign. And it’s about growth mindset, which is something that’s being researched at Stanford actively and in other universities. But it’s just the idea that actually, that intelligence is not fixed. And your brain is a muscle. The more you use it and struggle, the more it grows. And the research actually shows if you tell people about the idea of growth mindset, just telling people about that idea will make them better learners.

So, we’ve actually done what we call growth mindset interventions. We’ve done this in the math area where we just put these little sayings at the top of the math skills like, “Oh, your brain is like a muscle. The more you use it the more it grows.” And just actually having those phrases improves how well they do on the math problems. It improves how much more learning they do. So, it’s definitely, yeah it’s a lot of attitude. And I haven’t done any growth mindset interventions on programming in particular. I think it would be cool. It is something we try to bring just generally to the curriculum, like reminding people, “Okay, this is hard. And you will struggle. But that’s okay. You just have to keep going with it.” But it’s interesting, because I think after the You Can Learn Anything Campaign, because we all internalize that at Khan Academy and so I think that’s part of why I’ve started trying to, I’ve finally started trying to learn things that I’ve been afraid of learning for my whole life. So, taxes.

JOE:  Like Minecraft?

PAMELA:  Yeah. So yeah, I should put Minecraft back in the list. I’m just going to go to a CoderDojo workshop do it with the middle-schoolers because they’re obviously experts. And that’s the other thing. Being okay with learning from, like teachers should learn from students. Students should learn from teachers. Not having such a binary, because everybody’s learning something at some point, right?

CHUCK:  So, one thing that I wanted to get into, harking back to adults and kids. The kids tend to really I think, and just watching my son, the creative stuff just, he gets into it. But with adults a lot of times, we forget how to play. Or we get into playing and it’s like, “Okay, well I’m going to make the ice cream cone blue. But what’s the point?” where maybe some of the other exercises, the math or actually building something that you can use to organize your kitchen was an example you put up. Do you find that adults tend to like different exercises than the kids? Or do they really dig the creative stuff like the kids?

PAMELA:  Mm, that’s a good question. I haven’t done… sometimes we look at the popularity of the projects by gender. I have not broken them down by age. One problem right now is that I just, I don’t have enough people who have both reported their age and are old enough to have grade stats there. But it would be a really interesting thing to look at. So yeah, I don’t know. But I use this curriculum for in-person workshops for adult women in San Francisco. And the projects they make are just, they’re amazing. They’re so good. So, I don’t have stats on that. But I’ve been very impressed by seeing projects from middle-schoolers, from high-schoolers, from adults. Maybe people just need the license to think that it’s okay for them to play around and be creative.

We do have more practical stuff now, because now we’re teaching HTML/CSS. So, it’ll be interesting to see what the age breakdown is like for people who decide to learn HTML/CSS or CSS/JavaScript, because our JavaScript is definitely a little more on the fun side. And HTML/CSS is one of those almost skills that almost everyone needs to know, at least in the tech industry. So, maybe we’ll see a skew there.

JOE:  So, that brings up an interesting thing. When I was at one of the Code.org events the CEO of Pluralsight got up and was talking. And he said something to the effect of, “We believe that coding is becoming a basic literacy that people must have in the future, like history, like math, et cetera.” What is your opinion or feeling about a statement like that?

PAMELA:  You know, coding literacy could mean so many things. I think that it does… I guess I have this vision where you can use programming to make your life better in a lot of ways. So, if you know how to program then maybe you can write a script to make your grocery shopping more efficient. So, if everybody did know how to program, you can imagine everybody writing these little apps to help their life. I don’t know if we’ll get to that point because it seems that you would have to, everyone would have to be a pretty good level of programming to be able to write these scripts, just enhance their everyday life.

I think more realistically actually, if I was going to pick I think actually people need skills with Google spreadsheets more, maybe more than programming. Because I think there’s a, spreadsheets are actually seen as almost a precursor to programming or a type of programming but with a more constrained input and output. And I think that they can be incredibly valuable for people in their everyday lives. So, for in terms of being part of something that you use every day… but I guess the other stuff is like, “Okay, what else do we need? What other aspects of coding could help us every day?”

So, understanding the news that comes out around security and that sort of stuff, so there it sounds like cryptography needs to be part of general literacy, right? And I’ve seen actually a lot of classes experimenting with teaching cryptography or cryptography-focused courses. And I know Stanford, their CS1 which is the non-majors one is actually focused around cryptography. And that makes a lot of sense to me given all the stuff around privacy and NSA and all that stuff going out. And that’s something where you might read an article on a daily or weekly basis where you actually think about your cryptography knowledge. So, that might even be more useful than coding.

But I think the other thing we’ll see is that coding has a lot of overlap with other fields. So, if you’re in any STEM field you should probably be learning coding because it’s going to help you process the data you’re interested in, do some research, that sort of thing. There’s a lot of ways that it could be something that’s really useful to a lot of different people.

JOE:  Right.

JAMISON:  I want to perform a smooth and total change of subject. I will snap my fingers. That was a smooth transition. [Chuckles] Do you feel like educating people about programming has changed the way you program?

PAMELA:  Hmm, okay. Has educating the way people program change how I program? It doesn’t change how I program but it means that when I’m programming I’m thinking to myself, “Huh. Is this something I haven’t taught yet?” So, when I’m refactoring something I think to myself, “Whoa. We actually taught refactoring. Do they even know of this concept of refactoring?” Because the thing is that I’m coding, so when I’m coding on our backend and stuff like that I’m coding [inaudible]…

JAMISON:  Yeah, I guess I was more talking about on your, not the code that you’re showing to students but your platform code maybe.

PAMELA:  Right. So there, I’m coding inside a big codebase. And when you’re coding inside a big codebase you’re coding with architecture and you’re coding to exist alongside all this other code. And you’re coding to be more, it’s very collaborative code because it has to be mixed with all these other people’s code.

So, what I think about more is just, have we taught people the skills they need to code inside a big codebase? And I think the answer right now is no, because currently people are writing their own programs. And yeah, then can spin off each other’s programs and they can learn from each other’s programs. But they’re not collaborating together on whole programs. Or if they are, they’re doing it using some mechanism they’ve made up. And I think that’s a really valuable skill, is figuring out how do you deal with code that gets big? And how do you deal with other people’s code and actually work off other people’s code? And how do you collaborate together? And that’s really valuable and something that most of us don’t even learn during college.

And a lot of us don’t learn that until we get into the industry. But I think we could learn that earlier. And I think that that is also a way of learning more social skills. Because I’ve recently decided that every time we teach programming we should also teach social skills, because I want to live in a world where programming is associated with high social skills [chuckles].

JAMISON:  [Laughs]

PAMELA:  Which is not really the case now.

[Chuckles]

JAMISON:  That is such a good idea.

CHUCK:  Well, it’s funny that you bring that up.

JAMISON:  Using your powers for good.

CHUCK:  Because the Ruby Rogues episode that we recorded this morning, we were talking about developer happiness. And sure, there were some things in there that were hard technology, code-related, like continuous integration, having tests on things and stuff like that. But the vast majority of the things that both Instructure and Living Social got out of the surveys that they gave to their developers on what made them happy where mostly their dealings with their coworkers and the social things in their workplace. And so, given a certain level of technical proficiency and the project going smoothly, your major issues are going to be the social issues.

PAMELA:  Mmhmm.

CHUCK:  And so, we can’t get away with being these antisocial or socially backward people. It just, it doesn’t work anymore. Nobody just goes off into a room and codes something, at least of any substance because we have these large systems. And so, I think your thinking there is spot on. We have to teach people how to work in a team.

PAMELA:  Which is okay, or maybe we build pair programming environments, because there’s a lot of different aspects of collaboration. So, we do have some of it now because we have a help request system so you can request help. So, people do have a lot of back and forth when they’re requesting help. We’ve got the peer evaluation system. So, people are learning from more advanced users, like getting tips about their code. I’d like to actually have more of a formal code review system. But we also really need to have more group projects, right, collaborative projects.

There’s a great idea from CodeUnion. They actually, they assign a project to their students. And then when their students are halfway through it, they swap the students’ code around and they don’t tell them they’re going to do it. So, they swap the students’ code around them and then make them work on another student’s code. And then swap it back at the end. And so, what their students learn from this is they get awareness of the fact that their code might be used by other people and become more self-conscious of their code and think more. When they’re writing code like, “Okay, this isn’t just for me. Somebody else might be seeing this.” So, that was really cool, this kind of swap-a-roo. So, I think there’s stuff like that that you can do to realize that coding isn’t just for you.

AJ:  See, I think I have the opposite problem. I always code thinking that somebody’s going to use my code one day, take forever to build it, and no one ever does.

PAMELA:  [Laughs]

JAMISON:  [Laughs]

PAMELA:  Well, you can dream. [Chuckles]

CHUCK:  It sounds like your problem isn’t a technology problem. It’s a marketing problem.

PAMELA:  But then you yourself will be using it later, right? So, five years from now you might look at it. And you’ll be happier if you even wrote it for your future self, right?

AJ:  Yeah, that’s true.

PAMELA:  So, generally it makes it better for your future self, too.

AJ:  That’s true. That is a completely different person, because I know the past self was.

PAMELA:  [Chuckles]

JOE:  So, I’d like to switch a little bit and talk about a subject that’s near and dear to my heart, which is the role of education of computer science in kids today. And I know we’ve talked a little bit about it. But comparison of what Khan Academy is doing versus, basically Khan Academy is in essence a form of non-traditional education, and comparison of that with traditional computer science education.

PAMELA:  Traditional computer science education, there’s not very much of it. So, there is the AP computer science. So, there’s AP CS1 which is Java and algorithms. But I think only 30,000 students took that exam last year. So, that’s not at a very big scale, right, compared to the number of students learning math every year. And the CS1 famously is not taken by a very diverse group of people at all. And it’s not a very engaging class. So, they are working on better AP classes.

So, there are two new AP classes that involve much more creativity and problem solving and group work and different aspects of computer science. And they have really great-looking curriculum. So, there are a lot of high schools that are experimenting with those new CS classes. And that’s the most standardized of the computer science education. There is a whole group called the CSTA which works on a K to 12 computer science education which is, what would it look like if you actually learn computer science your entire educational career? But there are very few schools that can actually afford to fit that inside their curriculum.

JOE:  Mmhmm.

PAMELA:  So, right now traditional CS curriculum is just, there’s so little of it that there’s much more, there are many more people learning it non-traditionally than traditionally, which is different than in the math area, right? So, that means that I tend to focus more on the non-traditional uses than the traditional, particularly for programming. There’s just so few traditional teaching of it. And I think that traditional teachers, some of them are doing some really cool creative things.

And if you’re a computer science teacher and you know how to code, it’s very likely that you might want to actually make your own projects and make your own demos because you have that ability. So, I focus more on the teachers that don’t know how to code yet but do want to introduce programming to their classroom. And they can use this resource, because there’s a lot more of those than there are of the teachers that do know coding.

JOE:  Mmhmm. So, where do you see Khan Academy and its role in traditional versus non-traditional? And I say this, it might be useful to give you some background. My daughter started coding last year. And then her high school has a really cool program where they actually, or her district has a cool program. They will bus the kids in the morning or in the afternoon out to a district, a common site from all the high schools all over the district. They get to take web development classes for two and a half hours and they bus them back to school.

PAMELA:  Mmhmm.

JOE:  And so, she was doing very well. And part of that was Khan Academy. That was actually part of the prep curriculum that was in that program.

PAMELA:  Awesome.

JOE:  Was to go through Khan Academy, yeah. Well, that prompted me to start looking at, well how can I help her move even faster? Because she loved what she was doing. She was enjoying it. And I wrote a series of blog articles about this that was highly controversial and got on the front page of Hacker News.

PAMELA:  Oh.

JOE:  Yeah, where I basically talked about the fact that I pulled her out of high school to send her to a web development bootcamp fulltime.

PAMELA:  Oh, right.

JOE:  And then she’ll go back to an online high school afterwards. But there are all of these new resources that are available out there for people to learn that aren’t in the way that we used to learn in typical schools, going to a class, going to a university. Meg considered bootcamps to be part of that, even though it’s a more traditional type environment. So, where do you see Khan Academy’s role and position and all of this sort of stuff?

PAMELA:  That’s a great question. I would hope that people would use the curriculum if it’s teaching what they’re looking to teach. I teach workshops in San Francisco but as soon as I can use Khan Academy curriculum for it, as soon as I ported that workshop to an online format, I use that instead. Because then students can go at their own pace. And that is something that we think is really important to learning, is being able to go at your own pace.

Because what we’ve seen is if I try and teach something traditionally, if I try and teach it in a way where I talk and then they work, and the thing is I do love talking. I just like getting at the front and you feel all cool because you’re at the front of the room and blah, blah, blah. But when you do it that way, everybody has to go at the same pace. And you can get away with that sometimes. But if you’re trying to teach six hours of JavaScript in one day and you’re doing it in the traditional way to a room full of people who have different backgrounds, at the end of the day some people will feel bored because you didn’t go fast enough. And other people will feel really, really frustrated and sad because they were really behind.

So, if I use the online curriculum then they can all go at a pace that’s better for them. And then they tend to be much happier at the end. Now, some of them might have to spend another 10 hours outside of the workshop working on it. And I just have to email them to remind them to keep it up. But there, everybody has just a much better experience because they’re not getting bored. They’re not getting frustrated. They’re going at the pace that’s best for them. I really think that the self-paced works really well for anything.

Now, the problem is how do you still get a feeling of the social learning and that sort of thing if everybody has headphones and are staring at their computer? So, we try to alternate. Like when we do the in-person workshops, we try to alternate between your self-paced learning time and then pairing time. So, you might learn at your own pace for two hours and then we’re going to put you in a pair and you’re going to work on whatever project is at the level that you’re at right now. And you’ll do that for 45 minutes. And that’s a chance to just explore something more and do something a little more freeform. And then you go back to this more structured learning. And that’s the format that we’ve come up with, because then you get to have the best of both worlds.

Because of what I’ve seen is when people do teach themselves, if you teach in a traditional way it’s easy to leave people behind. It’s easy to not go at the right pace. It’s also easy to mess up. Sometimes, I’ve taught the same things many times. Sometimes I teach it well. Sometimes I teach it shit because I just mess some critical thing up. And so, if I put it online then I just have to improve that online thing and I don’t have to worry about messing it up next time I teach it. So, I think that it’s a good thing for those bootcamps and schools to use self-paced curriculum that’s online and then figure out how they can add more group and pairing stuff to that curriculum.

CHUCK:  Awesome. We invited another guest onto the show. Dave’s daughter has been working through, is it Khan Academy or Coursera that she’s been working through?

DAVE:  Khan Academy.

CHUCK:  And so, we thought it’d be interesting to have her come on and talk about her experience with it, especially since she’s in that demographic that you’re talking about with the early teenagers.

PAMELA:  Awesome.

DAVE:  Alright. So, we’ve invited Molly.

MOLLY:  Hi.

DAVE:  Say hello, Molly.

MOLLY:  Hello.

DAVE:  Would you like to introduce yourself?

PAMELA:  [Chuckles]

MOLLY:  Hi. I’m Molly Smith. And coding is awesome.

[Laughter]

DAVE:  How old are you, Molly?

MOLLY:  I’m 12 and a half.

DAVE:  Nice.

MOLLY:  Oh, actually no. it’s more than a half. I’ll be 13 in April.

DAVE:  Nice.

MOLLY:  So, a little more than a half.

JAMISON:  Did you know that before you asked, Dave?

[Laughter]

JOE:  I have the same question.

DAVE:  So, tell us about your experience with Khan Academy. What have you done with it?

MOLLY:  Mom got me started on Khan Academy because of the math. Because I was doing Saxon, just the Saxon Math books, but I didn’t enjoy that very much. Saxon is just really boring for me.

[Chuckles]

MOLLY:  So, I started doing that and it was fun. And I really like how it’s interactive with the person. It’s not just like, “Okay, do this, do this, do this, do this, do this, do this,” because that’s just really boring.

DAVE:  Mmhmm.

MOLLY:  It’s like telling you how to do it and then there’s a ton of videos. The videos are really helpful. So yeah, and then I was doing the math and I don’t even remember exactly how. But I found the coding section. I’m like, “Hey, my dad does this.”

DAVE:  [Laughs]

MOLLY:  I could [inaudible] that. And so, it turned out being really fun.

DAVE:  How long ago was that, that you got started in the programming?

MOLLY:  I don’t even know. It’s been a while.

DAVE:  About a year, maybe?

MOLLY:  Maybe, yeah.

DAVE:  Yeah.

PAMELA:  Which one or what tutorial are you on now? Or did you get through all of it?

MOLLY:  I’m not even close.

[Chuckles]

MOLLY:  I’m not sure. I was like, I know I’m past the arrays section. I’m still in the beginning part because I have a lot of other stuff. So sometimes, I have to pause and do other stuff. So, I don’t get a ton of time left.

DAVE:  Yeah.

PAMELA:  Mmhmm.

JOE:  So, what about coding do you like, Molly?

MOLLY:  Well, there are a lot of reasons. I think it’s cool how just a bunch of seemingly random numbers, letters, and words can create something like that.

[Chuckles]

JOE:  You have no idea.

[Laughter]

MOLLY:  And it’s so weird. It’s like you can type things into a computer and make a car move.

PAMELA:  [Chuckles]

MOLLY:  Like real cars, not just little cars.

DAVE:  Oh yeah.

MOLLY:  But it’s so cool, because you can just, it’s like it’s not even technically real. It’s just there in cyberspace. But then it actually affects the physical world. So, that’s really cool.

JOE:  So, we talked before about creativity and the difference between being able to do some programming that was creative and doing some programming that’s just to solve a problem because it says, “Now with programming, make this happen,” and you just have to type in this one line. Have you found with Khan Academy the opportunity to be creative and actually gone in and done something that it wasn’t necessarily asking you to do?

MOLLY:  Yeah, I think I have. I did something with my dad where we made a little program. And it wasn’t a super complicated program. It was a pretty simple one. And we would, like I would type in just a little bit and do something. And then I would email the link to my dad and he would [inaudible] a little bit. And then I would have to find what he’d changed and then make another change. And we sent it back and forth six or seven times.

DAVE:  It was fun, Mol.

PAMELA:  That’s awesome.

JOE:  That’s cool.

MOLLY:  Yeah. He hid things sometimes. Like when you press on the, what was it, with the cloud?

DAVE:  We had a little treasure chest fixture with a key in it. And you had to open the treasure chest and get the key. And then you could click on a castle door and the door would open.

MOLLY:  Yeah.

DAVE:  But if you didn’t click on the key, the door wouldn’t open.

MOLLY:  Yeah. And then you had that thing where if you clicked on the…

DAVE:  Oh.

MOLLY:  Like there was like a cloud. And then when you clicked on it there was little ball that would just go woo!

DAVE:  A ball would fly across.

PAMELA:  [Laughs]

DAVE:  [Chuckles]

MOLLY:  That was [fun].

DAVE:  Yeah, that fun. It’s like iterative Easter egg.

[Chuckles]

JOE:  Awesome.

DAVE:  Do you have any questions for Pamela? I bet you never thought you’d get to talk to Pamela.

[Laughter]

MOLLY:  No.

DAVE:  [Chuckles] Have you taken some of the courses from Pamela? Have you seen her videos and heard her voice on Khan Academy?

MOLLY:  I’m pretty sure I have, because I recognize her voice. But I forgot how to check who did what video, so I don’t know which videos.

PAMELA:  Yeah. Yeah, you’ve heard a bunch of me because it’s Jessica and Sophia do the first two tutorials and then I pretty much do the rest.

MOLLY:  Yeah, so I’ve probably heard a lot of that.

PAMELA:  Mmhmm.

DAVE:  Do you have any questions for Pamela?

MOLLY:  A couple. Like, do you really enjoy doing things like that?

PAMELA:  [Chuckles]

MOLLY:  Like coding [inaudible] and making videos so you can teach other people how?

PAMELA:  Yeah. I love that. I think that is really, really fun. And so, the really fun part about Khan Academy is seeing the questions that people ask about things. Because one of the things is that I’ve been programming for a really, really long time. And so, I forget what it’s like to not be a programmer. And I forget the things that I know that I don’t realize other people know. So, I’ll put out one of those videos. And then I love seeing the questions that come in, because I’d be like, “Oh wow. I completely forgot that that’s something that people don’t know, because it’s so in my head.” So, I just love learning about what people are learning and trying to understand better what it is like to be new to that.

MOLLY:  That’s awesome.

DAVE:  Do you guys have any other questions for Molly, like what it’s like to have such a weird dad?

[Laughter]

PAMELA:  Well, so you’re 12. So, do you have to think about your career yet? I don’t remember what age they make American students start thinking about career yet. I don’t really like to pressure people. But I guess I get curious, because when I was a kid I wanted to be an ice cream man, which had several flaws in it.

DAVE:  Nice.

[Laughter]

PAMELA:  But do you, have you started thinking about what you want to do when you’re older professionally, that sort of thing?

MOLLY:  I’m not sure. I’m pretty sure that I would consider coding as a job, because it’s really fun and I would definitely [inaudible] it.

DAVE:  Anything else? I know some things you’d like to do.

PAMELA:  [Chuckles]

DAVE:  [Inaudible]

MOLLY:  I want to be a mom.

DAVE:  Oh, you do? Okay.

PAMELA:  Mm. That’s actually pretty compatible with coding, because I’m pretty sure the baby bump is perfectly set for a laptop to go on top of.

[Laughter]

JOE:  You know, that’s a funny joke. But I met a girl at one of the conferences and she was just finishing up her CS degree. And I was chatting with her and she was saying how she specifically chose it because she wanted to be a mom and wanted to be able to have a career that she could pursue while being a mom.

PAMELA:  Mmhmm. Yeah, I think being a mom and being a dad, right? It maybe depends on the company, but at Khan Academy we’re very amenable to people taking their time off when they have their kids or bringing their kids to, well there are a lot of kids that show up on our virtual meetings, you see little babies in the windows, and working remotely when necessary.

JOE:  Right. But it’s also very possible to work part-time, make really good money as a programmer, right? And so, you could still have your fulltime job as being a parent and then have a part-time job as being a coder.

MOLLY:  Yeah. My dad said that almost everyone needs someone who can do something with a computer at one [inaudible].

PAMELA:  Yes.

CHUCK:  Mmhmm.

DAVE:  Yeah.

MOLLY:  It’s a very on demand or something.

PAMELA:  Yeah.

DAVE:  It’s very in demand right now.

PAMELA:  Yeah. I think in the future we’ll have personal programmers.

DAVE:  [Laughs]

PAMELA:  Like rich people. Don’t you think so?

JOE:  [Laughs]

PAMELA:  Because I could be like a rock star’s personal programmer. And every day he wakes up or she wakes up and says, “I need an app to help me do this,” and I’m like, “Okay, yes.” I think it’d be cool.

DAVE:  Brings a whole new meaning to the phrase personal digital assistant.

PAMELA:  Yeah.

[Laughter]

PAMELA:  I mean, if you’re going to be a personal assistant you might as well do something fun.

JOE:  Yeah.

CHUCK:  Yeah. The other option too is, and I always press this agenda a little bit, is freelancing. And then you can work when you can. And if you are a mom and you can’t put in more than a couple of hours a day then you just find clients that will work with you that way.

DAVE:  Molly also really enjoys art and drawing. And one of the things she’s liked about Khan Academy is how easy it is to get visual, I think.

PAMELA:  Mmhmm.

DAVE:  So your programming is not just text input, text output. It’s like pictures and shapes. And in fact, some of the very first challenges are arrange these shapes into a picture, like a smiley face, right? If I remember right.

MOLLY:  I think so.

PAMELA:  Yeah, Winston.

DAVE:  Winston, yeah.

PAMELA:  Winston.

DAVE:  [Chuckles]

MOLLY:  Winston.

PAMELA:  Yeah. I love art as well. I think I had two art classes a day in high school. But of course, my parents are both computer scientists and they were very well aware that art does not usually result in great career. My older brother did actually go to three art schools over his time.

DAVE:  Wow.

PAMELA:  And it has not worked out for him as a career. So, I went the computer science route, because I realized with computer science I could combine it.

DAVE:  Yeah.

PAMELA:  With these other things, like combine it with art. So, I actually did a computer graphics minor, well 3D animation minor in college. And then a computer graphics emphasis in masters, because that was the combination of art and computer science that I saw, which was fine. But I realized actually that that’s a lot of math. Computer graphics, 3D graphics is a ton of math, which I’m not as into. What I realized later is that what I would have actually been really into is human computer interaction. So, I highly recommend that if you are drawn to visual things and to coding, that you look into design and human computer interaction, because that is a really cool overlap of those two areas and something that I wish I’d actually done and studied.

MOLLY:  Okay.

JOE:  Absolutely. It’s beginning to be so important to have one, good interactions, and two, good visuals.

PAMELA:  Mmhmm.

JOE:  I really miss the days when console apps were very acceptable.

[Chuckles]

PAMELA:  Yeah.

JAMISON:  Those are gone.

PAMELA:  But now everybody needs a designer. Every product needs design and needs experience, because it’s really hard to come up with a great experience.

JOE:  Mmhmm.

DAVE:  Molly, before we close, do you have any suggestions for Pamela and Khan Academy?

MOLLY:  I pretty much just enjoy all of it.

DAVE:  [Chuckles]

PAMELA:  Yes!

[Laughter]

DAVE:  You get Pamela air pumping. Yeah!

PAMELA:  Yup.

[Chuckles]

MOLLY:  Maybe just make the videos a little bit longer.

PAMELA:  Longer?

MOLLY:  I don’t know.

PAMELA:  Mm, interesting. Yeah, I try to keep them under five minutes. If they’re longer than five minutes I was like, “Oh, I went so long on that one.”

[Chuckles]

PAMELA:  But I think that I could go up to 10 minutes without, according to research 10 minutes is the point at which people just…

MOLLY:  Stop watching?

PAMELA:  Stop paying attention, yeah.

DAVE:  [Chuckles]

PAMELA:  So, I could probably go up to 10 minutes.

MOLLY:  Okay. Because yeah, just sometimes I’m like, “Oh, I didn’t quite understand that all the way.”

DAVE:  You could always watch the video twice and have your own 10 minutes.

PAMELA:  [Laughs]

DAVE:  [Chuckles]

MOLLY:  Yeah, usually if I need help I can just ask my dad, because he knows about all that stuff.

PAMELA:  Yeah. One of the things I want to do is have a community wiki under every video, because what I’ve noticed is under a lot of videos there’s a top five common questions. And I would love to just have there be a community wiki that answers those questions that you could just consult afterwards.

MOLLY:  Yeah.

CHUCK:  Yeah, it’s like having your own personal Pamela in your pocket, right?

[Laughter]

DAVE:  Alright. Well, thanks for coming in, Molly.

MOLLY:  You’re welcome.

[Laughter]

PAMELA:  Thank you.

JAMISON:  Tell your dad that you don’t want to do chores.

[Laughter]

JAMISON:  Because you came on his podcast.

DAVE:  She already tells me that every day.

[Chuckles]

DAVE:  Molly’s very good at [inaudible] chores.

JOE:  Maybe you should assign her some programming chores.

DAVE:  Yeah.

PAMELA:  Yeah. She can be your personal assistant programmer.

JOE:  Yeah.

CHUCK:  There you go.

DAVE:  So, I could outsource some of my work.

PAMELA:  [Chuckles]

MOLLY:  The problem is I can’t understand everything. Actually no, I can understand barely anything.

[Chuckles]

JOE:  You want to be careful, Dave. If the quality of your work goes up a whole bunch, you’re going to have some problems.

DAVE:  [Laughs] She’ll set too high of a bar for me.

JOE:  Exactly.

DAVE:  Alright. Well, thanks Molly.

CHUCK:  Alright. Well, let’s go ahead and head into the picks. Joe, do you want to start us off with picks?

JOE:  Sure, you bet. So, my first pick is going to be bootcamps in general, and non-traditional learning. As I mentioned before, I’ve got some experience lately with those. And I just think they’re just such an awesome way to learn to program. And I know there is tons of value with going and getting a computer science degree, absolutely is. But I just love the fact that we’ve as an industry solved the problem that we need more programmers. And in three months people can learn to program very effectively. So, I’m going to pick bootcamps.

I also want to pick, a little bit self-serving but I mentioned this, the blogpost I wrote about my daughter, pulling her out of high school and sending her to bootcamp to learn development. And I just thought it was, it’s been interesting writing it. And I plan to write a lot more installments in the series. And also, it got a whole bunch of really interesting feedback on Hacker News.

CHUCK:  You always get interesting feedback on Hacker News. [Chuckles]

JOE:  [Laughs] Well, what’s funny is this is the first time I’ve ever been on the first page of Hacker News. So, it was actually cool for me even though being controversial, the only people that really care to comment are those that are outraged.

CHUCK:  Oh, of course.

JOE:  Because I’m ruining my daughter’s life or something. But it was still a lot of interesting, and a lot of passion from people that have their opinions on both sides of the fence as to whether or not a kid should be pulled, should be allowed to say, “I want to do more than just what the traditional learning path is,” at 16. So, I’ll put the links to that. It’s on my personal blog. I’ll put the link to that in the show notes.

And then my last pick is going to be something very related to the episode and that is at ng-conf we’re going to be doing a Kid’s track for 50 kids that can come. And the entire length of the conference we’re having, it’s a national company named Zaniac. They have a local branch here in Utah. And they do an after school program for kids in computer science and robotics and teach them how to do Minecraft mods and all kinds of stuff. So, for two days the kids are going to be able to come to ng-conf and have their own class where they’re learning how to program for all day long every day for two days, which I think is…

CHUCK:  Do you have to take them out of school?

JOE:  Yeah, of course. This is during March. So, it’d be Thursday and Friday so kids would have to be taken out of school. It’s for the attendees’ kids to show up, go with their parents to a conference but get to do their own thing, but not just be babysat, you know? So, I’m really excited to be part of that.

DAVE:  Cool.

CHUCK:  What age range are you looking at?

JOE:  They can handle K through 8th grade.

CHUCK:  Oh, wow.

JOE:  Yeah, so quite the range.

CHUCK:  Hmm. I’m tempted.

PAMELA:  Are they going to learn Angular?

JOE:  They’re not going to learn Angular.

JAMISON:  [Laughs]

JOE:  We wish that we could make that happen, but that’s not really feasible based on existing curriculum.

PAMELA:  Mm, yeah, we taught…

JAMISON:  So, it’ll be React instead, right?

PAMELA:  Oh.

JOE:  [Laughs] No, they’re…

PAMELA:  Yeah, we taught Angular last weekend for Girl Develop It. In the back of my head I’m thinking, “Hmm. I wonder if I’ll ever teach this on Khan Academy.” It could happen.

JOE:  Yeah. So, that’s it. Those are my picks.

CHUCK:  Very nice. Jamison, what are your picks?

JAMISON:  I have two picks. The first one is a blogpost called ‘Slow Bugs’. For some reason I just really like those blogposts about debugging war stories. I feel like debugging is a skill that I wish I was better at and I hope that I can improve by reading other people’s techniques. And this one talks about bugs that occur very irregularly. And it takes a long time for them to appear. And how you can use stats to determine, “Okay, if it shows up every eight hours and I think I fixed it and I haven’t seen it in 16 hours. How sure and I that I actually fixed it?” Just a cool approach to applying statistics to a specific kind of bug.

And my second pick, one of my favorite bands ever is called Purity Ring. And they have a new album coming out soon. And they just released the first song from the album. So, that’s my pick.

CHUCK:  Awesome. Dave, what are your picks?

DAVE:  Hey, I have two picks for you today. One is a handy little command line utility called pgcli. That’s Postgres Command Line Interface. And it’s this nifty little command line interface that’s like psql but it has syntax coloring and autocomplete and all kinds of cool stuff. So, it’s a cool little thing. It’s written in Python. So, if you’ve already got Python installed you just pip install it and you’re off to the races. It’s pretty nifty.

The other one is a gift I received from my mother-in-law for Christmas. She knows that I like computers. And so, she sent me a Reader’s Digest copyright 2000 ‘How to Do Just About Anything on a Computer’ book with gems like how to use a mouse and using the internet.

[Laughter]

DAVE:  It has just been life-changing.

JAMISON:  That’s awesome.

JOE:  That sounds awesome.

DAVE:  It even comes with a CD ROM.

JOE:  Wow.

DAVE:  That I think, I don’t actually know what to do with it. But I’m sure if I read the book, it’ll teach me. So, this has been life-changing. Nice coffee table sized book, ‘How to Do Just About Anything on a Computer’.

JAMISON:  You should put it on your coffee table.

JOE:  Yeah, totally should.

CHUCK:  Alright. AJ, do you have some picks for us?

AJ:  First off, the last week I spend writing a blog platform because one, there obviously aren’t enough of them. And two, there seriously aren’t enough of them that run in the browser.

[Chuckles]

AJ:  So, I created the best blog platform that there ever is and ever will be that’s just JavaScript and hardly needs a server at all except just for touching files to make them exist. And so, I’d invite anyone to try that out. See what you think. I’ve called it Desirae. And the website is dear.desi. And that will be up by the time we actually have the show live, because I’m almost done with it.

And another pick that isn’t so self-serving is The Stanley Parable. It’s a game that a friend of mine was playing. And I have to read the description of it because if you know anything about the game, you have to go into the game not knowing what it’s about. So, the description you need to know is “The Stanley Parable is an exploration of story, games, and choice. Except the story doesn’t matter. It might not even be a game.”

[Laughter]

AJ:  “And if you ever actually have a choice, well let me know what you did.”

CHUCK:  Okay.

DAVE:  Is that a knowing laugh that I’m hearing [inaudible]?

JOE:  I’ve heard it’s awesome.

AJ:  It’s a game that you should play with someone behind your shoulder. This is not like I’m going to go into my dark room and play it by myself. This is like one of those games where two people that have no idea what’s going on stare at the screen and laugh about it.

[Chuckles]

AJ:  And then the last thing that I’ll pick is the Web Crypto API, because finally we can do SHA-1 sums in the browser, just not on UTF8 data. Actually that should, Mozilla has got some code I haven’t tried yet. But you can do SHA1 sums on binary data and you can do it on ASCII strings. But if you try to do it on utf8/Unicode, it goes all to crap because JavaScript still doesn’t have a native way in the browser to convert between utf8 and binary. But it’s kind of cool. Unfortunately they didn’t do md5 sum on purpose. So, you still can’t create Gravatars in the browser without some big, huge library. But, heh.

CHUCK:  Alright. I’ve got a pick here and it is called A Dark Room. And it is, they have an HTML5 version of the game and then they also have the iPhone version of the game. And it’s a text adventure game. The interface is pretty simplistic, not pretty. But it’s been fun and somewhat addictive. So, I’m going to pick that game.

Pamela, do you have some picks?

PAMELA:  Yes. Let’s do some picks. So, we have some self-serving ones, right?

CHUCK:  Go ahead.

PAMLEA:  So, [laughs] the first one will be Let It Code. I’m sure some of you are familiar with the song Let It Go.

[Laughter]

PAMELA:  If you’re a parent, I’m sure you love it. So, one of the things we like to do at Khan Academy is have little coding contests and collaborations. So somebody, a student at Khan Academy, wrote Let It Code, which is parody lyrics to Let It Go. And then everybody picked different lines and wrote a program animating those lines and telling the story in those lines. Oh, and then I convinced my colleagues to sing this Let It Code. I dragged them into Sal’s office and recorded it. And they had to learn it on the spot. And then I spent a weekend montaging it all together. So, we now have a music video for Let It Code which has all these animations from different students for different parts of it. And I think it’s awesome. And I think everybody should make collaborative coded music videos. So, that’ll be one pick.

And then just as a book recommendation, everybody on our team just read the book called ‘Mindstorms: Children, Computers, and Powerful Ideas’. It was written in 1993 so it’s old but still really relevant. It’s about the people that created Logo or turtle graphics, you might know it as. And it’s a lot about learning theory and what does learning mean in the digital age? And is learning getting worse or better, or how can learning be enhanced by the digital age? And definitely recommended if you have kids and thinking about them and coding. And so, that’s a really great book. And we all just spent last week reading it. So, those are my picks.

CHUCK:  Awesome. Thanks again for coming. It was a lot of fun to talk about. And there’s a lot here for me to think about and unpack.

JAMISON:  Yeah, this has been fascinating.

DAVE:  Totally.

PAMELA:  Awesome. Thank you for inviting me.

CHUCK:  If people want to find out more about you or Khan Academy, how do they do that?

PAMELA:  You can google me. I’m highly google-able. If you search for Pamela Fox you’ll find my website and there’s a contact link on the front page. And it links to everything and my website is covered in glitter. Thank you to a recent pull request.

JAMISON:  [Laughs]

PAMELA:  So, I think you’ll enjoy it.

CHUCK:  Very cool.

DAVE:  Glitter.

PAMELA:  [Laughs] Yeah. Well, because my website was bright neon green to the point where I actually got an issue file that it was too green and it was hurting people’s heads.

DAVE:  [Laughs]

PAMELA:  So, I was like, “Alright, fine. The first pull request that changes the background that changes to glitter will win.” And so, that happened.

CHUCK:  But you regret that now.

PAMELA:  [Chuckles] No way. [Chuckles]

DAVE:  I bet not. This is beautiful.

PAMELA:  Did you just see the website Send Glitter to your Enemies.com?

JAMISON:  I did see that.

PAMELA:  I don’t understand that, because I would love it somebody sent me glitter. I could add it to my glitter station at home.

JAMISON:  You should make a competing site, Send Glitter to your Friends.

PAMELA:  That’s true. I’m going to make so much money. [Laughs] And that’s why coding is great.

[Chuckles]

CHUCK:  Alright.

DAVE:  We send glitter to the people you hate. [Laughs]

PAMELA:  [Laughs]

DAVE:  What the heck?

PAMELA:  [Laughs] Yeah. You know, that’s weird.

[Chuckles]

DAVE:  Alright. Is that a wrap?

CHUCK:  I think so.

[Have you noticed that a lot of developers always land the job they interview for? Are you worried that someone else just landed your dream job? John Sonmez can show you how to do this with the course ‘How to Market Yourself as a Software Developer’. Go to DevCareerBoost.com and sign up using the code JJABBER to get $100 off.]

[This episode is sponsored by MadGlory. You’ve been building software for a long time and sometimes it’s get a little overwhelming. Work piles up, hiring sucks, and it’s hard to get projects out the door. Check out MadGlory. They’re a small shop with experience shipping big products. They’re smart, dedicated, will augment your team and work as hard as you do. Find them online at MadGlory.com or on Twitter at MadGlory.]

[Hosting and bandwidth provided by the Blue Box Group. Check them out at Bluebox.net.] 

[Bandwidth for this segment is provided by CacheFly, the world’s fastest CDN. Deliver your content fast with CacheFly. Visit CacheFly.com to learn more.]

[Do you wish you could be part of the discussion on JavaScript Jabber? Do you have a burning question for one of our guests? Now you can join the action at our membership forum. You can sign up at JavaScriptJabber.com/jabber and there you can join discussions with the regular panelists and our guests.]

x