What’s up, everybody? This is Courtland from IndieHackers.com and you’re listening to the Indie Hackers Podcast. On this show I talk to the founders behind profitable internet businesses and I try to get a sense of how they got to where they are today. How do they make decisions both in their personal lives and at their companies, and what exactly makes their businesses tick? The goal here, as always, is so that the rest of us can learn from their examples and go on to build our own profitable internet companies.
Today I’m talking to Quincy Larson, the creator of freeCodeCamp. Quincy was once a school director, who turned into a self-taught software engineer, and decided he wanted to teach people how to code in a way that’s much more effective than the way that he learned himself. Today his platform, freeCodeCamp, has turned into a community of millions of people from all over the world who are learning to code together.
So Quincy, welcome to the show and thanks so much for coming on.
Absolutely. Thanks for having me, Courtland.
So we’ve got a lot of people listening who are eager to start their own internet business but who don’t know how to code. And they’re not sure if they should learn, they’re not sure where to get started, they’re not sure if it’s even possible for them to learn successfully in the amount of time that they have.
So let me just ask you right out of the gate here, Quincy: What should these people be aware of, and what are some of the secrets behind successfully learning how to code?
Well, I tell everybody who’s learning to code there are two things you should start doing immediately. One, you should try to carve out at least 30 minutes a day to just sit down and code, and that’s every day. Try not to take any days off. The reason for that is the speed of forgetting is quite rapid, and you definitely don’t want to backslide by taking a day off. So even 30 minutes a day can make a huge difference.
The second thing is to hang out with other people who code. You can go to hackathons, hang out at Hackerspaces, go to tech talks in your city after work; anything you can do to meet other people. There are freeCodeCamp communities in most major cities around the world. You can go and hang out with them and code.
That’ll give you the positive social peer pressure to keep moving forward and also help you build your network, so that when you try to go out to get a job, you’ll already know a whole lot of people. And they may be able to say, “Hey, my company is looking to hire somebody. Why don’t you come interview here?”
I love that advice about creating positive social pressure, and I think the same applies to entrepreneurs actually. It’s so tough to build a business completely on your own. So ideally, you can meet and surround yourself with other founders and likeminded entrepreneurs who can help you stay motivated and accountable and create some sort of positive feedback loop that you can get from your environment.
Let’s talk about freeCodeCamp, because you’re teaching people to code at a scale that I’ve never seen before. Just how big is freeCodeCamp, and how does it all work?
freeCodeCamp.org, the core learning platform, almost a million people use it every month. And then we also have several other places where we publish helpful learning content, publish video tutorials on YouTube, we publish lots of technical articles and how-to articles on the freeCodeCamp Medium publication, and then we have a freeCodeCamp podcast as well.
And basically, it’s just a large open-source community where we have tons of contributors, more than a thousand, that are creating different resources and sharing them with one another.
That’s a ton of stuff, and I can’t wait to get into the story behind how you actually start and where you actually start if you want to build an organization that does so many things.
But before that, can you share with us a little bit about your business model? How do you make money, and how much money do you make?
freeCodeCamp is a 501(c)(3) nonprofit. We’re classified as a public charity in the United States. And what that means is basically anybody who donates to freeCodeCamp, their donations are tax-deductible. So we have a lot of people within the freeCodeCamp community who set up recurring monthly donations. We have almost 4,000 people who are donating $4 or $5 a month. I think the average donation is about $4.50. So if you do the math, that’s about $20,000 a month that we have for a budget.
That’s going to be interesting to talk about, because I tried donations when I first started Indie Hackers. And it did not go over well and made hardly any money at all. So I’d love to pick your brain about how you actually got that to work.
Before we get into that, let’s talk about how you started freeCodeCamp. What gave you the impetus to even create your own company like this?
I was working as a teacher and a school director for the first 10 years of my career here in the U.S. and in China. And I didn’t know how to code; I wasn’t technical at all. My wife would set up the WiFi router every time we moved because I just couldn’t figure it out. And I just didn’t have the patience or the desire to really dig deep. I was very much just a consumer of technology like everyone else is and not really a producer of technology, if you think of developers as that.
And we were at the school, and I had a staff of a dozen or so teachers and a bunch of admin. And they would spend a big chunk of the day chained to their desk doing paperwork, doing various back-office workflows. And I thought, “This isn’t really helping the students that much. I bet the students would be a lot happier if they were able to get in more facetime with these teachers and administrators.
So I just started Googling around and figured out a few basic ways that I could automate a lot of these processes just using basic scripts that run in Microsoft Excel using a tool called AutoHotkey on Windows to programmatically click on different form fields and fill in different forms.
And just by doing that with my very cursory understanding of even the most fundamental programming, I was able to save a considerable amount of time for my admin staff and my teachers. And they were able to spend a lot more time with students, and our school became basically the most popular in the entire school system. A bunch of people were transferring in because they just had a much better experience there.
So that was really when I realized, “Wow, just a little bit of technical skill can make such a huge difference.” And that sent me on the journey to – at first I was just going to build a school management system that would automate a lot of these things, and it’d be like a formal software tool that you could deploy.
But I decided that, instead of doing that, I really needed to learn to code first, and then I’d be able to build a better tool. And along that journey, I realized how hard it was to learn to code and how there wasn’t a lot of clarity. It was a very ambiguous process, and it wasn’t really clear what should be learned in what sequence and what should be learned at all. And slowly the idea of creating a curriculum emerged.
It’s interesting to hear how you stumbled onto this problem and came up with a solution, because entrepreneurs are always in search of valuable problems that are worth solving. And it’s also interesting to hear that you describe yourself as not really being a technologist, and yet you had such a systematic and engineering-minded way of making your school more efficient.
What do you think it was about you that allowed you to see this problem that others weren’t solving or others were just accepting the status quo?
I was really passionate about our school, and I just was very bent on making it the best school it could be. I felt that the students really deserved for the school to be amazing and that we weren’t as amazing as we could be.
And so I guess if I had to point one thing, it’d just be that I wanted a good outcome for my students just like every teacher. And that was what drove me down that path.
Yeah, being passionate about something and actually caring about the outcomes gives you such an advantage in discovering impactful problems that are worth solving.
And what’s interesting about your path is that you ended up, as you said, discovering another problem, which is that it’s very hard and confusing to learn how to code. Between both of these problems, how did you decide which one you wanted to work on?
Along the path, again, it was such a nebulous process trying to learn to code. It really drove home to me that, sure, I could write this tool that would help schools operate more efficiently, or I could create a tool that would help people create other tools. And it was that kind of revelation, where I could have a lot of impact just by teaching people technology rather than trying to build software for teachers, that’s when I decided this is something I should pursue.
So let’s talk about you learning to code, because I’m sure that the process of you deciding what to do with freeCodeCamp and how to teach other people to code was heavily influenced by your own experiences.
So what was that process like for you? How did you decide where to learn from, what to learn first, et cetera?
I was in a very fortuitous position because I’d been saving compulsively throughout my career, and I’d been doing side hustles where I’d buy a bunch of stuff on Craigslist and then sell it on eBay. And I made tens of thousands of dollars a year just doing that, so I was saving all that money. And I wasn’t sure exactly what I was saving for; maybe to buy a house in California, which in California, I think they just released the number. In order to be able to afford a median house in San Francisco, you need to be making $330,000 a year.
So I was saving. I wasn’t sure exactly what for, but I had this war chest. And so I sat down with my wife and said, “Could I quit my job, could I leave being a school director?” And she had a job, so we had benefits through that. And I was able to convince her, and she’s an amazing woman. And I’m eternally grateful that she allowed me to go forward with this, because it was years of me not having any stable income.
Basically, I was convinced that I needed to learn to code and I needed to go deep, and I wouldn’t be able to do that while I was working full time.
Now, at the time, there weren’t resources to allow you to do this, but I would definitely argue that with freeCodeCamp and a lot of the other great resources out there, it’s now possible to learn to code while you’re working full time. And in fact, I would encourage people not to quit their day job if they need the money.
So I sat down at my kitchen table, and basically, I took a photo. I dressed in a suit just to convey the seriousness of this endeavor. I was going to learn to code. And this was the first Monday after I’d left my job.
And I just bought this old Netbook and installed Linux on it, and started to learn Emacs and all these additional tools. I learned both Vim and Emacs. I learned all these Linux-related technologies that I don’t ever use. I spent an inordinate amount of time just thrashing, basically. And it wasn’t until seven months into the process that I actually built something that I was proud of, because I spent so much time just on tooling and there was just so much angst about what I should focus my energy on.
I went to a whole lot of free online courses through edX and Coursera, and I read a whole bunch of books on programming. And I would just work through those books, work through those courses. And there was a Hackerspace in Santa Barbara, California, where I was living at the time. And I’d just hop on the bus and go to the Hackerspace, sit down, and basically work from 8:00 to 6:00 every day in the Hackerspace alone while everybody else was at work. And just being surrounded by those (inaudible) and those (inaudible) and all that stuff kind of got me excited.
So I would also go to a hackathon every single weekend. I would take busses down to San Diego, up to San Francisco, wherever, and I would just sit down and try to build a team and build a product. And after a dozen or so of these, I started actually winning some. And that was really positive feedback.
But on the whole, I’d describe the entire experience, the first seven months of me coding, as just being very ambiguous. And I wasted a tremendous amount of time.
There was a happy ending. I got a job as a developer. And once I got that job, so much stuff started making more sense when I was working with a team. So working with a team, using version control, all these technologies – that really helped me solidify my understanding of software development and a lot of the best practices.
And I think a lot of that you can learn from contributing to open-source software, which is why it’s such a critical part of the freeCodeCamp curriculum. But at the time, it just hadn’t even occurred to me that that was an option.
Let’s rewind for a second and talk about some of these side businesses you started, where you were selling things off of Craigslist and eBay in order to help build up your war chest, because I had no idea about any of this stuff.
What are some of the other businesses you started, and what did you learn from doing that?
I learned a lot along the way. At one point, I bought 10 vending machines and put them around town, and that didn’t make any money. But fortunately, the guy who I bought them from took pity on me and bought them back from me, so I didn’t lose too much money on that.
But I learned that if it’s easy to do, there’s going to be a ton of competition. And you want to definitely go upmarket and put in the time and energy, because the vast majority of people won’t put in that time and energy to develop advanced skills. They won’t put in that time and energy to build a reputation for themselves. They’re just going for the quick money.
So that was one big takeaway from my very, very early experience with entrepreneurship.
What was the most successful thing that you did as an entrepreneur?
Nothing. (Laughter.) Everything was a catastrophic failure. Not catastrophic in the sense that I went bankrupt or anything, because I was always very careful not to invest too heavily. And maybe that’s why none of those projects succeeded.
With freeCodeCamp, I think I invested something like $120,000 during the first couple years just on server costs and other expenses, so I definitely had a lot of skin in that game. Now it all worked out and freeCodeCamp – we’re basically break even. And we have a board of directors, and they’ve voted to give me some compensation. So my wife is not angry at me anymore and things are going well.
Well, let’s talk about these first few years of freeCodeCamp. When did you actually start writing the first lines of code, start coming up with some sort of a plan for what you’re going to create, and get to work on freeCodeCamp as a real idea rather than just a dream?
I started with freeCodeCamp – it was born out of another aborted project, which was called Course Forward. And me and several of my friends tried to build this platform that was basically a recommendation engine for learning new skills, whatever technical skills you needed to learn. So it would pull in your LinkedIn profile and figure out what your current skills were based on your work experience and things like that.
And then you would say what field you wanted to go into. Let’s say you were hypothetically in business development and you wanted to move into machine learning. Then it would figure out, based on millions of job postings that I’d pulled out and mined, it would figure out kind of the skills you needed to know to move into machine learning were. And then I’d also pull down tens of thousands of online courses and books, and it would build a curriculum for you to advance from where you are now to where you need to be to start applying for jobs.
That’s pretty cool.
Well, that project – it turns out people don’t want to commit thousands of hours of studying to a curriculum that an algorithm generates. (Laughter.)
So it was kind of a nonstarter and nobody ever really cared about. That was one lesson I learned. I spent 18 months building out all the different features of this, and ultimately, threw 100% of that code away. None of that code is being used for anything.
And then one day I said, “Man, this was a disaster, and I can go get a job.” I had some job offers at the time; just people who’d noticed me and wanted to hire me as a developer. And I was like, “I could go get a job, or I could try this one thing.”
That first project you worked on, with the algorithmically generated curriculum, follows such a typical pattern that developers sometimes stumble into, which is that we get overly excited about what can be done, what we can use technology to do, how fun it would be would be to build it, and we don’t focus enough on whether or not it should be done. We don’t talk to people to see if they’re actually going to use it or if they trust it or if they’ll pay for it or if it’s valuable.
And so we can end up spending months, if not years, working on things that turn out just to be duds in the end. And it’s such a painful lesson to learn the hard way.
Yeah. And to be fair, I had plenty of people around me. I was in San Francisco at the time, and I was surrounded by entrepreneurs and developers. And people were like, “You should really test this with a bunch of users” or “How are you verifying that you have product-market fit, do you have any traction,” asking those kinds of questions. They weren’t asking me, “How fast is your recommendation engine, how accurate is it, how many resources do you have in the total set?” People weren’t asking things like that. People were asking about traction.
And I’d read all these books on Agile and things like that, and I just dismissed myself as, “Well, this is special. This is an exception to that because this isn’t something that people know they want yet.” And yeah, all the signs were there, but I was too naïve to admit that I was going down the wrong path.
It’s tough. It’s psychological. And you get really excited about what you’re working on, and you’ve already put so much time into it, so there’s a sunk-cost aspect of it as well. And it’s always easy to convince yourself, “Oh, just a few more features and then I’ll start testing on users, just a few more steps down my roadmap, and then I’ll be able to really show it to people, and then they’ll really like it.”
Yeah. And with freeCodeCamp, I did a full reversal. I said, “Learn to code for free. That’s what freeCodeCamp is. It’s learn to code.” It’s not learn what skills you need to be able to become a machine-learning engineer if you’re already a business-development engineer. It was a very clear value proposition, easily communicated. The name “freeCodeCamp” itself is pretty on the nose.
And so people knew pretty much what they were getting when they came to the website, and that was profound. It just cleared so much of the communication hurdles so that people could, within a couple seconds, which is almost what people will give your website, to determine whether this was something that was worth their time.
How long did it take you to get up this super-minimal first version of freeCodeCamp?
So I had a closet in my one-bedroom apartment that my wife and I lived in in the Bay Area. And I would go in there, because it was the only quiet place, and I’d just sit in there, microwave some burritos, and I think I spent three days just in that closet on my little Ikea table building out the prototype.
And how did you find your very first few users after you finished building this?
At the time, I think I had 10,000 Twitter followers or so, so I was just tweeting maniacally and messaging people like, “Hey, I was telling you about this other project. Now I’ve got an even cooler project. Check this out.” Just me personally reaching out to people and doing that, I was able to get a decent number of people to come and try it.
And the thing was it was fairly sticky. That was the magic, was people were actually sticking around. They were creating accounts, they were working through the challenges and marking them complete. Because back then, they weren’t interactive with a test suite and everything that ran against your code. It was just self-reported like, “Yeah, I just completed this course over on Stanford’s online course page. And now I’m back here, and I’m going to tackle this next one, this CS50 course from Harvard” or whatever.
So people would report that, and then the chatroom started buzzing and people were tweeting about it and stuff like that. And that’s kind of how I know, “Okay, this is different from last time. This isn’t crickets. This is actually people who seem to care.”
Then I wrote some articles just about my own coding journey and other ideological stuff about why people should learn to code. And several times I was on the top of Hacker News and Reddit and places like that. And that just drove even more traffic. And of that huge influx of traffic, a lot of those people stuck around. So that’s kind of how we got the early critical mass.
Those are two things that a lot of entrepreneurs really struggle with; first driving that initial traffic and getting your first few users or customers in the door can be difficult if you don’t already have an audience and you don’t know how to reach somebody else’s.
Second, building a sticky product that users actually want to come back to is so difficult. And I think the typical story is that somebody will launch, things might go well, three weeks later they look up and nobody is using their product.
What was it about freeCodeCamp that kept people coming back? In part learning how to code is a long journey, so you really have to come back and be a repeat user if you want to be serious. But do you also think it was crucial to have specific features like the chatroom and the social aspect that that provided?
I think the chat definitely helped. And now we’re more emphasizing our forum than we are chat just because people are busy and they don’t necessarily have time to sit around and chat all day. They just want to get their answers and move back in coding. But that chatroom was absolutely critical early on.
And there was a community that formed up there, and we would hang out, and I’d spend all day in there just greeting every single person who came in, asking them about their goals and their aspirations. And a lot of people gradually, from within that chatroom community, started contributing to freeCodeCamp because it was open source. And as a result, it kept getting better.
So early on, I realized that there was this relationship, like the resources help train people in the community, and then they turn around and they improve those resources. So it’s a virtuous circle of freeCodeCamp getting better. And the better it gets, the more people come and the more people want to contribute.
It seems like you got a lot of things right out of the gate. You had a great content strategy, you pretty much nailed down your messaging that was appealing to people, you had a way for your product to be sticky, you even had a way to ensure that your product could grow and improve without all of that work falling onto your shoulders, because you were capitalizing on the efforts and help from your users.
How much of this was stuff that you planned out in advance based on your learnings from earlier failures, and how much of this just kind of went right incidentally?
Reality is very complicated. I think that luck plays a massive factor in pretty much anything, and I attribute most of my success to just luck.
I definitely was able to capitalize on that luck when I saw a huge community forming and like, “Hey, everybody, let’s really clarify the contributing done (ph) and B file (ph) on Github. Let’s really spend a lot of time getting on” – at the time, we were using a tool called Screenhero – “getting on Screenhero sessions so I can help people get set up.” And, “Hey, why don’t you work on this? What are you interested” – I would ask people, “What are you interested in?” And then based on that, then they would respond, and I would turn around and say, “Well, we’ve got this that you can work on.”
So matching people’s work to their interests was a critical thing that I think I got right. And the fact that it was clear that this was always going to be free, because I said publicly, repeatedly, “This will always be free, this is open source, the genie is out of the bottle. We’re not going to turn around and profit at your expense or anything like that.”
And I think because of that, the interests were aligned. Everybody wanted to be a part of building this, what I like to look at as kind of the Wikipedia for structured learning as opposed to Wikipedia for facts, which is what Wikipedia is. We’re hoping that freeCodeCamp can gradually become that place where you learn specific skills.
Yeah, let’s talk more about this open-source community that you’ve got going on. You’re very involved in actually interacting with the members of your community and recognizing their skills and directing them to contribute the most effectively to freeCodeCamp’s development.
How can other people do what you’ve done and grow their own communities full of people who help them build their product?
A lot of it is just people like helping one another, and I think that it’s great. And I like helping people, and that’s why I created freeCodeCamp. And you can harness that desire to help one another, especially that non-reciprocated, no-strings-attached, “Here you go. This is what you’re looking for, right? This answers your questions? Does this get you unstuck,” that sort of interaction. You can put it on our forum, for example, or in chat people can ask for help with different things. And suddenly, you have this huge community of people who are turning around and helping one another.
And it helps a lot that freeCodeCamp is a single, linear curriculum because it’s kind of like the Appalachian Trail; people who’ve been down that trail before and they can tell you what’s up ahead. So it’s easy to turn around and pass knowledge back to people that are right behind you.
So that progression, I would say, was an unintentional structure. I didn’t design it to be optimal for helping other people, but that was an emergent property of the curriculum.
Yeah, that’s fascinating. And I think another benefit of this linear progression is recency. If you’re sort of helping to improve these lessons that you just now finished, then it’s fresh in your mind where you got stuck and how the lesson can be improved. And it’s not like something you’re coming back to months later. You can really do a better job contributing. So I think your system is naturally set up to be pretty advantageous for contributors.
Let’s talk for a bit about the content behind freeCodeCamp. Because you’ve been able to get numerous stories to the top of these highly trafficked distribution channels, like Hacker News and Reddit, and drive a lot more traffic to freeCodeCamp.
What’s your strategy here, and how do you do this so successfully?
I’ll tell you that anybody who says they have some foolproof way of getting on the front of Hacker News or Reddit, they’re probably going to get flagged by the mods. The mods aren’t asleep at the wheel. Mods are very aggressive, especially on Reddit. And my humble suggestion is do what I did. Just follow the rules and try to come up with compelling content and post it.
And if it’s compelling enough, other people will see it. They’ll bother upvoting it, they’ll bother sharing it, and it’ll start to build critical mass.
But it all comes back to substance. Are you saying something of substance, or are you just creating a 600-word LinkedIn-style post about some platitude because you just want to get people to look at it?
What in your mind constitutes substance, especially in the early days of freeCodeCamp? Because I know that you’ve produced a ton of content since then. Were you thinking about what you wrote differently back then, or has your opinion more or less been unchanged?
For the freeCodeCamp community, there are two types of articles or videos that really do well and really resonate with our readers and our viewers on YouTube. And that is, one, the really strong technical article that is written to be as understandable as possible. The author is not trying to showcase that they’re a quote/unquote “real developer.” They’re taking time to break down things and they don’t assume too much of your current knowledge.
And then the other type of content that works really well with our community is just anecdotal stories, where somebody talks about how they encountered a certain situation and how they progressed, like somebody’s first hackathon experience or somebody’s first open-source project, or somebody who just got a job, or somebody who had a failed interview at Amazon or Google or something, and then went on and got a job at Microsoft.
So those kinds of stories do really well.
How do you envision these stories and content in general fitting into the overall strategy for freeCodeCamp? Is this all stuff that you do to drive traffic and get more people taking your courses, or does it also fit into what you’re doing in other ways?
Primarily, it’s a way that people hear about freeCodeCamp and see it repeatedly. You can only get to the front page of Hacker Noon or Reddit so many times with just your core product.
But if you are creating a whole lot of relevant content around that central problem that you’re addressing – in our case, helping people learn to code and get developer jobs – then there are so many different angles you can take. And people are going to read it over and over, they’re going to read stories in your publication or on your blog, or they’re going to watch YouTube videos repeatedly.
And each time, they’re going to see your logo and they’re going to understand that it’s associated with a greater organization. And over time, they’re going to think, “What’s this freeCodeCamp thing about? I keep seeing it everywhere. Maybe I should check it out.”
And that fundamental interaction of it’s the fiftieth time you’ve encountered the word “freeCodeCamp” written on something, and you’re finally curious enough to actually go check it out, that’s exactly why content is so important, not just for keeping the current people who are already in your community engaged and learning and benefitting, but also for bringing in new people.
That makes so much sense. And I think a lot of founders get overly obsessed with launch, this one big day right at the beginning, but they’re not really aware of how they can use content and storytelling to sort of get their app or their product back in front of these same audiences over and over again in the future.
One thing that’s challenging is that there’s a huge variety of distribution channels and audiences and influencers you can use to reach the people that you really want to reach with your content. How have you decided with freeCodeCamp what channels to target, and how has this changed over time?
For the most part, we don’t do any spreading proactively. We just create the content and it gets distributed through Medium, it gets distributed. And we have about 420,000 followers on Medium, on YouTube we have like 270,000 subscribers. So we just publish the content and people see it, and then they go to Twitter, they go to Facebook, and they submit it to Reddit, they submit it to Hacker News.
Basically, you create the content. And if you have impressed people in the past with them seeing relevant content and subscribing, they’re going to see it and they’re going to go out and share it for you. And that’s just healthier because that’s how it’s supposed to work. You’re not corrupting a system where you’re creating (inaudible) accounts and trying to get something upvoted on Reddit. You’re not just taking a link and spamming that to your friends saying, “Hey, go to Hacker News and upvote my post that I just made there.”
Instead what you’re doing is you’ve got a genuine – you’re playing by the rules, and you genuinely have something that people actually care about and is not just going to get thrust up there and somebody’s going to be like, “What the heck is this doing on the front page of Hacker News? This is lame.” (Laughter.)
You know what I’m saying?
It’s kind of like by the rules and understanding how these platforms are supposed to work, then you can just create content that will genuinely resonate with the people on those platforms.
And Reddit is very different from Hacker News. The sort of things that we publish that do really well on Hacker News are often much more technical. The sort of things that we publish that do really well on Reddit are often much more motivational or just really cool, like security exploits and things like that, all responsibly disclosed, of course.
But those kinds of things grab a lot of attention because they’re compelling, not because we’re trying to manufacture social proof.
I think one of the challenges that a lot of, especially early stage founders, face is they don’t have a lot of time. And they’ve got a lot of responsibilities besides telling stories and writing blogposts. They need to write code, et cetera.
How do you scale up a content operation, and how do you increase the number of stories that you’re telling without taking up all of your time personally as a founder?
Number two, how do you decide what’s worth writing? You mentioned earlier that you’ve kind of honed in on two different story formats that are really effective for you. But how much time did it take you to narrow it down to those two?
If you’re truly in love with your problem that you’re trying to solve, like I’ve been for the last six or seven years, just tinkering toward something that would ultimately become freeCodeCamp and then running freeCodeCamp, you’ll have so many ideas.
I’ve got a list of dozens of articles that I want to sit down and write that I just don’t have time yet. So you’ll just get this rush of ideas for different angles you can explore things that are potentially interesting.
So my first advice would just be: Know your domain really well, and be in love with it and be constantly thinking about it when you’re in the shower, when you’re brushing your teeth, and questions will pop into your mind.
You can go to Quora and you can just see what people are asking questions about. That’s a quick and easy kind of shortcut to thinking of your own ideas. Because if people are asking a lot of questions about a specific topic, there’s a very good chance that that would be a good blog topic because people are obviously curious about that and interested in that.
Same thing if you go to a category on Reddit and see what people are talking about on a subreddit; or if you go to Medium and you just click through their tags and see what articles are doing well. There are all kinds of little things you can do like that to give you some ideas. And that can also show you what kind of content is working.
Now, you want to be careful because when you imitate something that’s working, you don’t know why it’s working. You don’t know the rationale behind why it was designed the way it was. You’re just imitating it. So that’s a little bit dangerous, and your results may vary dramatically if you do that.
But for me, it was very much just thinking about my domain, figuring out what was interesting about it, what all the different interesting angles were, and then sitting down and writing it. And I wrote a vast majority of the early blogposts myself. I don’t think we’ve ever paid any contributors or writers or anything. We’ve just given them a platform to reach a whole lot of like-minded people.
I’m curious how impactful it’s been for you to open up your platform to allow other people to contribute. What percentage of stories are written by you versus people in your community?
I think freeCodeCamp has published a total of 2,500 articles on Medium over the past three years.
And I’ve written about 500 of them.
Really? That’s so many.
Yeah, I was writing like one a day. I was writing these daily digests that Medium had a mechanism that I could email them out to all our Medium followers for a long time, and that was one of the reasons that number went up so high.
But don’t be afraid of sitting down and getting your proverbial hands dirty and writing stuff yourself and being accessible in general; all these things. I try to live like, I think, the contributors would want to see me live in terms of I’m always answering their emails and I’m always available if they want to hop on a call or something and just hash out the ideas of their article.
And we have the big volunteer editorial team, and we’ve built that up over the past year or so. And they help edit all the articles and make sure that everything is as strong as it can be, so we put the writers’ work in the best possible light while being careful not to butcher their voice in the editing process.
And that is a big value-add for people who want to get published in freeCodeCamp, is that they’re going to have a second pair of eyes on this, and we’re going to help strengthen their article, and of course, that they’re going to get distribution through freeCodeCamp’s Medium publication.
That’s a big deal, because pretty much – I think the average number of views that an article we publish on there is 5,000 or 6,000. So if you get published in the freeCodeCamp publication, on average you can expect to get 5,000 or 6,000. That’s actually the median. The mean is much higher because we’ve had several articles that have gotten millions of views.
Yeah, I’d say that’s a pretty strong argument for why people should write for freeCodeCamp.
Aside from content, what are some of the things you’ve kept top of mind while trying to grow freeCodeCamp over the years?
freeCodeCamp’s mission is to help as many people learn to code as possible. And a lot of that involves going out into places where they don’t have access to really nice universities. They may not even have great access to the internet or to stable electricity throughout the day.
So one of the biggest challenges for us is trying to make freeCodeCamp as accessible to people as possible. Now, we’re already socioeconomically accessible in the sense that we don’t ever charge anything. We don’t even have – you can access every aspect of freeCodeCamp without even creating an account. It’s all public.
You can clone the Github repo and you can run freeCodeCamp locally on a local network in prisons, and other places that don’t have internet access will often do that so people can learn to code without access to the internet. It sounds like it’d be very difficult, but people are doing it.
So we’re trying to continually make freeCodeCamp more accessible. We’re building a big open API where people will be able to pull the challenges down and be able to build mobile apps around freeCodeCamp’s core curriculum.
And we just want to empower the developer community to go out and build these things. We’d love to be able to put freeCodeCamp and a whole bunch of Creative Commons license books on a Raspberry Pi, for example, and send it to our friends in Bangladesh and other countries that may have a lot of power outages so they can run a Raspberry Pi with a low-wattage monitor off of batteries and be able to work throughout the day regardless of power availability.
Then just making sure freeCodeCamp runs really well on all these different models of smartphones, making sure that it doesn’t use a lot of data for people that it’s prohibitively expensive to download large amounts of data.
The main thing to remember is, as of 2018, half of the people in the world live off of $2 a day. It’s unfathomable for us here in the U.S. what that means, but there’s considerable challenges that a lot of these people face in learning to code and improving themselves, and certainly, launching their own companies or getting jobs at big multinationals where they can provide for their families.
So we want to help as many people as possible do that.
That’s a lot to take on, in addition to the fact that you’re producing all this content and editing it, in addition to the fact that you’re trying to improve the curriculum itself and build a successful business.
What’s a typical day like for Quincy Larson? What do you do when you wake up? And also what’s the typical week like for you? How do you divide your responsibilities up over the course of a week?
So a typical day – I have two young children. One is seven months old, one is two and a half, and they wake me up around 7:00. And I get up and get them dressed and get them fed, and hop in the car and drop my daughter off at school.
And then I just go to either the public library or I go to my parents’ house. We recently moved from San Francisco back to Oklahoma City so my kids could be closer to my parents. And one of the benefits of that is my parents are empty-nesters, and I can just kind of come up here into their attic area and record podcasts and write and code and do things like that in relative quiet.
So I’ll just come over here, and then I generally – any meetings I have, I try to book them on one day, so the rest of the days I don’t have any obligations whatsoever. And then I can just sit down and work on whatever seems to be the highest priority at the moment. And I use Sublime Text as my editor, and I just pop it open, and type out things that need to be done, and then I just sort it based on priority and work down the list. And I constantly just resort that list and delete things as I finish them. So yeah, I basically live by that little to-do list.
And then I spend an inordinate amount of time answering emails, because I get, I don’t know, hundreds a day. I send 1.3 million emails every week out to people who have signed up with freeCodeCamp and opted into our email blasts, and a lot of those people reply and ask questions and stuff. So I answer their questions as well.
It’s pretty much just fluid other than having the various meetings. And we have a staff of five people working full time on freeCodeCamp now, including myself. And we just coordinate as needed through Signal.
We love Signal because it’s encrypted and it’s convenient and they’ve got a good mobile client for major mobile devices. And we just correspond through signal. And if anything comes up, we just message one another. There’s the assumption that if it’s a true emergency, you call. Everything else is async. And of course, freeCodeCamp is completely remote. We have people in Europe and Asia and here in the U.S. So a lot of time-zone differences.
1.3 million emails a week. Do you ever get nervous to press send?
Oh, yeah. And I’ve made some mistakes and it’s been embarrassing. But we built our own tool just so I can send these emails pretty efficiently using Amazon SES. And it’s open for any non-profits or for-profit companies that just want to have high deliverability, extremely inexpensive emails. It’s called Mail for Good. If you just Google “Mail for Good,” you’ll probably pull it up. And it’s $100 to send a million emails.
That’s super cheap.
You mentioned sort of working down this to-do this. And it’s very fluid, you’re very in the moment, and you just prioritize things at the top. How do you juggle sort of the short-term focus, “What am I going to do today,” with the long-term focus of, “Where do I want freeCodeCamp to be six months from now or two years from now”?
So there’s a great quote from Linus Torvalds that I don’t think is quoted anywhere. He just said it during a talk I was watching. Linus Torvalds, of course, the creator of Linux, and I have a ton of respect for even though I don’t particularly like his managerial style, and I think he could be more professional with his contributors.
But he said, “So many people are distracted looking up at the stars, pointing up there and saying, ‘I want to go there.’ And I’m just looking down at my feet trying not to fall into the pothole right in front of me.”
So he’s been working on Linux for 20 years, and it’s just this massive software ecosystem has emerged around it. And something like 90% of the world’s servers are now running Linux. And if you consider Android to be Linux, then something like 50% or 60% of the devices out there, including laptops and stuff that are in use today, are running Linux.
So it’s really incredible what he’s accomplished, and he’s done this basically just taking things step by step and focusing on whatever’s in front of him.
Now, freeCodeCamp does have some high-level objectives, like we’d like to be Wikipedia for structured learning. Wikipedia is about 18 years into their mission and freeCodeCamp is about three, and so far I think we’re tracking pretty well with what Wikipedia was able to accomplish, but we have that long-term goal.
And we have just kind of general heuristics or rules of thumb that dictate what we do, like we want freeCodeCamp to be as accessible as possible. So whenever a situation comes up and we’re trying make a decision like, “Will this slow freeCodeCamp down, will this make it harder for people in China to be able to access different aspects of it,” those kinds of questions, then we resort to evaluating them based on our rules of thumb.
But in general, I just focus on whatever’s in front of me. And that seems to have served me pretty well so far.
Are there any ideas that you’ve always sort of been interested in pursuing but either never tried them, or you did try them and they didn’t go as planned?
The career recommendation engine. I have a vision of a future where, instead of people going to a four-year degree immediately after they get out of high school or before they even go to high school, they just decide what they’re interested in doing and they can gradually kind of spider through their career, picking up new skills just in time so that they can do whatever they’re interested in.
And I think that such a tool could emerge, but there are a lot of societal structures, like university degrees are very entrenched. And I recommend everybody get a university degree if you can afford it, just because it’s so societally entrenched. But if you’re later in your career and you’ve made it this far without one, I wouldn’t recommend necessarily going back. I’d just recommend learning some skills on the way.
But I think we can move toward a society – and when I say “society” I mean the world. I’m always thinking in terms of the world and not just here in the U.S., because 95% of people are outside of the U.S. and we shouldn’t just discount those people. The global society could move toward, “Hey, I want to learn this skill real quick. Hey, there’s this position here. How can I learn this skill” until we’ve got the Matrix where you’re like, “I need to learn how to fly this helicopter” and you can just upload it.
People are capable; people are flexible. If you think about it, that’s the core competency of human beings is adaptability. And unfortunately, the way that our education and labor markets work is very rigid and it doesn’t have to be that way.
So I’m optimistic that we can gradually move in that direction. And freeCodeCamp will hopefully be a tool toward moving toward that vision of just general mobility within the workforce.
So one of the cool things that I think makes education sort of an attractive business to be in is that there’s so many different learning styles. Some people really do like sitting down at a lecture and having somebody talk to them, or studying from a textbook, and some people want a curriculum to be personalized, some people like vides, some people like audio, some people like reading, some people take notes or don’t take notes, et cetera, some people like hands-on projects, some people don’t.
And as a result, there’s always an opportunity for you to wedge your way in and create a method of learning something that will appeal to some segment of the population. But the downside is that you’ve probably got a ton of competitors. And for everything that you strong believe about how people should learn how to code, there’s someone else who believes a different thing that appeals to some subset of people.
So how do you think about the competitive landscape for programming education, and does what other people are doing really affect your roadmap at all?
That’s a great question. And I would say that competition on a whole is completely overrated as a topic of importance. freeCodeCamp’s competition is Netflix and League of Legends. (Laughter.) It’s doing stuff that is not advancing your career and advancing your skills and advancing your goals.
So I would say that any organization that’s trying to help people learn to code, they’re not our competitors. They’re our allies because our goal is to help as many people learn to code as possible. And people aren’t going to find some one-size-fits-all solution. There are no one-stop shops. People are going to cobble together a ton of different resources. They’re going to use everything at their disposal to advance their careers and to build out their skillset so they can get whatever job they’re looking for.
Yeah, it’s great when you can join a market that’s not winner take all. You’re not trying to build a social network to compete with Facebook, where even if you do something great, you’re probably going to get squashed. You can succeed alongside everybody else, and it takes some discipline to be aware that this is the case and not obsess over the competition.
Yeah, and one thing that a lot of these organizations do is they’re out there, like Code.org, for example, or Khan Academy. These are organizations. They’re nonprofits that have hundreds of millions of dollars in total funding probably at this point. And freeCodeCamp, as I said, we’re making less than a quarter-million dollars a year in donations.
So these organizations are going out, and they’re really advocating for technology education. And they’re doing so much for us so that we can focus on the actual teaching part, the interactive coding curriculum with all the tests and all the certifications and all that stuff.
And so a lot of the advocacy, certainly the lobbying and going and meeting with President Obama, which is something that Code.org did, they were able to get President Obama to participate in one of their Hour of Code events.
So they’re helping the overall education field, and to not have them would be a huge loss to freeCodeCamp. And I feel that same way about everybody who’s creating advanced content too, because freeCodeCamp is very much focused on fundamental programming stuff.
And there are so many great advanced resources that people can use after they’ve completed the freeCodeCamp certifications or use in tandem with freeCodeCamp certifications that we won’t have the resources or the time to build anytime soon.
So I definitely view all these different players in the technology education ecosystem as beneficial overall for both us and for people who are learning to code.
Let’s talk about your business model, because it’s really interesting to hear that your competitors, so to speak, many of them have raised millions of dollars and many of them charge money for different products. But you are relying on donations.
How do you get so many people to donate to your business? What have you learned during this process, and have you ever considered any alternative business models?
We considered a lot of alternative business models, such as helping place freeCodeCamp graduates with different companies and being kind of like a Hired.com or a ZipRecruiter-type website, in addition to being a training website.
Ultimately, it would have involved taking a lot of additional risk, because we would have had to hire people who were experts in that space. And it wouldn’t have necessarily helped freeCodeCamp learners anyway, because then we’d be like, “Hey, you could use these resources, but use our first-party recruiting service, and we’ll help you.”
It would have introduced kind of a conflict in terms of serving campers. And we’d prefer it for them to just somebody else who’s specialized in that sort of stuff. So we looked at affiliate models. And a lot of my articles that I wrote on Medium, I would recommend books at the end of them, and those would be affiliate links. And one day Mark Cuban tweeted one of my articles that I wrote, and the next day I had $3,000 in affiliate money from that link.
So things like that happen. And affiliate money and then selling merchandise – we sold freeCodeCamp t-shirts and stickers and things like that. And now we sell all those at cost, so essentially, 100% of the money you spend on a sticker or t-shirt is just going to the manufacture of that thing. And none of it goes to us because we’d rather you just donate it to us. If you don’t have the money to buy a shirt, just get it as inexpensive as possible.
So we looked a lot of different models, but recurring donations especially seemed promising. If you look at Netflix, if you look at a lot of these other subscription services, Spotify, they’re able to take small amounts from a whole lot of people who give them that money, and then turn it into this giant service that everybody benefits from.
So do you get $12 worth of value out of Netflix every month? If you’ve got a toddler who loves watching little kid shows, heck yeah. I probably get hundreds of dollars’ worth of value out of Netflix every month, and I’m paying them $10 or $12. I don’t remember what it is even.
So by having a whole lot of people pay a small recurring fee, you can suddenly provide a massively better service, and what economists call consumer surplus just goes up through the roof. And freeCodeCamp, of course, is already 100% free. Like I said, you don’t even have to create an account and you can still access every aspect of freeCodeCamp.
But if you do want to donate, thanks. We don’t give you anything for donating. There’s no benefit whatsoever to donating, except that you’re helping the community. And we intentionally we didn’t want to have any sort of weird donation tiers or anything like that.
We’re working on a feature that will recognize how many server hours your donations have paid for. But aside from that, telling you, “Hey, your donations so far have paid for 22 hours of server time” or something like that, aside from telling people that, we don’t really have any intention of giving any sort of premium benefits at all, because freeCodeCamp really is about being 100% free.
And this was a way where we could do that, where 99% of people who use freeCodeCamp never pay anything. But 1% of people who are of means or who’ve gotten a great developer job can turn around and donate $5 a month, $10 a month.
How much effort have you put into maximizing the amount of money that you make from donations? Have you iterated on how you ask for donations or when you ask or how much money you ask for, or has this been sort of a secondary focus for you?
I am embarrassed to admit that we have not put any time or energy really into this. We haven’t done any A/B testing, we haven’t done really much at all. I looked at what Wikipedia was doing, I looked at what Khan Academy was doing, and some other nonprofits that I have a lot of respect for, and I kind of modeled our donation page after that. And in terms of the donation amounts, $5 seems to be a good, round figure that people are willing to donate each month.
So yeah, not a lot of work at all has done into the development of the donations thing. And I’m confident that we could significantly increase that conversion rate if we spent time on it. And we probably will, but we just had really high priorities in terms of getting curriculum out the door, things like that.
We have enough donations right now that we’re not in some dire situation, where I’m taking $10,000 out of my bank account every month and wiring it to freeCodeCamp.
Yeah, that’s interesting. Because the number of people you have donating – 4,000 people donating $4, $5 a month for literally nothing in return – it doesn’t unlock anything, as you said; it’s just because they like the site and they’ve gotten a lot of value from it – is really amazing. And I think for you not to have specifically focused on how you can eek every extra dollar out of that business model is sort of a testament to how much people must love freeCodeCamp.
Yeah. And we didn’t want to have to hire a full-time fundraiser. That’s one of the reasons we kept it really simple. I didn’t want to be on the grant treadmill applying for grants constantly. We didn’t want to increase the team just so that we could be able to sustain ourselves.
We didn’t want to bring in business-development people and conversion-rate-optimization people, and all these other people that, if you’re a big nonprofit, if you’re the Red Cross or something, you have so many people who are just working on the administration and the money and all that stuff.
I just handle the finance, we have an accountant who helps us prepare our legal documents and we have a lawyer. And everybody on the team is focused on actually creating code or creating content.
We started this interview by talking about learning to code. Let’s end by also talking about learning to code.
How have your curriculum and your platform evolved throughout the lifetime of freeCodeCamp, and where do you see things going in the future?
So each of those has five required projects, and then it also has hundreds of interactive coding challenges that are completely optional. If you already know a whole lot about info sec. and QA, for example, you can just drop in and build the five little API projects and make sure they’re secure and have tests and everything. And then, bam, you got that certification. And it only takes a few hours maybe for you. But for everybody else, it’s going to take 300 hours or so to each of those certifications.
How did you know that those were the right certifications to create? Because I’m sure there’s a ton of options for how to divide things up, what to teach, what not to teach.
Tons of feedback from employers. I’m constantly talking to people who are hiring people out of freeCodeCamp, and we have thousands of people who are getting jobs every year, their first developer jobs.
So because we’re focused on fundamentals, it’s a very core curriculum that won’t really go out of style as fast as if we were just diving in and saying, “Hey, here’s how to build this really cool (inaudible) thing using the latest tools.”
We do publish a lot of tutorials, both video and text, that walk you through how to use Angular and Cordova or how to use React Native or React Storybook or some of these other tools. And we think that they’re very helpful and that a lot of people are going to benefit from using those immediately. They’re going to be able to build things at their job.
But we don’t want that to be our core curriculum, because at the end of the day, if somebody dives into the freeCodeCamp community, we want them to get all the low-hanging fruit first, and to climb further up the tree get the harder-to-reach stuff or the stuff that’s going to be of --
And there are diminishing returns to effort as you progress in any field. It’s that 80/20 rule. 20% of the content is 80% of the use in terms of what you learn versus what you’ll use in the wild. And then that last 20%, that’s what you spend 20 or 30 years mastering the field for. So we want to make sure that people get that 80% of the value right off the bat as quickly as possible.
A lot of people listening are founders or they’re people who want to be entrepreneurs, and they don’t know how to code. And they keep getting this message that you need to learn how to code to be a founder; if you want to start a tech company, it’s just so much easier if you can write the code yourself sort in the same way that you made freeCodeCamp, but they’re not sure where to start.
So how does somebody go about deciding, “Should I use freeCodeCamp, should I use a coding boot camp, and how much time is it going to take?” What should somebody expect if they’re sort of deciding to take this plunge to learn how to code in order to become an entrepreneur?
My humble recommendation would be, first of all, more general entrepreneur advice, if I may inject, try to work for somebody else and make a lot of mistakes on their dime.
I worked as a teacher and as a school director in the education space for a decade before I set out to try to build anything and build any company. And of course, the result is I’m some 37-year-old dude. I’m not a fresh university graduate with his entire career ahead of him.
But that’s cool because I have a ton of insight and domain expertise and just practical world knowledge as a result of having done that. And also as a side benefit, I saved compulsively and was able to fund the entire project without having to take out VC money or figure out some way to bootstrap right off the bat, because it’s hard to bootstrap a free product at scale.
But specifically about the learning-to-code issue – and I’ve written extensively on this – I believe everybody should learn to code regardless of whether you even want to be a tech entrepreneur. I just think it’s the new literacy. Like reading was, like writing was, like driving a car was, learning to code is that important to your career. And I will be happy to share a bunch of articles that I wrote.
Or I’ll share one really important article that I wrote, if you’d be willing to link to it in the show notes, that argues the reasoning behind that.
But if you think about how things get done today, machines do most of the work. Humans don’t do nearly as much work as machines do, because every time you get in your car and you want to go somewhere, you pull up Google Maps, you drive to the airport, you’ve already booked your ticket of Expedia or Kayak, then you fly somewhere, you summon an Uber using software or a Lyft using software, you booked your hotel somewhere, all that stuff is handled by software now.
And the actual humans involved are more managing the software than they are managing people. Throughout most human history, people managed people. But now people are managing machines as well as people, and that’s why coding is so important.
And how long should somebody expect this to take? If I’m a founder, I’ve got an idea, I’m eager to get to work, how long is it going to take me to put together the particular skillset I need to throw up a website and store user data and let people log in; or should I just hire somebody else to do it for me?
I would strongly recommend doing it yourself, because if you try to hire a developer – first of all, actually successfully hiring a developer and speccing out the work that needs to be done and having that work be what you need, that’s a skill in itself. Do you want to become a technical project manager? Because you basically just described their job.
If you sit down and spend about a year part time while you’re working – and again, this is one thing that I always tell my friends who are interested in becoming entrepreneurs – just work somewhere else, learn how things work there – and in the meantime you can advance your skills while you’re getting paid.
But I would say if you were to learn to code part time for about a year and you were serious about it, coding every day, going to tech events, participating in hackathons, building the freeCodeCamp projects – like the curriculum, you’ll build 30 different projects – if you built all those, you’ll be in a very good position to be able to just grab some APIs off the shelf and wire together an NVP.
I don’t think that you should wait. I think you can go ahead and start building your passion project right now. But I would not take money, and I certainly wouldn’t raise money, with the intention of hiring developers and then managing them to build your NVP. Let’s put it that way.
Quincy, thank you so much for coming on the show. I really appreciate you being here. Is there anything else you’d like to tell listeners, or would you like to let them know where they can go online to learn more about freeCodeCamp and what you’re up to personally?
Yeah. Go to freeCodeCamp.org and create an account, and you’ll start getting my weekly emails with five helpful links that can help you advance your skills even if you don’t have time to work through the curriculum and earn a certification.
If you do have time, freeCodeCamp is a great place to start. There are a ton of other great resources out there, many of which we discuss on the freeCodeCamp forum, which is very active. It’s one of the most active programming forums now.
And if you want to learn more about me personally, just Google “Quincy Larson” and a bunch of stuff will come up.
Thanks again for having me on the show.
Yeah, no problem. And I’m going to throw in a shout-out of my own for the freeCodeCamp podcast, which would be cool for people to listen to if they’re interested in learning how to code or find a programming job and they want to do that through audio and not just reading online.
Thanks for the shout-out. And yeah, if you just navigate over to whatever podcast player you’re using and type in “freeCodeCamp,” and you should be able to pull up the podcast and subscribe. We’d love to have your listenership. And if you have any suggestions on it, of course, we’re very new to podcasting and we would love feedback.
All right. Thanks so much, Quincy.
If you enjoyed listening to this conversation and you want a really easy way to support the podcast, why don’t you head over to iTunes and leave us a quick rating or even a review? If you’re looking for an easy way to get there, just go to IndieHackers.com/review and that should open up iTunes on your computer. I read pretty much all the reviews that you guys leave over there, and it really helps other people to discover the show, so your support is very much appreciated.
In addition, if you are running your own internet business or if that’s something you hope to do someday, you should join me and a whole bunch of other founders on the IndieHackers.com website. It’s a great place to get feedback on pretty much any problem or question that you might have while running your business.
If you listen to the show, you know that I am a huge proponent of getting help from other founders rather than trying to build your business all by yourself. So you’ll see me on the forum for sure as well as more than a handful of some of the guests that I’ve had on the podcast.
If you’re looking for inspiration, we’ve also got a huge directory full of hundreds of products built by other Indie Hackers, every one of which includes revenue numbers and some of the behind-the-scenes strategies for how they grew their products from nothing.
As always, thanks so much for listening and I’ll see you next time.