Library Podcasts

Ep. #10, Inside Free Code Camp’s Self Study Program

Guests: Quincy Larson & Berkeley Martinez

In this episode of JAMstack Radio, Brian speaks with Quincy Larson, Founder of Free Code Camp and Berkeley Martinez, CTO of Free Code Camp.

They discuss Free Code Camp’s ‘self study together’ approach that has grown their community to over 350,000 monthly active users. Quincy explains why they chose JavaScript as the front end and back end choice to teach people how to program. An important part of their curriculum is the invaluable practical training ‘campers’ gain by working with non-profits and contributing to open source communities.


About the Guests

Quincy Larson is the Founder of Free Code Camp, an open source community of 500,000+ people who learn to code together and build projects for nonprofits.

Prior to Free Code Camp, Quincy spent 5 years in China, where he taught and served as an interpreter for various language training programs. Along the way, Quincy learned to code and wrote scripts to automate school workflows so he could free teachers and administrators allowing them to spend more time with students.

Berkeley Martinez is the CTO of Free Code Camp and Partner at Real World React.

Berkeley is a big advocate of ‘do it yourself’ and all things Node.js, React, Flux and Functional Reactive Programming. Berkeley also serves as a volunteer mentor at NodeSchoolSF.

Show Notes

Transcript

00:00:00
00:00:00

Brian Douglas: Welcome to another installment of JAMstack Radio. On the line I've got Berkeley Martinez, the one and only.

Berkeley Martinez: What up?

Brian: And then I've also got Quincy Larson.

Quincy Larson: Hey, everybody.

Brian: So I'm actually a big fan of Free Code Camp. I don't know if I even told you this, but I actually started it a while ago back when it first came out. Started one of the first lessons and then I dropped off really quickly. So hopefully I'm not the test of all the other users at Free Code Camp, but I'm also a big fan of what you guys are doing.

So to introduce you guys. You guys are from Free Code Camp. Do one of you guys want to explain what Free Code Camp is?

Quincy: Yeah, Free Code Camp is an open source community where you learn web development, JavaScript, HTML, CSS and then a lot of advanced technologies like Node.js, Express, React and even some D3. And basically it's self-study together.

So if you have ever wanted to learn to code, at night, after work, after the kids are down for bed or just over the weekends when you have time, Free Code Camp's completely self-paced. It's completely free. And you have access to a massive community that's all working through the same curriculum together so everybody can help everybody.

And that's basically how it works. We have a very active community. We have about 350,000 people who use it each month and very active chat rooms on Gitter and a popular forum and then we have our Medium publication where we publish articles, mostly technical articles, but also some motivational articles about learning to code.

And then we also have a YouTube channel so people are creating short educational videos on computer science and mathematical concepts there too.

Brian: Wow, sounds like it's pretty involved. So do you guys want to really quick explain what your roles are at Free Code Camp?

Berkeley: So I'm CTO at Free Code Camp. I essentially manage the Gitter, repo and servers and the databases and everything else technical that we can't easily open up for everyone to take a look at.

Brian: Cool, and then Quincy, what's your role at Free Code Camp?

Quincy: I started Free Code Camp back in October of 2014 and ever since then I've just been kind of overseeing the curriculum and doing support and I edit the Medium publication so I wear a lot of hats. Basically I just try to do everything I can to help as many people learn to code and get their first developer job as I can.

Brian: Cool, and then so we've got two of you here so how big is a team that's involved in Free Code Camp?

Quincy: It's three people plus hundreds of volunteer contributors.

Brian: Oh very cool. So I imagine like if someone goes through the program, it's easier to get volunteers that way. Is that how it kind of works?

Quincy: Yeah, we have experienced developers who are also contributing.

A lot of our platform and our curriculum are being designed and developed by campers.

Brian: One of the reasons I reached out to you guys specifically to talk about what we want to talk about today on the podcast which is about learning JavaScript in 2017 is the fact that you guys are a JavaScript code camp. You guys literally chose JavaScript as the front and the backend choice to teach people how to program. Why JavaScript? Why was that chose instead of something just as popular like Python or Ruby?

Quincy: Sure. Well you could argue that in some respects a language like Python might be sort of easier to learn, like syntactically it's a little simpler and it has that forced indentation and some basic things that make it a little easier to learn.

Well actually, once you get past couple of the syntactic ambiguities of JavaScript, it's not terribly hard to learn. You have some asynchronous stuff you have to worry about, but it's a high-level scripting language so it's relatively easy to learn. It's by far the most popular language for open source projects and it's the lingua franca of the browser so basically you can't avoid it.

Even if you were to hypothetically learn Python and Django, you would still need to learn a whole lot of JavaScript in order to actually be able to build anything interesting on the web.

As a result since Node.js, it's pretty awesome and it's under heavy development. The backend component with Express and now LoopBack and some other really cool tools, you can do a tremendous amount with JavaScript without needing to involve any other languages and my sentiment has always been you should learn one language really well before you attempt to learn a second one.

You certainly should learn additional languages, but only once you've learned a lot of the underlying concepts associated with programming languages.

Brian: Yeah, and that's a good point. Your last point too it definitely hits hard as well. Most people including myself like when I first got into programming, I got into programming because I wanted to make iPhone apps and then I found out really quickly Objective-C. At the time three years ago, Objective-C was the only choice and Objective-C's hard. And then when you get the big Nerd Ranch book like I did, the very first, the preface of the book is like hey well before you do this you should learn C. And I said wait, hold on, what

Berkeley: You got to learn a whole other language.

Brian:

It's like a bait and switch. I just want to program iPhone apps, but now I have to learn two languages, C and Objective-C.

It makes a lot of sense, especially since you can do JavaScript on the backend and on the front end. It makes a lot of sense why that would be the first programming language for someone new.

So can you talk about a little bit about what types of individuals are finding themselves at Free Code Camp? Are these computer science dropouts, are these people like high schoolers. I don't want to paint the demographic, but what is the demographic for Free Code Camp people?

Quincy: Sure, I'd be happy to answer that. So Free Code Camp, the age range is generally 25 to dead. We have a wide range.

We have some people, I think maybe like 20% - 25% of people who use Free Code Camp are under 25 and they're still in traditional schooling or recent graduates, but a vast majority of them have finished school, most of whom have finished university and sometimes graduate degrees as well and have been working for a few years and they're interested in changing fields.

Common fields that they'll be in, finance, accounting, other procedural-heavy fields. Other fields of engineering and they want to learn software development because if you look at the STEM job market, everybody's talking about the need for people to learn STEM, well that job market, like 60% of those jobs directly involve programming as a core function so pretty much everyone if they studied physics or if they studied math or something like that, they're realizing in order to actually get a good job, they're going to need to learn to code as well. So that's a big chunk of our audience as well.

Brian: So then can you tell me a little bit more about, because I want to talk about learning JavaScript in 2017, to talk about how do you guys approach so I am Starbucks barista. I want to learn. Or even I'm a engineering major that I have graduated. I'm working in the field, but I'm not really doing coding and I want to learn something more. Where do you guys start as far as Free Code Camp goes and learning?

Quincy: We have a linear curriculum. It's one size fits all, but you can drop in at any point.

Brian: Okay.

Quincy: Virtually all of the content is optional. You just have to build projects that meet various user stories in order to actually earn all the certificates and we issue free certificates if you complete a certain set of projects if you build those out and they're publicly accessible on CodePen or on Cloud9 or GitHub.io or something like that.

We can also go and look at the source code and if it's verifiable that you've completed these, we issue these certificates.

After you complete enough of those certificates, we have a huge practicum essentially where you build projects for non-profits and you contribute to open source projects that help non-profits as well.

So you can enter at any point as long as you hit a few of the kind of checkpoints in there, but everything's open. You don't even need an account to go and use Free Code Camp. You can just dive in and start learning.

Brian: That's very interesting because I actually run into a lot of people who maybe started programming ten years ago back when programming looked a lot different so if they have a little bit of experience, it makes a lot of sense if they don't. They don't have to go through the beginnings of JavaScript if they did ES4 or five back in the day. It makes a lot of sense to jump in the middle.

So as a bit of a follow-up question, JavaScript itself is very dynamic. Yes, you can do it on the back and the front end, but one of my biggest issues with JavaScript is that the flavors of how you approach JavaScript. So you can add plugins using MPM or you can throw script tags next to HTML. Or you could just use jQuery for everything. Figure out some sort of starter template and use jQuery. How does someone approach the diversity of JavaScript?

Berkeley: Someone just learning out, probably the best bet is to find some way where there's almost no barrier to entry and number one would be just open up dev tools in your browser so in Chrome just open up dev tools and just start writing JavaScript in there. You can write JavaScript right in the dev tools and save it there and it'll run in your browser.

The other way is using services like JS Bin and C9 and just writing code in there and these things will auto-update for you and this is the quickest way to get running.

Berkeley: You don't want to worry about learning web pack or bundling or CSS preprocessors. Just get into writing code and then the other stuff will follow.

Brian: Yeah, that's definitely a good point. I'm sure you guys have a good path, especially if you have a linear program where you could jump in and out so if you are unfamiliar of even CSS I guess, I'm sure that the insertion important for you to start learning.

Berkeley: Yeah, exactly.

Brian: Cool. Okay, so let's get the meat of it. So 2017 we just went to 2016. It was a very interesting year in general. There's a lot of stuff going on in 2016. 2017 obviously we don't know everything that's going to come on, but I know personally, I've only been doing JavaScript pretty heavily maybe a year and a half so I came in at ES5.

I saw ES6 come and then go and then I saw now what ES7 is now 2016 now and what that is. I also saw React make a big footprint in the JavaScript ecosystem and basically take over as far as the choice for JavaScript libraries. At least in the cutting edge. There's jQuery's still is one of the top.

Berkeley: Still number one for job hiring.

Brian: Yeah.

Berkeley: That's jQuery. It's going to be a long time before that's surpassed.

Brian: Yeah, that's a good point.

Berkeley: That's definitely a close second.

Brian: Would you recommend someone to learn jQuery as their first intro?

Berkeley: No, I'd recommend just do plain.

Brian: Plain JavaScript?

Berkeley: Because the reasons why jQuery became so popular aren't as valid anymore.

We have really nice document querying built into the modern browsers, so you don't really need jQuery to do fancy selectors.

Brian: Yeah.

Berkeley: Doing fancy selectors to modify the DOM in real time so JavaScript is the best way to start with and then probably moving on to something like React.

Brian: Cool. What it sounds like is that the main focus is again what Quincy said earlier, is just learn JavaScript.

Berkeley: Yeah, definitely.

Brian: And then what's your opinion now because there's definitely a lot of old tutorials out there at the moment and I'm not sure if you guys updated to ES6 yet. Is there value in learning ES5 first?

Berkeley: So what I always say is learn the current JavaScript and ES6 introduced a lot of new stuff that you don't necessarily need.

Brian: Yeah.

Berkeley: There are nice things to learn to learn programming so there's the ES6 class and tags which is very close to class and tags in other languages so if you want to learn OOP, Object Oriented Programming, then it's a good thing that we have with the class and tags.

Things like that. Shorthands like the arrow function, object creation shorthand, object notation shorthand. Stuff like that, but these are just little nice to haves.

You could learn ES5. The meat and potatoes in JavaScript has always been there since ES5.

Brian: Very cool. So I'm actually really intrigued about this, the portion of your program when you guys actually do some open source work. Is this open source help for non-profits? It sounds like it's going to be JavaScript. Is that what you guys are working on?

Berkeley: We actually let the campers themselves choose the languages.

Brian: Oh really?

Berkeley: Yeah, so we dictate what people learn in the browser so when they're Free Code Camp, we want them to learn HTML, CSS, JavaScript because chances are if you're entering into the web development field, you're going to run into those and so you'll be best prepared, but once you get to the projects so we separate them into front end, backend, React and D3. Once you get to those projects, except for D3 and React where you have to use D3 and React, you can do your front end code in whatever language you want.

If you want to do it in CoffeeScript, you can do it in CoffeeScript.

We just give you a set of user stories and you have to make sure you fulfill those user stories.

Yeah, so we don't want to limit anyone in those projects and it goes the same for the non-profit projects so if they want to use Java to build their backend, they can feel free to do so. And then I guess the non-profits could also suggest if they already have an ecosystem they use, but I don't think that actually happens very often. Most of the time the non-profit just wants something built. They don't know anything about what to use as far as technology is concerned.

Brian: Yeah, a list of ideas of what they are aiming for and then I guess would that be the same way for project-based learning as well? Do they also get user stories at that point or is that specific?

Berkeley: So the user stories are for the projects.

Brian: Oh, okay.

Berkeley: So when it comes to the non-profit part of it, what is dictated, what they need to be built is usually dictated by non-profit. So they have a certain need that needs to be filled and then they develop user stories and it's done in an agile fashion and so they have sprints and it's a very professional way of building these projects.

Brian: Cool, and then one more follow-up question to that too as well. So the campers, they do open source work and they also do project-based learning, but do they also do open source contributions to like JavaScript tools as well? Has that ever happened?

Berkeley: Yeah, some of them do. It's all open-ended so they can do any side projects they want. The main thing, so we have the certification programs and the only thing we require for those certifications are the completion of 20 or 40 or so projects. And that's it.

And so we encourage them to contribute to open source and our main repo which is one that they'll probably contribute to most likely. We have a set of guidelines that we try to make as close as possible to what the open source community at large expects.

So a certain branch naming scheme, making sure to add closing issue numbers to the description so GitHub picks up that this PR closes an issue, to describe the changes in a certain way and make sure the titles are short but descriptive and we do this in the hopes that they'll contribute to other projects and the PRs they contribute will more likely be accepted and at a quicker pace than normal.

So contributing to other projects is kind of like a milestone, contributing to open source projects and the first one that happens is always nervewracking because you don't know if you're doing it right or if the PR is going to be accepted or person that runs their repo is just going to yell at you for not doing it right.

So we want the first PR to be Free Code Camp so that we can guide them through the process and then the next one they do whether it's Free Code Camp's repo or someone else's repo, it's a lot easier, it's a lot less nervewracking.

Quincy: Yeah, Brian, let me tell you about something else we're doing related to open source for non-profits. Just a few months ago we started a program called "Open Source For Good". And historically we've always done these projects where we're doing an agile manner like Berkeley said with a stakeholder who basically understands the fundamental underlying business need of like a food bank logistics app or an app to run a local hockey league.

And basically they understand the needs and they walk us through what needs to be built through iterations. Every week we have a sprint until we've actually built out what they need. We ship it and then basically historically it was kind of up to them to maintain it and then we would pick up legacy projects and occasionally build up new features for them.

Well what we're doing now is when we build one of these projects, we're building with the intention of open sourcing the resulting project and then having the people who built it stay on as maintainers.

We invite open source contributions from other campers as they finish so they can get the real world experience of maintaining a large evolving application rather than just building greenfield projects over and over which doesn't actually happen as much in the field.

Brian: Yeah.

Quincy: So Open Source for Good. That's a new initiative and we're going to start releasing the first big projects pretty soon.

Brian: Okay. Is that separate from Free Code Camp or is that part of the roadmap for campers?

Berkeley: It's part of Free Code Camp. Basically you'll do it in addition to traditional non-profit projects.

Brian: Cool. So I just have one more final question. And this is separate from Free Code Camp and it's super, super polarizing. What is the best framework for JavaScript at the moment?

Berkeley: I'm very opinionated about this. I think it's React, React Redux. It's just the API is so simple. It's easy to teach. What's difficult about teaching it is just the concepts. The ideas around it, but the API is simple. Other than that, I would say sometimes you just don't need a framework.

Brian: Yeah.

Berkeley: And a lot of people as their first project will build a blog, but a lot of times your blog doesn't need to be a framework. It's just a bunch of files with a template.

Brian: Yeah.

Berkeley: So you could use something JAMstack related to build that.

Brian: Yeah, something's totally JAMstacked that's separate from your API anand maybe even statics generator like Gatsby.

Berkeley: Yeah and hosted on netleafile.

Brian: Yeah.

Brian: Cool, so let's roll right in the picks and I'll let you guys go after me because I want to roll right into what you just mentioned. As far as my pick, JavaScript 30. If you go to JavaScript30.com, West Boss has put together this tutorial about making JavaScript projects, but removed from frameworks and plugins. So you can't pull in lodash, you can't pull in React.

You have to build these small JavaScript apps without any help from the JavaScript ecosystem and it's not hard fast rules like basically he gives you the ideals of what the project looks like and then the assets so all the images and CSS and you just do all the JavaScript that goes along with it, but I love that idea. I love the fact that you're writing basically JavaScript which is a lot of what you guys were talking about so that's my first pick.

My second pick actually, Quincy, the actual Medium post that you wrote which is "what programming language should I learn first" on Medium. We didn't even mention, but you guys for Medium or you kind of mentioned in the beginning as far as what your role is, but you guys have a super awesome Medium. I don't know what they call them. Collections?

Quincy: Publication.

Brian: Yeah, so if you're not following Free Code Camp on Medium and getting what's next and the hottest in programming, just some really good thought-provoking pieces from random people. I'm not sure how you guys find these people, but random people from the community.

Definitely that's my third pick. I guess I kind of rolled into another pick, but that's my third pick. Berkeley, did you have any picks you want to talk about?

Berkeley: Yeah, I have two. Let's see if can remember the second one while I talk about the first one. So I've actually been looking to Closure and ClosureScript and I tried a year ago to learn and it's just, it was a horrible experience because documentation was really poor and I don't know the JVM very well and I'm not familiar with the process. It was just a horrible experience, but it's come a long way now.

And I want to give a shout out to a project called "Untangled" so some of you may have heard of Om Next. Om Next is great, but it t suffers from the same issue. The documentation is really poor and out of date. Om Next is a full stack framework Closure, ClosureScript. On the front end it uses Om Next and the backend it uses Closure.

I'm not exactly sure what framework it uses on the backend, but the reason why I think Untangled is so great is because the documentation is fantastic. There's tons of documentation.

There are guides and the creator has a 10-part series on YouTube and each video is 20 minutes long. It just goes through creating the to-do MVC and he talks about every little bit, every little aspect of building this app in Closure, ClosureScript which I think is fantastic. The second one is this band I just learned about and they've been around for a while, but they're called The Coup. They're based here in Oakland.

Brian: Oh, really?

Berkeley: Which is great and I went to the Oakland United Benefit for the Ghost Ship fire yesterday and they were playing there and I was like oh man, I can't believe I've never heard of these guys so that's one I wanted to promote.

Brian: Cool. Yeah, I'll definitely check them out. Quincy, you're last. Got any things you're jamming on?

Quincy: Man, I'm absolutely in love with gomix.com which used to be HyperDev. You may already have tried HyperDev. Well they just rebranded it.

Gomix is awesome. It's basically full stack development right in the browser, full stack JavaScript and any libraries you want to pull in through MPM.

And of course it has this super simplified version of Git exporting, so you don't even have to deal with Git or the command line or anything. It abstracts that away and you just focus on building your API and the thing about this that I love is you don't even, at least when I last checked, you don't even need to create an account. You just show up and you start doing it and it's live immediately.

Whatever app you build is immediately live and you can send the URL to people and they can check it out and it's totally free. It's by the people who built Trello and the guy who founded Stack Overflow has a company called Fog Creek.

Brian: Yeah, I didn't realize all those connections. I heard of Gomix, but I didn't realize all those connections were inside of Gomix as well as that it was HyperDev as well.

Quincy: Yeah, so we are building an entirely new backend development curriculum. It's almost done and we're just basically doing final Q&A on it and finishing a few test-driven projects where you'll actually have a test suite and you'll just get all the tests to pass as part of building your project and so we're having these more abstract user stories who actually have hard tests that you have to pass. But we're building it all to interface with Gomix so we're extremely excited about Gomix and I'm using it several hours a day.

Brian: Very cool. Well I just want to thank you, Quincy, for jumping on the call today and taking some time out of the day and then Berkeley as well, walking over here in the rain. Definitely appreciate it.

Berkeley: Well worth it, yeah.

Brian: Yeah, and I'm actually really looking forward to the next year of JavaScript and learning even more too. Im still bright eyed and bushy tailed about the state of JavaScript. Thats all we have time for today. Thanks guys.

Berkeley: Thank you.

You've been here a while...

Are you learning something? Share it with your friends!

Want developer focused content in your inbox?

Join our mailing list to receive the latest Library updates. After subscribing, tell us your preferences to receive only the email you want.

Thanks for subscribing, check your inbox to confirm and choose preferences!