August 5, 2016
Building An Inclusive Remote Culture
Building and managing an inclusive remote culture is hard work, there's no way around it. You have to be thoughtful and deliberate in your d...
In this episode of JAMstack Radio, Brian speaks with Quincy Larson, Founder of Free Code Camp and Berkeley Martinez, CTO of Free Code Camp.
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.
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?
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.
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.
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.
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.
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.
Quincy: We have a linear curriculum. It's one size fits all, but you can drop in at any point.
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.
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.
Berkeley: Still number one for job hiring.
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.
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.
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: 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.
Berkeley: We actually let the campers themselves choose the languages.
Brian: Oh really?
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.
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.
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.
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.
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.
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.
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?
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.
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.
Berkeley: Thank you.