JOE:
I listen to every episode that we do. And I just am so amazed by the work that I do. Sometimes I get excited to meet myself
[Laughter]
[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 $1,000 bonus as a thank you for using them. But if you use the JavaScript Jabber link, you’ll get a $2,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.]
[Let's face it. Bookkeeping is hard and it's not really what you're good at anyway. Bench.co is the online bookkeeping service that pairs you with a team of dedicated bookkeepers who use simple, elegant software to do your bookkeeping for you. Check it out and get your free trial today at Bench.co/JavaScriptJabber for 20% off today. They focus on what matters most and that's why they're there. Once again that's Bench.co/JavaScriptJabber.]
[This episode is sponsored by DigitalOcean. DigitalOcean is the provider I use to host all of my creations. All the shows are hosted there along with any other projects I come up with. Their user interface is simple and easy to use. Their support is excellent and their VPS’s are backed on Solid State Drives and are fast and responsive. Check them out at DigitalOcean.com. If you use the code JavaScriptJabber you’ll get a $10 credit.]
CHUCK:
Hey everybody and welcome to episode 204 of the JavaScript Jabber Show. This week on our panel we have Aimee Knight.
AIMEE:
Hello.
CHUCK:
AJ O'Neal.
AJ:
Yo, yo, yo, coming at you from sunny Pleasant Grove.
CHUCK:
It's so funny you do that, AJ. I've gotten a couple of emails now from listeners that start their email with 'Yo, yo, yo'.
[Laughter]
AJ:
That's how I start my text messages, my conversation with women at bars. [Laughter]
CHUCK:
We also have Joe Eames.
JOE:
Hey everybody. AJ, I want to know. Normally you say “coming at you live.” Today you didn't say that. Are you not live today? Are you prerecorded?
AIMEE:
[Laughs]
AJ:
Joe!
CHUCK:
He's mostly live.
AJ:
Ah, you caught me. Ah.
JOE:
[Laughs]
AJ:
Coming at you live. 'Dur'. [Laughter]
CHUCK:
I'm Charles Max Wood from DevChat.tv. Quick shout-out. Go check out React Remote Conf coming up in May. We also have a special guest this week and that's Quincy Larson.
QUINCY:
Hey everyone.
CHUCK:
Do you want to introduce yourself?
QUINCY:
Sure. I'm Quincy Larson. I'm a teacher at Free Code Camp.
CHUCK:
Cool. We brought you in to talk about Free Code Camp. Do you want to give us a quick idea of what it is, what it's about?
QUINCY:
Sure. Free Code Camp is an open source community that helps you learn to code and practice by building projects for non-profits.
CHUCK:
Well, that's interesting. So, why make a code camp free? It seems like there's a lot of value there. It seems like there are a lot of people out there who would pay for something like this. And they would be happy with the value they got from it. So, why free?
QUINCY:
Sure. So, education can be free. I believe education should be free. And the marginal cost of teaching the hundred thousand and [first] learner is, asymptotically approaches zero in terms of additional marginal cost. So, if you can get over the initial hurdle of getting your content together, getting a scalable infrastructure, you can actually teach many, many learners with an additional marginal cost that rapidly approaches zero. So, if the marginal cost is rapidly approaching zero, then you don't necessarily need to charge anything. And that's I think how a lot of new resources like massive open online courses like Coursera and edX and Khan Academy and a lot of other resources are approaching the problem of teaching learners around the world without being sensitive to socioeconomic status and ability to pay.
AIMEE:
I'm kind of curious about your background and how you got into programming in order to actually do this. I'm assuming you helped build Free Code Camp.
QUINCY:
Yeah. So, about four years ago I was working as a school director. And I had basically over the course of the last few years just learned a little bit more technology and become kind of a superuser of technology to the point that I was able to automate various processes within my school using Excel, macros, and using different tools to basically automate workflows, immigration workflows, grading workflows, and things like that. And that freed up my teaching staff and my admin staff to be able to spend more time actually talking to students and less time staring at their screens trying to get work done.
So, as a natural extension to that I started thinking, “Wow, I could actually build software that makes administering a school much more efficient.” So, I decided at the time to go ahead and leave my job completely and just go heads down and focus on coding. And during that long process I realized that it wasn't just the need to automate a school but the actual process of learning how to code was quite riddled with sidetracks and potential rabbit holes you could go down that could distract you from just a clear path to being able to code well enough to work in a developer capacity.
So, that's how I got started. I basically sat down, just banged my head and read a bunch of books, worked through a lot of massive open online courses, and over time gradually built up the confidence and the competence that I needed to be able to get a software engineering job. And then from there I started to think about how that process could be optimized. And that ultimately lead to Free Code Camp many years later.
CHUCK:
So, your approach is a little bit different I think from most other code camps or code bootcamps or whatever in the sense that you tend to have people work on non-profit websites and then actually go out and get a job after that.
QUINCY:
Right. So, we have a very rigorous curriculum. If you include the nonprofit projects which are the last 800 hours of the curriculum, then it's about a full working years’ worth of learning. It's about 2,080 hours. So, the first 400 hours of our curriculum is dedicated to learning frontend development and learning basic JavaScript and algorithms and data structures. And during that you build 10 frontend projects using CodePen. Then there's a 400 hour data visualization certification. And that involves using D3.js, React, Sass, and a lot of other [inaudible] tools to build even more sophisticated frontend tools that do data visualization. And then you would move into the backend and we have a backend certification where you will build APIs and dynamic web applications.
And after you've done that 1200 hours and you have those three certifications then we let you work on the nonprofit projects. And after you do two greenfield projects where you're just writing code from scratch and two legacy projects where you are taking a project that another set of campers previously built, then modifying it and extending it for the nonprofit stakeholders' need, then you can move onto actually getting the full-stack development certification. And at that point you'll be pretty well set to go out and get a job.
CHUCK:
So, people work through the curriculum. How long does that usually take?
QUINCY:
So, no one's actually finished the curriculum at this point, because people get a job before they do. The farthest anyone's gotten is they've completed one of your greenfield nonprofit projects. And if they were to actually work through it, it's all completely self-paced. So, you could in theory crunch on it 80 hours a week and get through it in six months. More realistically I think most people are going to take a year or two to get through it.
CHUCK:
So, they just work through that, work on the other projects, until they either finish it or get a job?
QUINCY:
Yeah, exactly. And along the way you're building a lot of projects. So, you've got this portfolio filled with various projects you'd built. For example, you'd build like a rogue-like RPG game using React. Or you would build a JavaScript calculator. You'd build an implementation of Simon, the old 70s game where you, basically it's a pattern memory game. So, you'll build these various different projects and you'll have a portfolio along the way. And what seems to happen is campers are able to get a job or an internship even partially through. And then they'll just come back and gradually continue to work on it after they've gotten their job.
AIMEE:
So, another question I have. If you built all this a while back, what are you doing to keep the curriculum updated?
QUINCY:
So, everything is completely open source. And we have hundreds of contributors that are basically going in and making incremental improvements to our curriculum. So, we're adding a lot of new challenges. We're expanding the challenges we currently have and improving them. So, it's just a gradual tinkering toward a good curriculum that is never going to be finished per se because new technologies are released, new approaches become considered best practices, and things like that. And we want to continue to incorporate those.
AIMEE:
That makes sense. How many people do you think are doing this a month?
QUINCY:
Right now we have about…
AIMEE:
How many… Or like how many people do you funnel in? Like do people go in cohorts, or they just obviously probably go at their own pace? Or how does that work?
QUINCY:
So, Free Code Camp is completely self-paced. We don't have any sort of cohorting. People just show up and start working through it. And we have about 200,000 people that work through it on a given month.
AIMEE:
I'm kind of curious too, if you have any way to track the numbers. How many people start versus how many people maybe make it six months? How many people make it a year? How soon do people drop off?
QUINCY:
We do. What we find is generally people will often come in with an initial burst of enthusiasm. And life will get in the way. But they generally do come back.
AIMEE:
That's awesome.
QUINCY:
So, [what] we've observed so far is a lot of our campers, that's what we call our students, will start working through. And maybe they'll hit like a wall because Free Code Camp's quite difficult. We don't try to hold your hand beyond a certain point. We want to make sure you don't get really frustrated when you're learning basic HTML, basic JavaScript, and things like that. But we quickly throw you into the projects and make sure that you learn how to apply yourself in terms of looking things up on the internet, asking for help. And we have a whole lot of real-time chat rooms where you can ask for help on various things and people are just hanging out in there that can help you out.
And basically you're going to have to believe in yourself and actually build things. And that intimidates a lot of people. So, maybe it'll take them coming back several times before they actually have the follow through and the courage to push through and actually create that project and submit it. So, I would say probably about 90% of people get kind of spooked and leave for a while.
And then a lot of those people come back.
AIMEE:
So, you mentioned you have groups that people can discuss stuff together. So, what resources are there when people have questions? Are they just talking amongst themselves or do you have volunteers who are more advanced developers or people maybe that are just further along in Free Code Camp helping out newer people? How does that work?
QUINCY:
Great question. We have a very active community on a platform called Gitter, which is basically like an open implementation of Slack. It's for open source communities. And we have about 50,000 people that are actively going into those chat rooms regularly and talking to one another. And a lot of them who have completed a series of challenges, there'll be a chat room specific to a series of challenges. They'll hang out in there maybe after they've finished it and help other people. Everything is very fluid in the sense that we don't have predefined mentors per se. It's peer learning, which is kind of an experimental new approach to teaching where essentially the student is simultaneously kind of a teacher to others and they're also a student. And by discussing things people organically improve.
AIMEE:
So, I definitely agree with that. I started a little while, or like a year or so ago, a meetup on Saturday mornings for newer programmers to just work through problems together. And because what I saw when I did my bootcamp was that was really, really helpful. We had the teacher that we could go to if there were two juniors working on a problem together and they couldn't figure it out. But there were some criticism from people who would say that's really silly just to get together. You have the blind leading the blind. How could you get anything done? [Chuckles] So, what are your thoughts on that? Do you have anything to say to people who might think that?
QUINCY:
Sure. Well, it certainly works. It's working for hundreds of our campers who've gotten through our program to some extent and then gone out and gotten a software engineering job. So, it is working. It may not work for you personally if you're the kind of person who learns better in an environment where you have somebody who is a definitive authority on something, like a kind of teacher/student relationship. But if you're the kind of person who understands and believes that there's not necessarily a definitive expert for everything out there who is readily accessible, if you can believe that the person you're interacting with has a reasonable working understanding of something and that by talking about it and by referencing resources like Stack Overflow for example you're going to get a good enough understanding to be able to move forward with whatever project you're working on, this can work really well for you.
The practical reality if you look at it from an economics perspective is there are only so many skilled software engineers out there, far fewer of them are experienced teachers. If those people were infinitely free or if we could figure out a way to essentially recreate them in software form where you had kind of like an AI coach that would coach you through things, then everybody could learn that way. But the practical reality is those people are in high demand and they don't have time at the end of the day usually to come and mentor a bunch of people, certainly not hundreds of thousands of people.
CHUCK:
So, it seems like everybody involved here are volunteers?
QUINCY:
That's correct. We're a completely volunteer-driven organization.
CHUCK:
So, who pays for things like the website and the Gitter channel and whatever else you're using that you have to pay for?
QUINCY:
Virtually everything we use is free. I pay for the servers just out of my savings. And we're selling Free Code Camp stickers and t-shirts and things like that. And that's offsetting the server cost to a large extent.
CHUCK:
The other thing that I see is that some people work really well under a self-paced system where they show up and they can work through things as they have time. But other people really need that structure that you get from something that looks a whole lot more like a traditional bootcamp or a class or something like that. How do people identify that the strengths of Free Code Camp are going to work for them or whether they should go look for maybe a little bit more traditional way of learning how to program?
QUINCY:
Well, the great thing about Free Code Camp is it's completely free and self-paced and you can jump in from anywhere in the world at any time and just give it a try. And if it works for you, awesome. It's working for a lot of people. There are certain people whose learning styles or who may simply have the resources to be able to attend an in-person intensive bootcamp for example who would benefit tremendously from doing that. So, Free Code Camp is something you could try first and if it's not for you then you could triage and look at other options, like going back to university for a Master's Degree or attending an intensive bootcamp. There are so many modalities of learning and I think they're all valuable. It just depends on the individual.
CHUCK:
Yeah, that makes sense. One other question I have, and this is something that I kind of get into with people when they talk about nonprofits because a lot of people have this idea that nonprofits are some kind of charitable or do-good-ing organization. And the truth of the matter is, is that depending on your point of view some nonprofits are doing good and some of them may not be. The other thing that I've seen though is that a lot of nonprofits waste a lot of resources and others are really well-run. So, do you differentiate between the nonprofits that need your help? Or do you just help whoever comes along?
QUINCY:
So, we're very selective about whom we work with. I think we work with… we've got hundreds of nonprofits that have approached us and we basically determine which ones we think are going to work out. And usually it has, like they have a proven need that they're serving. It's not speculative like a more startup environment. Generally they have a nonprofit stakeholder who has some comprehension of technology and understands the business need that this solution that we would build would solve. And then we have agile project managers who come in and essentially help translate the nonprofit's vision for the project into actual deliverables and translate it into sprints.
So, the entire process is very concerted. And we're very careful about whom we work with. We want to make sure that we work with organizations that genuinely need our help and are going to actually use the tool that we build. And so far our selectivity has definitely paid off. I don't want to discourage any nonprofits from applying. Even if we aren't able to work with your nonprofit we'll give you a list of resources that will be really helpful where you can get free or near-free help for different technological solutions you might want.
Another big thing is a lot of people don't understand that for example a Facebook group or a Magneto, or Magenta, sorry, or a WooCommerce plugin or something like that might actually do the trick, that they don't actually need custom code. So, a lot of the time we're just educating nonprofits on, “Hey, did you know this off-the-shelf solution can solve this problem for you?” So, it's very tricky working with nonprofits. I would not encourage anyone to go out and just say, “Hey, I'm going to go volunteer my time to a nonprofit,” without some sort of structure in place because things can very easily get out of hand. And in terms of them wanting a whole lot of things that you aren't prepared to deliver in terms of time availability.
CHUCK:
So, the other thing related to this, and you kind of brought it up, so you actually have agile project managers that get in and break things up into sprints and make sure that the deliverables are clearly understood and make sure that the campers or coder know what they're doing. It sounds like they almost get training in not just coding but what it's like to work on a team on a project to build something that somebody's actually going to use. And I can definitely see some major value in that. That's one thing that as I talk to more and more people who are out there looking for their first coding job, is a major weakness that they have, is that they haven't actually built anything of any complexity. Or if they have in a code camp or something a lot of times they haven't had to work on a team or to really work in a place where it simulated the environment that I've worked in on teams in companies. And so, I think that's a really great thing for your campers.
AIMEE:
I really agree with that Chuck too, because I just wanted to chime in. So, one of the biggest challenges I think for me going from bootcamp to my first job is although we had a lot of pair programming and group projects, we were building everything from scratch. So, that's great in some regards but it also is like a detriment in some regards because I would venture to say unless you're working in an agency if you're working at a software company working on a product, the majority of what you're going to be doing is going into a big codebase and trying to make changes. So, that was something for me, that took a little while to get used to because I wasn't used to working on something that I didn't know all the ins and outs from the very beginning.
CHUCK:
Well, even as an agency or a freelancer, I can tell you that I've only worked…
AIMEE:
[Chuckles]
CHUCK:
on a handful of greenfield projects. Most of the projects that I've worked on even in an agency or as a freelancer have been, “Can you fix this?” or “Can you maintain this?” or “Can you finish this?”
AIMEE:
Yeah. So, that's super valuable to be able to do something like that.
CHUCK:
So, if somebody comes in and they really get involved in Free Code Camp, how long, and I know I'm asking you to make a promise that you can't necessarily keep. So, I'll let you caveat all you want. It's self-paced and it depends on you. But how long does it usually take somebody to get a job if they're really making a concerted effort on Free Code Camp?
QUINCY:
A lot of people get jobs within around six months. It's certainly slower than if you were to go to, if you were to get an internship for example that was intern to hire. A lot of those are shorter. If you were to attend an intensive bootcamp. The upside of course is that you don't have to quit your job. You can just keep cranking nights and weekends and get through it. And for most people, or 90% of people, maybe 95% of people that's optimal, because you've got kids, you've got a mortgage. And you can't just drop everything and take a chance on going full-time.
When I learned it was very difficult for me to learn without doing that. That's why I ultimately decided to leave my job as a school director and focus 100% of my time on learning to code. But one of the goals of Free Code Camp is to make that sort of learning viable, to where you can actually continue to work your current job and even potentially move within your current company into a web developer role. Because pretty much every company is going to have some sort of web development arm in 2016. So, we strongly encourage people to stay with their job and only if they're getting an offer for example to take that leap, because you don't want to be without health insurance. You don't want to be without income for any longer than you absolutely have to be.
CHUCK:
So, a few more questions that I have related to this that I'm just looking at here. You say you have a Medium publication. I see you have a Twitch.tv channel. You got a subreddit. How do those play into the mission of Free Code Camp? Are they just marketing mechanisms? Or do you use them to further what you're trying to do in other ways?
QUINCY:
The Medium publication is pretty new. Before we had a blog and even though we got at the top of Hacker News several times with blog posts, we really didn't get that much attention with the blog. But we shifted over to Medium and we said, “Hey, literally anyone from our community, if you write something and it's got an interesting perspective or if it's a helpful tutorial,” which you can embed GitHub Gists and things like that on Medium, “so you can write coding tutorials. And if you write that then submit it, we'll edit it and we'll publish it in our Medium publication. And then thousands of people will get to see your work instead of a few people that come by your blog after seeing you tweet about it for example.” That is a great way for our campers to get experience actually writing to be read on technical subjects. And also, on the Medium publication we write extensively, the Free Code Camp core team writes extensively. So, we're constantly publishing articles on there. I'd say we probably publish an article on Medium almost every day on average. Although I'll often publish five or six on the same day.
The subreddit, we used to have a forum. It didn't really take off. We built this thing like Hacker News called Camper News that we used for a while which was just a collaborative filtering system. And that was a great way for campers to share like, “Oh hey, there's this great blog post over here,” or, “There's this great podcast,” or, “This video does an excellent job of explaining Node.js's event loop.” So, we decided to move it back over to reddit because reddit already had rich moderative capability and it had all these other features that we found really good. It had really good commenting and everything. And as a result a lot of people have discovered us through reddit.
And then of course the Twitch channel is probably the most interesting thing that we do outside of our core mission of teaching. And that's to give campers an opportunity to code live in front of other people. When you're coding live on Twitch, it's like you're pair programming with 30 people. Basically people will jump in and say, “Hey, you forgot that semicolon,” or ask you why you're taking a specific approach as opposed to another one. And it's just great. You can, often I'll stream and I'll dial in other people using Screenhero for example which is kind of abandon-ware but it still works. And we'll pull people in and we'll do live pair programming sessions. And it's a great way of sharing how we approach solving problems and at the same time getting feedback from our community.
AIMEE:
So, how do you sustain yourself if you are running this?
QUINCY:
That's a good question.
AIMEE:
[Laughs]
QUINCY:
Before I left my school director job, basically for the last eight or nine years I was teaching or running schools in the US or China. And I just saved half of everything I earned. My wife also went to school and she has a good job. We have insurance through her. So basically, we have savings to last indefinitely. And I'm able to just sit in my closet and eat microwave burritos and code all day.
AIMEE:
[Laughs]
QUINCY:
So, believe it or not it's not that expensive. My additional marginal cost of being here [chuckles] is probably like a few hundred dollars a month. I just live very frugally.
AIMEE:
You're living the dream. I respect that. I try to do the same thing except we're just saving. I'm not sure what we're saving for, but we're saving. [Chuckles]
QUINCY:
Well, we were saving for a house and then we decided, “Hey, let's try this crazy educational experiment.” And I'm sure a house would be comfortable. But I'm way happier that we decided to take a leap of faith and create an open source community.
AIMEE:
So, what would you…
CHUCK:
I can tell you that'd be a hard sell in my house.
AIMEE:
[Laughs]
QUINCY:
[Chuckles]
AIMEE:
Yeah, that'd be a hard well with my husband, too. [Laughs] You have a very nice wife, it sounds like. [Chuckles]
QUINCY:
Yes. [Laughs]
AIMEE:
So, what do you have in mind for Free Code Camp a year from now, five years from now? Do you still think it will be around five years from now? [Chuckles]
QUINCY:
Oh, yeah. This is open source software. The genie is out of the proverbial bottle. It's not going anywhere. I plan… I hope to be involved in Free Code Camp for the rest of my life, really. It's growing steadily. The curriculum is improving. We're getting more and more volunteer contributors every day. Our wiki is growing rapidly in size. The project is growing in scope. Pretty much everything is moving in the right direction. Our outcomes are improving. People are happier and happier with our curricula. So, I think that if we can keep going in the direction we're going, we can really build a good open source free path to getting a coding job that would be available not only to people in the US, because often people forget 95% of the population lives outside of the US and they don't have access to the kind of resources we would have as Americans. But also in developing countries like India, China, Russia, Brazil, we're increasingly popular. Actually the US is only about 40% of our campers, are here in the US now.
JOE:
So, what about the long-term sustainability financially? You said that you're using your savings right now for the servers and stuff. And you're selling some stickers. Is there any point in the future where that doesn't work out?
QUINCY:
As long as we have volunteers that are willing to contribute their scarce time, nights and weekends to improving Free Code Camp, and as long as we can cover the costs of having servers and having a Vimeo account and various tools like that, that we use, we can continue to be really lean. We don't need to spend any money on marketing. We don't need to spend any money on payroll or general administrative costs that necessitate businesses going out and taking venture capital funding for example. And we happen to be creating developers or contributing to the creation of developers in a time when recruiters are charging 30 cents on the dollar to put people in touch with development talent. And if we can even help in some way, if we can capture even a small percentage of that value, I think we'll be just fine.
JOE:
Mmhmm. So, I think a really interesting question to ask would be, if this was monetized instead of free, if instead of you taking, sacrificing in a way that very, very, very few people in the world would, pretend you have approached this from a typical, “I want to create a business that somehow is going to sustain me and potentially others monetarily and then also be contributing,” how would it be different? Do you feel like it would be better? Do you feel like it would be worse?
QUINCY:
I feel like it would be worse. This is about ideology. I firmly believe that the lack of software engineering talent, the lack of general technology know-how is holding us back as a civilization. And I don't really care about getting rich. If I had millions of dollars I'd just put it in my bank account and continue eating burritos and sitting in my closet. And I don't think that growing headcount and doing all the things that a business traditionally does are necessary in this case. This is an open source project. This is driven by goodwill. This is driven by passion. And introducing money doesn't improve any of those things. If anything, it creates this sentiment that people do have to show up because they have to get a paycheck. So, I have a lot of respect for people that are able to monetize and figure out business plans that revolve around education. But I personally think that open source free alternatives should exist and they can exist. So, I'm going to make sure that they do exist.
JOE:
Right, right. Do you ever feel like you're missing out on talent that you could have if you could be paying for it?
QUINCY:
Sure. I know a lot of developers that are really strong that drive fast cars and there's no way that they would be volunteering their time for free. We have good developers that do come out of the woodwork that are willing to volunteer their time. And what they are doing it for is because they want this resource to exist. So, yes we're potentially losing out on a lot of development talent. But I would say on a balance it's much better that we're doing it the way we're doing it. It's an ideologically pure endeavor. And I intend to keep it that way.
JOE:
I think I've seen a lot of indication, at least in the development world that donating time is fairly commonplace. Maybe that's because the passion tends to run really high in this industry. People get pretty passionate about things that they do. And they love their jobs. They love coding. And so, when they have to, the idea of coding for free doesn't sound very distasteful to a lot of people, especially if they're learning new things and working on new things. But there is a difference between somebody that can contribute a few hours a week and somebody that could contribute 40 hours a week. Do you ever feel… have you felt like…? I assume you're the only person working on this full-time, right?
QUINCY:
Right.
JOE:
So, is there any point at which you wish, “Oh, I wish I had somebody else that would actually… I needed somebody that could actually spend 40 hours because the 10 hours a week that I'm getting out of my typical contributor or five hours means that I'm missing out on something.”
QUINCY:
If you think about knowledge in terms of encapsulating it in one individual, there's always an advantage there because you don't have the communication overhead that you have when you're essentially spreading a role across several people.
JOE:
Mmhmm.
QUINCY:
So, that's a big drag in terms of productivity, constantly having to communicate what you're doing and pass things back and forth in the form of updating an issue. But basically if you just break the work down into small enough chunks that people can conceivably work on them on their own, then you have essentially side-stepped that problem. It's a lot harder to do that but you can essentially reduce the communication overhead through just using modern tools like GitHub Issues for example and using asynchronous chat which we make extensive use of as a team to basically make a whole lot of people who are good at what they do but don't have a whole lot of time commensurate with a few people who are good but are working full-time in a capacity, if you see what I'm saying. So, it's very difficult to achieve that. I'm not going to lie. But it certainly is viable. And I think that we've come as far as we have is to some extent a testament to the plausibility of this configuration.
AJ:
So, I've got a philosophical question for you. Do you see coding more as a form of art or more as a form of function?
QUINCY:
I see it more as a form of getting things done. Basically with coding you're telling machines what to do. And in order to make things work and improve civilization, we need to figure out more efficient ways of getting things done. And often that's taking a rote workflow that's being done manually and figuring out a way to cleverly make it so that a computer can just run that in the background and free that person up to do something more creative. So, of course coding can be extremely creative. I've seen some amazing Three.js narratives for example that people have built. I've seen some incredible video games that make you think they were implemented in a browser for example.
And coding can definitely be an art. But I think for most people coding can be a way to essentially extend their own availability, extend their own capability and have one individual do what it used to take 10 individuals to do or a hundred individuals. We're going to continue to get this [power law] where through being able to automate different processes you can extend yourself. You can become significantly more productive. And as individuals within a civilization become more productive, civilization in aggregate becomes more productive.
Measures of productivity like GDP increase and essentially you reduce the individual cost of any one thing and you achieve this level of abundance that allows for people to not have things like war for example. If you look at war it's caused almost always by resource scarcity. People will talk about it being some issue with ideology. But usually it's about some sort of resources. There are exceptions of course. But we can move away from that. And we've moved away from that as a civilization over time thanks to increasing economic value. And a lot of that is done just through applying technology more efficiently. And we feel like the industrial revolution and many of the other revolutions over the last 400 years have been born on the backs of technology that lighten the load for individual workers. And I think we can do that same thing going forward.
It's difficult to imagine all of the different ways we can improve civilization through offloading work and work that we don't even know needs to be done can be done. I don't think anybody could have conceived of something like Google a hundred years ago. But look at how useful that is. There are so many things like that that are just waiting, that just need ingenuity to unlock. That's kind of [chuckles] if I can sit back. I know I sound very grandiose. But that's how I think about things, in terms of this shortage of developers. I think it comes back to us not moving as fast as a civilization as we could.
AJ:
Interesting.
JOE:
Yeah, very interesting. Something I mostly agree with. So, you have this free model, this no profit, no cost model. Do you end up doing any partnerships or work with other educational institutions that are for-profit?
QUINCY:
Actually, I don't think we've partnered with anybody who's for-profit that I know of. We work with the Project Management Institute. That's how we get the volunteer project managers. They need to get experience hours in order to qualify for additional certifications and do their continuing education requirement. We partner in way, a lot of nonprofits like Women Who Code, Girl Develop It, CoderDojo use Free Code Camp extensively. And we encourage our campers to donate to those nonprofits, if you want to look at that as a partnership. We don't partner with anybody in any formal traditional sense. It's usually just like a, “Hey, check out these people. They're doing good work,” and then them basically using Free Code Camp as part of their curriculum for example.
JOE:
What are some things that you feel like could make Free Code Camp more effective for people learning to code?
QUINCY:
Well, one thing we want to do is make it much easier. Reduce the friction involved in pair programming. We believe strongly in pair programming. I personally pair program probably 60% of the time. And right now, the process of finding somebody to pair program with involves going into the chat room and talking to people and saying, “Hey, I'm working on this. Does anybody want to with me work on it?” We think with more real-time technology that we're building into Free Code Camp, we can potentially detect when two people are at about the same level. Maybe they're at the same point in our very linear curriculum.
Our curriculum is literally one size fits all. We have zero electives. Everybody works with the exact same 2080 hours. So, we can potentially pair people up in a smart way and just initiate a pair programming session right there on FreeCodeCamp.com. That way they don't need to duck out and it just reduces the overall friction, which if you think about it pair programming is daunting enough to somebody who's never done it before because they don't want to be judged. They don't want to make mistakes in front of their peers. Totally understandable. So, the more we can do to reduce the friction involved in that, the more people will pair. And the more people pair, the faster they're going to improve.
JOE:
Yeah, great sentiment. I definitely agree with that. I love pair programming. And I feel like that's where I've learned so much so fast compared to just about any other method. So, another question I actually have is it seems like one of the things that gets the most amount of criticism is the things that we do for free. Have you experienced that at all? Any criticism with what you guys are doing?
QUINCY:
Not really. People are generally very grateful that we exist and that we are doing this for free. We get people from relatively poor parts of India where they're working through Free Code Camp on a smart phone because they don't have a laptop, and people like that that otherwise would not be able to use Free Code Camp if we charged even a small amount of money. And of course to the credit of massive open online courses which basically proved out the concept, you could teach people for free at scale, and were a huge inspiration for me and a proof of concept for creating Free Code Camp. You can consume those resources as well. And there are tons of free books, thousands of free coding books that you can read as well. So, I don't think people necessarily look at those resources as inferior because they're free. That may be true to an extent but I think if you can show that you are a high-quality resource and that there's efficacy there then you can quickly overcome any instinct that people may have, any skepticism that people may have as a result of you being free.
JOE:
Right.
CHUCK:
So, I'm a little curious. How was the curriculum developed? You said it's open source. But it seems like in order to get this going you would have at least had to have had some curriculum and then had it evolve as you go.
QUINCY:
Yeah, that's an excellent question, Charles. Basically we started off with all external resources. So, we were making extensive use of Stanford's classes for example and online resources that were freely available that were self-paced. And it started off basically as a list. Go do this, go do this, go build this, go build this, then do this course and this course. And it's always been that linear curriculum. But over time we were able to build the technology to be able to do web development right on FreeCodeCamp.com. And we were able to gradually introduce our own content to replace external content. So, that was a transition that happened as we got more people on board. And it's completely driven by our volunteers.
We have several people that were really big champions of creating the infrastructure. Nathan Leniz who is, he's actually in the army. He's in the bomb squad. He disassembles bombs all day and then after he's disassembled bombs all day he comes home and puts in a second shift doing Node.js and JavaScript development on FreeCodeCamp.com. And he built the original courseware that allows us to do a lot of what we do. And then there's a guy named Rex out in Sacramento metro area, Rex Schrader. He was able to basically take my relatively crude JavaScript curriculum that me and a guy named Ben McMahon out in Dublin had put together and he basically went through and did a ton of quality assurance and extended it significantly. So basically, our curriculum grows in increments. Right now we're working on building some React and Redux courses and challenges associated with that.
We've already got the projects in place. Everything's optional except for the actual projects. That's one thing we wanted to do. We didn't want to wall anything off from anybody from day one. You don't even have to create an account. You could just jump in and start doing projects if you want to and completely skip all the curricula that lead up to try to prepare you for that project. So, the result is about two-thirds of our campers are brand new to coding. They hadn't really coded before, much at all. And then another third is actually experienced developers who are coming to refine their skills. And because they can just jump around within our curriculum it's really appealing to them. They could potentially put in 40 or 50 hours if they're really fast and earn the certification just by building the projects.
JOE:
For students that get involved and then have difficulty for one reason or another, do you feel like maybe code camp doesn't necessarily work for everybody and certain people would do better with… I think you kind of alluded to this a little bit earlier, but would do better with something more traditional like college? Or do you think that there's ways for people to get through that? Say that somebody was less disciplined, had an easier time getting distracted and really did a lot better in a classroom environment with more pressure and deadlines and things like that.
QUINCY:
I'll be blunt. If you don't have intrinsic motivation, if you don't feel the need, if you don't feel like there's a reason for you to be learning to code and if you can't power through setbacks, you probably won't be able to make it through Free Code Camp. Now we have infrastructure to help you and support you. We've got a very supportive community that's spread across our chat room system, that's spread across a thousand local groups around the world were people get together and have coffee and code and work through Free Code Camp together. So, the support infrastructure is there. But at a fundamental level if you're in coding for the wrong reasons, let's say you're just getting out of your finance job and like, “Oh, there's grass greener over there in Silicon Valley. I'm going to learn to code,” but you don't necessarily care about coding, you're just trying to do it for a paycheck for example, you're probably going to be better off going to a program where somebody's going to be standing over you pushing you toward success. Because everything comes back to the individual.
We put the onus on the individual to at least try to make use of our… we have a methodology. It's called read, search, ask. So basically, you read the error, you read the problem that you're stuck on and then you search for it on Google and you search Stack Overflow. You see if you can figure it out. You can search our wiki as well where we have hints on all of our different challenges. And then you ask. And asking could be like poking the guy sitting next to you at the coffee and code event and just saying, “Hey, do you know how to get past this problem?” or it could be asking somebody in our help chat room which you can click a button on every single page. There's this help button and it just opens up the appropriate chat room and you can just paste your code in there and get feedback, get unstuck that way. But if you're not willing to use those resources that we've made available there's only so much we can solve.
At the end of the day, anyone can learn to code. It's just a motivational issue. But not everybody is sufficiently motivated. And there's no easy answer for that. If you look at most of the problems that civilization faces, they come back to a lack of motivation. And that's a very hard problem that educators are constantly struggling with, trying to instill motivation, trying to instill grit within their learners so that the learners will power through setbacks, so that they'll keep progressing regardless of who's around them to help and that they'll find that strength within themselves, that force of will to keep pushing. So, I would definitely say Free Code Camp is better suited to people who can achieve that, at least a baseline of intrinsic motivation.
JOE:
So, what about… well, something you mentioned sort of spawned the question. And that was the community and the help, the free help that people are getting by going and reaching out to the community. I assume based on the fact that you said two-thirds of the learners do not have much coding experience to have a fairly positive community. Do you find that people don't have a problem, there are no basically 'dumb questions' that are asked and has a very positive response to even questions that might… I know that that's definitely a problem with junior developers feeling a lot of angst about asking a question and appearing to be dumb.
QUINCY:
Yeah. We strongly encourage people to ask questions of course. That's just part of human nature. Humans up until the last few thousand years lived in these tribes of small groups of people before the agrarian revolution. And if you made a mistake, if you looked dumb or if you did something wrong, you could potentially be ejected from the tribe and you had very low likelihood of surviving outside of your tribe. So, that is kind of carried forward in our human psychology. It's painful. It literally feels like you could die if you were to ask a question that makes everybody laugh and everybody loses confidence in you as a member of their tribe. So, that's extremely difficult to overcome at a psychological level.
The way we have attacked that problem is we have a very rigorous code of conduct that we enforce very vigilantly. And if we sense anybody's trolling or if anybody even has a whiff of elitism which frankly one of the biggest challenges for getting people other than the traditional college educated white males who currently dominate the technology field into the field is getting rid of that elitism. So, we're constantly trying to beat that back and we'll call people out. We'll address them in a private message. We'll say, “Hey, I noticed you said this, this, and this. I know you're just trying to be helpful but please don't be sarcastic,” or, “There's probably a more constructive way you could go about helping this camper.” So, we're actively monitoring all that stuff. And we do ban a lot of people, because that's what you have to do if you want to keep things positive. We definitely don't want Free Code Camp's community to become a toxic environment. And we value the ability to ask dumb questions and not get your head bitten off, so to speak.
CHUCK:
I'm good at dumb questions.
JOE:
[Chuckles] Well, that's great and certainly an important thing. I can imagine people listening to this and saying, “Boy, I really would like to code but I just don't feel like I'm cut out for it and I'd hate to get out there and just look dumb. And I don't want to be some place and feeling dumb while I'm trying to learn.” And so, it's a very important aspect I think of education, is to encourage that.
QUINCY:
Absolutely. A lot of the major breakthroughs in pedagogy and a lot of different approaches of people have been taking, that teachers have been taking, is trying to cultivate that environment where it's okay to ask questions. And it's the hardest thing in the world. But there are a lot of pioneers out there, teachers that are trying new things. And some of them I've written a little bit about on Quora. I write a lot about education on my Quora answers and stuff. And I'm very confident that we can achieve that state where people don't judge one another as much. We'll never be able to completely get rid of it. But if we can just continue to accept that we know nothing [chuckles] in the grand scheme of things and it's okay that other people don't know about this one thing that we happen to know something about, then we can all move forward. And this whole elitism mess and this whole desire to puff up one's chest and make other people feel inferior so that we can feel inferior, that instinct, we can beat that back.
JOE:
Well, it's certainly been fascinating hearing all these answers. I can imagine if you were born a hundred years ago you would have been somewhere running a leper colony.
QUINCY:
You know if I was born a hundred years ago I probably would have died as a child statistically. [Laughter]
QUINCY:
I feel extremely lucky to have been born in an era when we have low infant mortality, where we have universal education. I could just as easily have been a nobody that was shoveling dirt on a street or shoveling manure into a ditch to fertilize some crops or something. And if you look at human history, I would probably just have been some vagabond who died at 20 years old without even having any kinds or anything like that, because that's the typical human experience. And I think it's very important that we always keep that in mind, that we keep in mind that this is a very small sliver. None of this is normal by any stretch of the means. And we should savor every aspect of the prosperity that we're enjoying. And we should focus on making more of it.
CHUCK:
You'd have made a terrible farmer. If you shovel manure into a ditch, you just get a messed up ditch. [Laughter]
JOE:
So, a lot of our audience is people who are more established programmers, not necessarily looking for Free Code Camp although I'm sure there are definitely plenty that are going to come and check out Free Code Camp. But for those that may be a little bit more experienced and maybe can't benefit directly from Free Code Camp themselves but might think after listening to this, “Hmm, maybe I want to contribute and help out. It sounds like such a great cause,” how do they get involved?
QUINCY:
Absolutely. We have a great, well I shouldn't say it's great because I wrote it but [chuckles] we have an article that I wrote recently about our short-term milestones and different ways you can help.
And one of our campers, Briana, she is in charge of our video curriculum where she does basically these two-minute videos where she stands in front of a whiteboard and explains computer science concepts and mathematical concepts. She put together this cool quiz that basically, if you take this quiz it's like seven or eight questions, it will pipe you over to the right area where you can potentially volunteer based on your time availability, based on your skills, based on how outgoing you are in terms of whether you're somebody who would potentially be interested in streaming or recording videos of you in front of a whiteboard or somebody who has teaching experience and things like that.
So, I would strongly recommend that they just read that quick article and jump through the quiz at the end of it. And that will pipe them to a chat room where they can introduce themselves and get more feedback from the different volunteers who own those proverbial, like when I say 'own' I mean in the agile sense of the word, like own that chat room and are responsible for it. And they can help give them further guidance and point them to some wiki articles and such to get them started.
JOE:
Awesome.
CHUCK:
Alright. Let's do picks then. AJ, do you want to start us off with picks?
AJ:
Chuck, how did you know? [How did you know?]
CHUCK:
I always know. I'm like Santa Clause.
AJ:
Alright. So, two things. I'm going to pick some misattributions. So, there is this little affirmation/poem/speech that starts off like “Our greatest fear is not our inadequacy but our greatness.” It starts off with something like that. And it's attributed to Nelson Mandela but it's actually by Marianne Williamson. And it is a great affirmation. I had somebody talking to me about reading it on a daily basis and started doing it out loud. And it was like, it felt so ridiculous because I don't know if you've ever done an affirmation but if you haven't, it feels really awkward. But it actually, the thoughts in it's stuck in my mind. And in particular it has a line that says basically, “In being our best selves and not shrinking away from our greatness and what we're good at and what we're proud of, we enable others around us to also embrace their greatness and what they're good at and be proud of themselves as well.” And I think that that's a really cool thing that's one of the thoughts that's impacting my life right now.
The second one is 'The Legend of Zelda' by The Rabbit Joint, not by System of a Down. So, it's this song that is kind of fun and goofy and you should listen to it if you're a Zelda fan.
Warning:
Listening to this soundtrack may reveal key plot elements.” And I just think there's a difference between a Nintendo-er and a gamer. And I think Nintendo-ers are better because Nintendo is so much more about art and experience. It's like playing a book in a lot of cases. And I love that the soundtrack, music is such an important part of Nintendo the company, I love that the soundtrack has a warning on it that you should play the game through first before listening to it. That's just awesome.
And lastly, I will pick Steve Wozniak's 'The Early Days' TED talk. So, I have a contrary opinion about technology. I feel that it is mostly best served as for art rather than for function in some ways because in part of what Steve Wozniak says. Or the sentiment that he's describing is that he got into technology thinking that he was going to make the world the most awesome place and we were going to have a four-day work week and da-da-da-da-da. But then it turns out that the more technology we have, the more we use it to create more technology. And I'm not… like I love it but I'm not sure that it's going to be the great end of human prosperity will be because of our electronic devices. And so, I think that talk is interesting and I pick that.
CHUCK:
Alright. Joe, what are your picks?
JOE:
Alright, well I had the distinct pleasure of being able to spend this last weekend doing nothing for three straight days but playing board games which was awesome. And it's something that I get to do every year at a convention held here in town called SaltCON. And I tweeted a lot about some of the board games that I've played. But one of the ones that I played, I absolutely loved and it's called 'Favor of the Pharaoh'. So, I'm going to pick that. It's like, imagine Yahtzee on steroids or Yahtzee mixed with something amazing, because I found Yahtzee mostly to be kind of boring. But this game was just super fun. It's a dice-rolling game. And I had a great time and already picked up a copy of it. So, I'm going to pick 'Favor to the Pharaoh' as my first pick.
And then I also want to pick a TV show that my wife and I have been watching recently called The Goldbergs, which is a show about the 80s. And even though we kind of jumped into it sort of midstream, we've only seen the last six or seven episodes maybe, and it's been running I think for two seasons, but we had no problem picking up right in the middle. And all the episodes have been great. And what's really amazing about this is it's written by a guy, the creator is named Adam Goldberg and so it's basically about his family when he was growing up as a kid in the 80s. And they did a whole bunch of home movies. And so, at the end of every episode he'll show some home movies that are related to the episode. And every episode is dedicated to some particular event or happening in his life as he grew up, or some person. And it's really cute and very familyfriendly but also hilarious. So, that'll be my second and final pick.
CHUCK:
Alright. I've got a couple of picks. The first pick is on Facebook. I ran across this, I'm trying to think of how to say it. It's a podcaster rap. And it's really funny if you've done a podcast before. Anyway, it's awesome. I'll put a link in the show notes so you can go check it out.
Another pick that I have is, and this is something that I use for my talks, for my slides, this is in addition to Dreamstime which I use for clip art and stuff, there is an app on the iPhone and iPad called Word Swag. And I used that to just put the main idea on my slides. And then I just use an image for the slide and I really, really enjoy it. So, I'm definitely going to pick that. And yeah, those are my picks.
Quincy, what are your picks?
QUINCY:
Sure. There's this great article that was written back in 2013 by a woman named Cecily Carver. She's at Google. And she wrote this awesome article called 'Things I Wish Someone Had Told Me When I Was Learning How to Code'. And I think everybody who's learning to code should read it.
CHUCK:
Alright. Aimee, what are your picks?
AIMEE:
Okay. I have two picks this week. So, the first one if you're into this kind of thing is called Code for the Kingdom. Some friends of mine are doing one in Nashville coming up. It will probably be done by the time this airs, but there's a bunch in other cities. So, we were kind of talking about nonprofits. This would be another avenue if you were interested in this kind of stuff, and also Code for the Kingdom.
The second one is just a Git diff tool. So, I'm doing a lot more Git. I used to use Mercurial a bunch but as I was setting up my machine for my new job, I found this. It's called diff-so-fancy. And I'll put a link to the repository on GitHub in the show notes. So, you can check that out. And that's it for me.
CHUCK:
Alright. Well, we'll go ahead and wrap up the show then. Thanks for coming, Quincy. And thanks to our panelists. We'll go and wrap up the show and we'll catch you all next week.
[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 and there you can join discussions with the regular panelists and our guests.]