Quincy Larson // @freeCodeCamp
OPENING QUOTE: freeCodeCamp is incredibly popular in India, is incredibly popular in Nigeria, Kenya, Bangladesh, places where there are lots of people living off less than $10 a day and that's about half the people on earth live off less than $10 a day. You can use freeCodeCamp on a commodity Android smartphone that you bought for 50 bucks.
Brian: That’s Quincy Larson, founder of freeCodeCamp.org, and this is The ReadME Podcast, a GitHub podcast that takes a peek behind the curtain at some of the most impactful open source projects and the developers who make them happen. I am bdougie aka Brian Douglas…
Neha: And I’m nerdneha aka Neha Batra
Brian: Every episode, Neha and I invite a maintainer or open source developer into our studio to explore the impact their work is making on the world around them.
Neha: In this episode, we speak with Quincy who came to technology much like others do, with a desire to make something more efficient. As a school administrator, he saw his colleagues spending countless hours inputting info into a computer and he wanted to build a tool to make the process more fluid. In the process of learning programming, he realized he could join his new found passion with his established career and freeCodeCamp was born. Since its inception in 2014, more than 40,000 people across the globe have gotten jobs at leading tech companies, over 7,000 tutorials have been created and countless dreams have been realized. In this conversation, we speak about the “aha moment” that inspired freeCodeCamp, the hard work it takes to keep it going and growing, and the hopes for its future.
But first, as always, we wanted to know what Quincy’s first brush with technology was like.
Quincy: My parents liked technology and they thought it was good to have a computer in the house. So when I was six or seven we got an Amiga computer and so I just remember loading up the Amiga and having all the floppy disks and stick them in there and playing old video games. There were some other kinds of cool things you could do. You could go to a software store and for like five bucks, you could get music related software or software that could teach you how to type and things like that. That was my earliest memory of computers.
Neha: Do you remember any of the games or any specific software that made an impression on you?
Quincy: Yeah, well, I played this game called Shadow of the Beast on Amiga and the music was amazing and the graphics were just so beautiful. And that was one of the games that really like, "Wow, this is like a movie." This was way back in the '80s when they figured out how to really stretch what you could accomplish with the limited hardware. It was a work of art, in my opinion. A lot of those early psygnosis games. People who are making those really cared and it really came through in the finished product.
Brian: That's cool. Yeah, I think of the floppy disk and I think of games like Oregon Trail and some of the earlier... I think in my middle school we had a couple old computers. I was part of the gifted program so they just threw a bunch of all the Lego stuff and the old computers in front of us so I ended up catching up on that in school later on. But I definitely remember those times.
Neha: While Quincy loved video games and saw the beauty in them, he didn’t necessarily grow up immersed in tech. And he never thought he would be a programmer. When it came to his adult years, teaching was the initial, and somewhat unexpected, direction that life took him in.
Quincy: When I was doing undergraduate work, I was working in newspapers and I originally thought I was going to be a journalist or that's what I wanted to be. I was working at a bunch of different newspapers around the city.
I grew up in Oklahoma City and a lot of parents would be like, "Hey, you're good with writing and literature and stuff," because I was an English major, "can you teach my kids?" So I would just drive around to, I guess, the richer neighborhoods and stuff and homeschool their kids.
I'd won this award for journalism about this piece I'd written and so a lot of parents had heard about me in the Oklahoma City area and they’d have me come over and teach their homeschool kids. That was where I was like, "Oh, wow, I really enjoy this.” I don't really like teaching kids that much but I enjoy the notion of teaching.
After it became clear that journalism wasn't going to be a great field to go into, this was right around the year 2002 or so, I was able to figure out a way that I could go study abroad. After I finished my undergrad, I moved to China and I did an intensive Mandarin program and then I did a graduate degree there. And while I was there, I worked with lots of expats from Brazil and other countries, engineers, and just teaching them English. That's how I got really into not just teaching but specifically teaching English as a second language.
And then when I moved back to the States a few years later, I was able to get a job as a school director based largely on the fact that I got a graduate degree in business administration in China and then I've also spent a lot of time teaching ESL in the field, so to speak.
That's how I got into teaching that parlayed into administration and then I worked as a school administrator for about five years.
Brian: Yeah. That is amazing. I'm just having the “aha moment” in my head when you said that you got awards for journalism, you had an interest in journalism. It's funny because one of the folks who helped produce the podcast on the GitHub side used to work at Medium and as soon as your name was brought up, they're like, "Oh, yeah, this is the guy who had this huge Medium organization for freeCodeCamp."
I have to say the epiphany that I'm realizing why that exists makes so much sense today.
Quincy: Thank you. That means a lot to me.
Brian: Curious. It might be already known information out there, but you don't have a computer science degree. What drove you to start something like freeCodeCamp? What was the path to that direction?
Quincy: I was some 30-year-old dude sitting in an office in a suit and running a school. I've been running schools in the United States and in China. And I've been a teacher for the past 10 years or so and I just wanted to help make my school more efficient.
Of course, I was bad with technology. I'd always asked my wife to help me configure the WiFi router because it was intimidating and frustrating and I just didn't have the patience for it. This was one of those occasions where I'm like, "I'm getting really tired of entering the same information, the spreadsheets each month, and I'm sure my teachers are getting very tired of this and the students want to spend more time with the teachers but the teachers are having to spend so much time doing back office stuff." Like visa-related stuff or stuff related to grade reports, those things. I was like, "Let's just do some Google searches. Let's figure out how we can offload some of this work to computers."
That was what really inspired me and I just started doing Google searches and before I knew it, I was learning AutoHotKey and Visual Basic that runs in Excel and stuff like that and just trying to automate things. And it was so powerful once I got some of those things working. It changed everything about the school because the students and the teachers were able to hang out all the time and the computers were doing a lot of the tedious stuff and the teachers got to teach.
That's when I realized like, "Wow, just some guy who knows almost nothing about programming was able to make a difference." And that's when I realized I really want to learn how to code properly. So I worked as a software engineer. I spent seven or eight months just learning to code on my own and that was grueling and I was just hanging out at hackerspaces around people that were 10 years younger than me, trying to make presentations on different topics and trying to learn all these different things and going to hackathons and being by far the oldest person on the team, usually.
That experience was very humbling but I learned a tremendous amount and then I was able to parlay that into working as a software engineer and ultimately deciding I want to help other people be able to make that transition that I just made and make it less lonely, less ambiguous. And so I created a lot of different tools for trying to do that and nobody really cared about them, but eventually freeCodeCamp, I created that over the course of a weekend and set up the Node.js server and started tweeting about it and people actually did care and they started coming and hanging out, sticking around, and then eventually they started contributing and expanding it and then people started getting jobs.
Neha: That’s such a remarkable story. Quincy had an idea, decided to pursue it, and people responded immediately. We’ve heard from other guests that the desire to automate a task, save time, or make room for more valuable work is what led them into programming. Often this follows an “aha moment.” When was Quincy’s?
Quincy: Yeah, I think it was probably around midnight because I just ate, slept, and everything at that desk. For that first period, it was like... And I worked all the time anyway. I've always been a compulsive worker which is probably good over the long term.
But I remember that it was probably midnight. I was always the only person at the school at that hour and I was probably just in the dark trying different commands and trying to grok the relationship between different things that I was trying to accomplish. I don't remember a specific light bulb moment but I know that it probably came late at night. And there were many in rapid succession because that's the thing is you get one small win and then that win carries you into the next one and you just start to build up this momentum.
Brian: Yeah. That's an excellent statement which is, it's never going to be harder than it is now. Because the other statement I hear all the time is, you don't know what you don't know as an engineer. And then once you actually start putting the processes of learning or even finding the Stack Overflow questions or the documentation, then you're golden. You're moving on to your next failure which in programming, it's a series of failures until you succeed.
I'm curious. You got the light bulb moment eventually—sometime midnight—quite a few years ago. What pushed you towards development? Because you spent a little bit of time as an engineer, is that correct?
Quincy: Yeah. I wanted to actually learn how to do software engineering properly before I tried to go out and teach people because I think the world already has enough teachers that don't understand what they're teaching.
Most of my software engineering experience is actually building and maintaining freeCodeCamp itself. I spent a year working as a proper developer on a team doing Ruby on Rails development, practicing Agile, doing all that stuff, and that was invaluable. I frequently go back to lessons that I learned.
I often tell people like, "You're going to learn a whole lot of programming on your own. You're probably going to learn a lot of programming in school if you're doing a CS undergrad or even if you're just taking a few programming courses while you finish your degree in something else. But the real learning happens once you get on a team and you're actually actively contributing to a large legacy code base that has a lot of people creating stuff and it's not just your own personal project that you understand where everything is, you understand the perspective of the person who coded that component because you are that person."
I think the closest approximation to working on a team on a big legacy code base is contributing to open source which is why I always encourage people to get involved and contribute to open source early and often.
Brian: It’s true. Programming is no different from learning any skill: You have to practice. While Quincy did get a job for a year, he really honed his skills through building freeCodeCamp. Writing the code wasn’t the only skill he needed to learn. In retrospect, that seemed like the easy part.
Quincy: The hardest part of getting people of any startup or in our case, a nonprofit public charity, the hardest part of any of that is just getting initial traction, getting people to care that you exist. The default disposition of the universe is indifference, so you have to work really hard to break through and get people to like, "Oh, this actually seems like something I should click through on my coffee break and read about," or "I should join this community and say ‘Hi.’"
In the early days, we used HipChat which was at the time really pretty cutting edge. This was pre Slack. And I would just stay in that chat room all day every day and anytime somebody came in, I'd be like, "Hey, how's it going? Tell me all about yourself. Tell me about what you're learning, what your goal is." Just learning as much as possible about every single person who walked through the door.
Most of those people would be very polite and I'd learn a little bit about them and they'd leave and probably wouldn't come back because as you'll learn, if you haven't already learned this, when you create a new website or a new product or service or anything like that, most people are going to try it and their initial enthusiasm will be there but they won't necessarily remember it and they'll leave and then they won't come back.
So the early days were basically me... We were going to build it in Ruby on Rails but at the last minute, I was like, "Well, since we're teaching Node.js, we should build it in Node.js." So I scrapped the Rails prototype which... Rails is great and all, but I just didn't want to be building it in a different tool that we were teaching because, ideally, we want open source contributors to be able to take the skills they've learned and go and use those to fix freeCodeCamp itself.
I had to learn a lot of stuff and I'm sure a lot of my embarrassing misunderstandings about how Node and Express work are baked into the code base somewhere, if somebody wants to find embarrassing commits that I made.
But basically, it's learning, flying by the seat of my pants. I was in San Francisco so I would go to different events like hack nights and stuff and basically, it was just a pretext to be able to get experienced Node developers to look at my code, give me feedback. And all the time, I'd be in the chat room eating the free San Francisco event pizza and talking to people and like, "Oh, yeah, this is really cool. Oh, somebody jumps in chat. Let me greet them."
It was this weird... It was like 120 hour weeks. I would sleep then I would get up and just go back out there. Every night of the week, I was at a different meetup. Whenever I got a chance to introduce myself, I'd be like, "freeCodeCamp.org." Just trying to build critical mass anyway I could.
I was like a hustler in a city of hustlers, people who are willing to put in tons of time and energy to try to get things off the ground. I'm all for working 40 hours a week and getting plenty of sleep and getting plenty of exercise. If I could have done that in the early days, I would have done that but I don't think that if I was trying to pace myself, we would have been able to reach that escape velocity where people actually cared and stuff. I do think to some extent you had to burn to shine early on.
Yeah, it was just a frenetic, chaotic... I didn't know a lot about DevOps and stuff. The server would go down and I would just have to drop whatever I was doing, get on WiFi on my laptop, and try to send it back up and sometimes we go down multiple times a day and we'd be talking like, "Oh, you should check out freeCodeCamp." "Oh, it's getting this error." "Oh, hang on one second."
It was really bad. But the tools even in the seven years since freeCodeCamp started, the tooling has come along so well. There's so many different tools you can use to just stand up a prototype and accomplish a lot of what I was doing with low code or no code. It'll still be a lot cheaper at scale if you actually code it yourself. You'll have a little more flexibility. There are limits to low code, no code, but I do think that they represent a good rapid prototyping tool.
There's better community tools than HipChat. No offense to the HipChat team. It was really good at the time. I haven't used it in a while.
Brian: I wanted to touch on some points too as well. Seven years ago, it was an interesting time. If we paint the picture of San Francisco seven years ago it was the beginning of this new wave of web bootcamps and what's interesting about that statement I just made is that a lot of those bootcamps are not around anymore. Can we talk about how freeCodeCamp sustained itself for that seven years but also, while you saw left and right as these other bootcamps say, "Okay, we're done. Are we getting acquired and consolidated?"
Also, full disclosure. I used to work for a VC backed boot camp quite a few years ago that's no longer around. It was acquired and then acquired and then disappeared.
So, I guess my question to you is how did you sustain that for the past seven years? Or how are you still sustaining it today?
Quincy: Yeah. Well, bootcamps were always kind of a separate phenomenon that I've thought was mostly for people who had means, people coming from finance industry or some other field, law, that were interested in learning to code like time is money and if you are in a hurry, you could do a 12-week or 16-week thing and then you could potentially be able to get a job faster.
And there were some really good bootcamps. I don't know too much about the state of boot camps these days, but I'll tell you that freeCodeCamp even though we have the word “camp,” it's actually from “code camp” which is a more conventional term that was popular with schools would have code camps and stuff like that.
We just want to emphasize that because we were online, we were free. It was always… the people who would use a coding bootcamp were always a separate demographic. Most of the people who use freeCodeCamp are not in the U.S. So even if they wanted to attend General Assembly or Hack Reactor, App Academy is a good one—they wouldn't be able to because they would not have a visa even if they had the funds to attend one of these and they were expensive, even back then.
We really just wanted to... We'd likened ourselves much more to a learn-to-code type website, if that makes sense. There were a lot of those types of websites that were focused on just helping people wanting to code. Some of them were video based, some of them were interactive. We're, at our core, interactive. The core curriculum is 100% interactive and that's one of the reasons it's taken so long to build it and maintain it and extend it. I can talk about that a whole lot if you want to hear about that.
But because everything's interactive, it's 100 times harder. Text is pretty easy. Videos are 10 times harder than text. And then interactive is 10 times harder than video. That's how I think of it. And I say that because we have 7000 plus text-based tutorials, we have more than 500 full length courses on YouTube. So we have a good idea of how hard those things are and the interactive one has just been really brutal.
But I think because everything's done in the browser because you can access it from anywhere, freeCodeCamp is incredibly popular in India, is incredibly popular in Nigeria, Kenya, Bangladesh, places where there are lots of people living off less than $10 a day and that's about half the people on earth live off less than $10 a day. You can use freeCodeCamp on a commodity Android smartphone that you bought for 50 bucks.
We're working on an Android app that is going to make it work a whole lot better using the native Android functionality using offline mode for people who have intermittent internet access, who don't necessarily have stable power. We have people on the freeCodeCamp team who live in a place where they have to ration power periodically and like, "Hey, I have to go offline for a little while." You know, that happens, right?
Our key principle is access. We want people to be able to have access to this information regardless, and a big part of that is the hacker ethos of the '80s and the '90s: Information wants to be free. Trying to live that and really, not only should information be free but it should be convenient not like PGP and IRC and stuff like that where yes, if you know what you're doing, you can do it but we really wanted to bring it right in the browser where we could have a friendly on ramp for absolute beginners, you know.
Neha: Yeah, removing all of those barriers that we typically see. The “if you know, you know” kind of rule—removing that.
Quincy: Then accessibility to things... Just making sure that people who have visual impairments can use it in screen reader mode without any problem, Just all the different considerations. Color contrast and using extremely clear English that is as basic as it can be for the vast majority of people who are non-native English speakers.
The biggest thing we've been doing for the past year and a half or so is localizing into other world languages like Hindi, Bangla, Japanese, Chinese, Spanish, and Portuguese, Arabic, things like that. It's going to be a long time to get all 7000 tutorials translated into all those different languages because we're doing human translation. But yeah.
Neha: That's so exciting.
Brian: freeCodeCamp is widely used across the world thanks to its focus on accessibility. Quincy put a lot of thought into getting people together, in person, to learn and grow. One way he was doing that was through meetups.
Quincy: When you're freeCodeCamp and your budget is almost nothing and you rely heavily on thousands of volunteers around the world. You don't necessarily have the means to get a proper hackerspace type space so we rely heavily on using existing local employers where there are makerspaces or hackerspaces, we try to partner with them. A lot of that is done just on the ground level between people who know one another in Seoul, people who know one another in Shanghai, people who know one another in Warri or Lagos or some of these other cities around the world.
That's been a big surprise, just how that organically bubbled up. But we're extremely proud of that and we historically have recognized study group leaders and had a big directory and everything and whenever I get a chance to travel, I try to travel to different countries and visit the study group leaders.
Brian: Yeah. Looking forward to what you're working on. You called it Chapters, was it?
Quincy: Chapter, singular, is the name of the tool.
Quincy: Yes. We have had some organizations make grants for freeCodeCamp and we usually use those grants for creating a big course.
We have people who donate to freeCodeCamp. We have about 7000 people around the world who donate $5 a month and that's the main way of sustaining the organization.
We do have a team. Most of that is localization now because you want to have a native speaker of every single language that you're trying to target.
But we don't have the means to have representation in every single language in every single culture. But everyone that we're consciously proactively trying to court, we want to do it right, if that makes sense.
That was a big thing for us. We've learned from the hubris of other people not to just charge into globalization without having help on the ground, so to speak. We've got people in virtually every time zone and every continent except Antarctica.
Our goal is to have a combination of volunteers and also have people who are on freeCodeCamp’s payroll—our meager payroll—but who are accountable. We wouldn't give SSH access to a server to a volunteer. We wouldn't give access to a Twitter account to volunteer, for example. We want to have responsible people who sign a contract with freeCodeCamp so that accountability mechanism is there.
Neha: A really important part of freeCodeCamp’s growth is Quincy’s intuition. What makes communities work, what makes education work, what makes it stick, and how to get people to come back. I was curious what the corollaries are between what he experienced in education and what he’s seen by growing freeCodeCamp.
Quincy: There are so many things...But a lot of my intuition was just from being a passionate self learner and from hanging out with people at the Santa Barbara Hackerspace. And meeting people at hackathons who were working their day job but dropped everything and worked all weekend to try to build something for a hackathon project and they're going to stay up all weekend, not sleeping, coding on this project or coming up with ideas, doing user testing, things like that. And then they're going to not sleep very much and they're going to go back to work and they're going to work a full week—that kind of dedication, that kind of commitment to bettering oneself and learning. For me, it was just incredibly inspiring. I was like, "How can we channel that? How can you get the intrinsic learners?"
But basically, if you're intrinsically motivated, freeCodeCamp is a great place and it's designed for intrinsically motivated people. If you need some motivation, I would encourage you to join a study group or look at more traditional educational systems or do a buddy system, a cohorted thing, whatever works for you. But if you are intrinsically motivated, we're here for you and this is for curious people by curious people.
Most enterprising people who would have started freeCodeCamp before me were probably trapped with a visa that wasn't very good to travel to... A lot of people can't even get a visa to the U.S. even if they have high skills and stuff. There were just so many barriers and things like that.
So I just want to emphasize that I view myself as just incredibly lucky and at the time, software development, there was rising crescendo of demand for software developers at the same time as major employers like Google, Apple, Microsoft were basically saying, "Hey, we're not going to look at university degrees as a requirement anymore. We're going to just assess candidates on a wide variety of different topics."
That opened up the door for people who didn't have traditional software engineering backgrounds to potentially be able to get jobs as developers and that's always been the case, but now it's more formal. It's a tacit admission that some of the best software developers of all time probably didn't have a computer science degree. Now, there are a lot of people who did, of course. But it was just that confluence of factors that made it possible to create freeCodeCamp.
I think having the humility to realize that sometimes it's better to be lucky than good. That keeps me up late at night because I realized just as I've been lucky, we could be unlucky, and a whole bunch of misfortune could befall freeCodeCamp and the community could fall. It just keeps me humble.
Neha: Absolutely true. Privilege is such a huge part of being able to get to the point where you're able to create these opportunities for other people. There's also a sense of tenacity, right? Having a belief in an idea and feeling like you can go with your gut and you have something real going for it, I feel like that separates a lot of people. You have a good understanding of the problem and you're going for it. I'm curious if you have any inspiring stories that you saw along the way that made you realize you're on the right path?
Quincy: Yeah. For example, there was a guy who was in the Army bomb squad, U.S, Army, and he would disassemble bombs for his day job and the way he would de-stress was he would sit down and learn to code. He did a lot of early development on freeCodeCamp and was really an inspiring figure in the community. I don't think he went to university or anything. He just enjoyed doing that. And then after he did that for a while, he was able to get a job at a big software engineering company.
And then we had another gentleman who is completely blind. He was born blind and he was using freeCodeCamp through a screen reader and he would come back with accessibility suggestions and things like that. He wrote a series of articles after. He’d done a lot of talking about, like, what it was like trying to code while he's blind. And ultimately, Microsoft flew him out to the U.S. from Europe to do a bunch of consulting with them and help improve the accessibility of some of their tools. That was inspiring.
And then just, lots of people who grew up in rural settings in India, Brazil, getting jobs and being able to provide for their families and things like that. That's been really inspiring just to see. At this point, there have been more than 40,000 people that I can say definitively have gotten a software engineering job after they completed at least one freeCodeCamp certification. We have about 700,000 people in the LinkedIn alumni network but I'm not sure how many of them already had a developer job before they started using freeCodeCamp because a lot of people use freeCodeCamp to extend and maintain their developer skills.
Brian: Yeah, extremely impressive. I'm just really honored to be able to sit with you, again. We've met before this, but one thing in preparation for this conversation… I do a lot of work with open source, maintainers, and projects, and freeCodeCamp is in the top 10 of top open source projects on GitHub. I don't know if anybody's ever told you that face to face. But this educational resource, obviously, people have resonated with it, they contribute back, so again, what you're doing is awesome. I hope folks are inspired from this conversation and will just give their time, their money, their effort to keep this thing sustained.
Neha: So, what's the future? What's the future of freeCodeCamp?
Quincy: Yeah. Our hope is that this can be a multigenerational spaceship that we can build like some sort of endowment like most big universities have and we can just secure freeCodeCamp's future so that we can keep the servers running, we can keep the infrastructure there for volunteers that continue to contribute. We keep the core dedicated staff who are overseeing the mission and making sure that things run and that we continue to cover more and more topics.
My long term vision for freeCodeCamp is like Wikipedia but for structured learning where Wikipedia is great if you want to learn some facts like every time I watch a movie, every time I read a book, I always go and read the Wikipedia entry afterward. It's like the nice dessert finish.
But if I want to learn a more complicated skill, if I want to learn linear algebra, then that is probably like reading a textbook or maybe watching a whole bunch of different video courses. Maybe if I'm lucky, there are interactive courses around that I can use.
Yes, it's great to have tons of learning resources but we also want to make sure that there's a good free one that is open source. The old open source attitude that with enough eyeballs, all bugs are shallow. We really do want the curriculum to continue to evolve and progress as people step in with suggestions. As teachers and learners come, like, "Hey, this would be a lot clearer if we had this." It's just this tiny little process of tiny little things gradually improving but that's...
Wikipedia is basically a giant modern marvel thanks to tiny little efforts in lots of different places around the collection of articles. And we similarly want the same thing for structured learning and curricula.
Neha: That's incredibly inspirational. Just personally, I wanted to thank you because you've solved a really hard problem and you've been doing it successfully for so long and I think it's a really powerful story and I'm just really appreciative that you were able to share it with us.
Quincy: Absolutely! Thanks everybody.
Brian: It was great speaking with Quincy Larson and having him on the ReadME Podcast. To learn more about Quincy and his work, please visit freecodecamp.org. I am Brian Douglas, aka bdougie.
Neha: And I am Neha Batra aka nerdneha. The ReadME Podcast is a GitHub podcast that dives into the challenges our guests faced and how they overcame those hurdles. In sharing these stories, we hope to provide a spotlight on what you don’t always see in the lines of code, and what it took to build the technology that inspires us all.
Brian: It’s been really great spending time with you. The ReadME Podcast is part of the ReadME Project at GitHub, a space that amplifies the voices of the developer community: The maintainers, leaders, and the teams whose contributions move the world forward every day. Visit GitHub.com/readme to learn more and sign-up for our newsletter. Each month the newsletter will highlight new stories, best practices and opinions developed for The ReadME Project, as well as share great listens and reads from around the universe.
Our theme music has been produced on GitHub by Dan Gorelick with Tidal Cycles. Additional music from Blue Dot Sessions.
The ReadME Podcast is produced by Sound Made Public for GitHub.
Please subscribe, share, and follow GitHub on Twitter for updates on this podcast and all-things GitHub. Thanks for listening!