This week we’re talking about the future of freeCodeCamp with Quincy Larson and what it’s taken to build it into the non-profit unicorn that it is. They’re expanding their Python section into a full-blown data science curriculum and they’ve launched a $150,000 fundraiser to make it happen with 100% dollar-for-dollar matching up to the first $150,000 thanks to Darrell Silver.
As you may know, we’re big fans of Quincy and the work being done at freeCodeCamp, so if you want to back their efforts as well, learn more and donate.
Linode – Get $100 in free credit to get started on Linode – Linode is our cloud of choice and the home of Changelog.com. Head to linode.com/changelog OR text CHANGELOG to 474747 to get instant access to that $100 in free credit.
LaunchDarkly – Test in production! Deploy code at any time, even if a feature isn’t ready to be released to your users. Wrap code in feature flags to get the safety to test new features and infrastructure in prod without impacting the wrong end users.
Render – Get $100 in free credit to give Render a try! Plus they’re going to assign a world-class engineer to your account to provide guidance and answer any questions. Render is built for modern applications and offers everything you need out-of-the-box — one-click scaling, zero-downtime deploys, built-in SSL, private networking, managed databases, secrets and config management, persistent block storage, and Infrastructure-as-Code. Send an email to
email@example.com to get your free credits.
Grafana Cloud – Grafana Cloud is our dashboard of choice – Grafana is the open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
- We’re Building a Data Science Curriculum with Advanced Mathematics and Machine Learning
- Why I’m donating $150k to freeCodeCamp to help fund their advanced math & machine learning curriculum
- freeCodeCamp in 2020 (and other year-end facts)
- The Changelog #369: Five years of freeCodeCamp with Quincy Larson
- The Best Tech Podcasts for Software Developers in 2021
Click here to listen along while you enjoy the transcript. 🎧
Well, we’re always happy to have Quincy Larson here with us… Quincy, thanks for coming back on the Changelog.
Hey, thanks for having me, Jerod.
Happy to have you, as always. 2020, an interesting year, a challenging year… And probably a good year in terms of freeCodeCamp, because many people were locked down, and maybe looking for new work, and I know that a lot of people were transitioning… Just lots of shaking things up for people’s lives, and it seems like freeCodeCamp plays into that space very well. Was it a good year for freeCodeCamp?
I mean, our community definitely grew. We had a lot of people in the community who lost their jobs, unfortunately… And I always tell people, “Hang on to your job, keep working at your job as long as you can, because you wanna be able to provide for your family while you’re training”, and freeCodeCamp makes that possible… But if your industry suffers a huge hit, like hospitality did, or retail, there’s not a lot you can do… But yeah, people were mostly just hanging out at their houses, their apartments, learning to code with their extra time that they had.
Yeah. Did the service catch on fire? What happened? Was there was a massive uptick that you can share?
Yeah, yeah. During the month of May – April and May, when the lockdown came into effect in the U.S. and India, we did have a lot more people using freeCodeCamp. And then once people started going back to work, which - of course, my advice to everybody is try to stay at home, and I was very vocal about that… But at the same time, some people don’t have that option, and I appreciate that; and I also appreciate the fact that, you know, when I ship something through the mail, it still gets to places, because people are still working, despite the pandemic… But yeah, once the proverbial dust settled from the first lockdown, we were getting about twice as much usage as we were before the lockdown started. So we definitely saw a lot of new people come into the community to learn to code.
You mentioned in that five-year show we did, too - we did a five years of freeCodeCamp two years ago, so hey, happy seventh year, I guess… Or into the seventh year…
…you’d mentioned that China and India were the up-and-coming areas that were really leveraging and using the curriculum on freeCodeCamp.
Yeah. And Nigeria, Brazil… A lot of countries are making heavy use of freeCodeCamp as well. I think we’re even the official programming tool for Liberia.
[04:03] Nice. Before we get too deep into the weeds, I just wanna thank you once again for freeCodeCamp, as a non-user, but as a person who just gets asked the question a lot, “How do I break into web development, or software as a career?” I used to have to ask a bunch of follow-up questions, and give people different options depending on circumstances… And for the last few years at least, I just say “freeCodeCamp.org, go get it.” So I appreciate that.
Yeah, thanks. It means a lot to me that you’re helping raise awareness of our community… And yeah, I feel honored, and at the same time it’s a serious responsibility, taking your friends and family who wanna learn to code and making sure that they have as smooth and realistic an on-ramp as possible.
So you had the foundation of what you think was necessary for curriculum, for getting started, for a while… But you’re not satisfied or resting on your laurels on that; you’ve been building new things, you have a brand new data science course that you’re ramping up right now… Can you tell us some of the stuff that’s been new recently, and then what’s upcoming?
Yeah, absolutely. First of all, the data science curriculum is something that I’d wanted to do really before I even started freeCodeCamp, back when I was experimenting with all these technology education tools; I really wanted to give people an avenue into a lot of technology careers… And the three big skills that people really need to know to work in technology, in my humble opinion, aside from the non-technical skills, are just having a sound foundation in computer science, a sound foundation in math, and then the skill of programming, and knowing how to actually hack things together and problem-solving.
So what we’re trying to do with the curriculum now is significantly expand it to include a lot more mathematics and a lot more traditional CS topics; a lot more data structures and algorithms related topics, and problem-solving fundamentals… And then a lot of more general-purpose, but very useful data-related skills, like data engineering concepts and data analysis approaches and statistics, and ultimately, machine learning.
So the curriculum is going to be – right now the curriculum is actually ten certifications. We’re expanding it to be 19 certifications, and we’re taking some of the existing certifications and drilling in and really… Like, instead of having a single machine learning certification, we’re gonna have the three big branches of machine learning represented - supervised, unsupervised, and neural networks and other kinds of reinforcement learning.
So are you a big math guy?
I am not a huge math guy, but I have a huge appreciation for the role of math… And we have already brought on a math teacher who’s got 20 years of experience teaching math at the collegiate and at the high school level, and I’m very much looking forward to learning from his exercises, going through and learning calculus proper.
So I am looking forward to coming to appreciate math much more, instead of taking it for granted and just saying “Oh, this just works.” Thinking more like a computer scientist, rather than just thinking like an engineer.
If someone were not very familiar, which - I think people know of freeCodeCamp, but maybe even many have used freeCodeCamp to learn… But if they’re not familiar with the organization itself, when you say “bring on”, you mentioned “bring on this math teacher…” Help us understand the layout of the organization. Obviously, you’ve got you as the founder… Give us an understanding of who’s involved, and what “bring on somebody” like a math teacher, at that level means to the organization.
[08:18] Yeah. So what we generally do is freeCodeCamp is a very small organization. We have an outsized influence, and half a million people use freeCodeCamp every day… But it’s actually only like 12 people that work full-time on freeCodeCamp, and then we have a core of hardcore volunteers who contribute a whole lot. People who run the forums, people who contribute to the codebase, people who write articles and create video courses, and things like that… And then we have just tons of casual contributors who might put in a pull request every few weeks.
So the actual full-time team is mostly teachers. Most of us have a teaching background, or some sort of academic background… And then some of us also have an engineering background. A good example would be Oliver, who recently joined us. He was like a particle physicist working at the – I think he was working at the European equivalent of DARPA, or something… I can’t remember what the names of all these European agencies are… But he had a Ph.D. and he’d been working in particle physics, and then he learned to code and started contributing to freeCodeCamp in his free time, and now he works as a software engineer at freeCodeCamp. So he kind of has walked both realms of like the more abstract and the more applied. We have a lot of people like that.
Pretty much everybody on the team wears multiple hats. Some of us can speak foreign languages, so for example Mia Lu, she runs the Chinese community… And then we have Rafael Hernandez, and he runs the Spanish-speaking community in Latin America, and here in the U.S. there are 41 million Spanish speakers… So we all kind of wear multiple hats, but we’re all contributing to the codebase, we’re all writing articles, we’re all getting involved in helping defuse situations with the community or with the infrastructure late at night… And I intentionally try to rotate people through as many different responsibilities as possible.
Yeah. Get a good lay of the land. Do you see it’s a lot of promotion from within, like “I’ve learned from freeCodeCamp, so I graduate into…”? You mentioned a lot of the full-timers are teachers, but you’d mentioned Oliver, who has a Ph.D. and learned to code – did he learn to code through freeCodeCamp, or…?
Did I understand that correctly?
Yeah. Every single person we’ve brought on, to my knowledge, has extensive contributor experience. Abbey, for example, who runs the publication - and she also runs our Twitter account and our Instagram account - she was a volunteer contributor, writing articles and editing hundreds of articles before we had the budget to be able to bring her on to work full-time for freeCodeCamp… So essentially, the way I approach it is we have somebody who’s already contributing a whole lot, and we get along with them and we think that they’re very friendly and capable, and we basically say “Hey, you’re already doing so much awesome work. If we were able to bring you on full-time, do you think you could do even more of that, because you wouldn’t have to focus on your day job?” So that’s how we’ve been able to grow.
And we’re very conservative with how we bring people on, and very responsible, because we just don’t wanna get into a situation where we ever have to lay anybody off… And so far it’s never been an issue; I’ve never missed a payroll or anything like that, because we try to grow very deliberately.
One of the things that we’ve been doing with this update to the curriculum is we’re doing a big fundraiser to try to raise $300,000 that we can use to potentially bring on some additional instructional staff, to help design probably what’s going to be hundreds of mathematics-related projects, hundreds of Jupyter Notebooks, and things like that… Because we don’t want to jump out there and speculatively say “This is gonna be huge”, and then bring a bunch of people on, do the work and then have to lay people off.
[12:03] This isn’t like a video game industry or a Hollywood studio system where there’s the expectation that “Hey, we finished the job. Now we have to go find other jobs.” We really do wanna ramp people up and give them the skills and the familiarity with the systems, and also just the trust. When you’re trusting somebody to have access to a production database, or you’re trusting somebody to have access to some sort of account and to use their best judgment - it takes a while to find people that you can trust. So we don’t take that for granted, and we don’t wanna lose people…
Yeah, totally. One of the things I’ve always appreciated about you, Quincy, in the way you run freeCodeCamp, is how transparent everything is, and how you openly share budget numbers, and everything… It is entirely donation-based, right? There’s no non-free aspect of freeCodeCamp… Or is there?
Everything is freely accessible. That’s a founding principle of freeCodeCamp. I even chose the name freeCodeCamp so I wouldn’t be able to change that later.
You can’t back out of that one, can you…?
That’s a good way to bake that moral in, is make it part of your name.
Yeah. “freeCodeCamp. Let us show you our freemium model…” Yeah.
“Let me show you the non-freeCodeCamp.” [laughter]
At the end of the day it’s our defining feature. It’s the fact that it doesn’t matter what your socio-economic background is, it doesn’t matter whether you can get access to a credit card, which most people in the world are unbanked, they live off of $10/day or less, and they don’t have the ability to pay, even if you’re just putting like $5/month paywall up. We wanted to make sure that was the founding principle of our entire organization. And frankly, there are tons of awesome resources out there that are paid, and I think that the fact that we’re free is a huge advantage in terms of being able to attract people to use freeCodeCamp. I’ll just rattle off some places - Frontend Masters, there’s Egghead, there’s Treehouse, CBT Nuggets… A ton of these awesome sites, and I’m probably leaving out a lot that we have a long-term friendly relationship with… They’re doing a great work, too. We wanna be free so that they don’t have to be free, and they don’t have to feel the pressure… Because a lot of these people are gonna be able to eventually afford to be able to use those resources, too.
Yeah. What do you think it is that differentiates then, if the differentiator seems to be based on that, simply the price? Is the quality different, is the production level different? I mean, I know Treehouse has done a great job over the years with video production, and great with staff, and whatnot… But in your opinion, what do you think the differentiator is if it’s not just simply price?
Well, at freeCodeCamp we really wanna focus on just a really core curriculum. This is something that if people get a chance to read the article or watch the 28-minute video where I talk about the philosophy of this big curriculum expansion - one of the other founding principles of freeCodeCamp is that it’s going to be a single, linear curriculum where it’s kind of the shortest path, first to getting a full stack developer job, and now with the curriculum expansion, the shortest path to getting a basic data analysis-type job…
And then if you wanna come back, then you can learn even more math and even more Python, and you can get a full-on machine learning engineer type role. So we wanna keep a very clear, linear, simple progression… And a lot of this is rooted in my belief that the old ways are sometimes the best ways; if you look at the university system, it used to be that everybody just went and got the same degree, liberal arts; unless you went to medical school, or something… Everybody got the same basic liberal arts degrees, they studied the classics, and then once they were done with that, they would just go out and specialize on the job. And there were some big advantages to that. First of all, you didn’t have this Cambrian explosion of electives; you didn’t have people who had – like, I have an English major, right? I actually took a lot of “blow-off” classes, like [unintelligible 00:15:56.24] And they counted towards the English credit. I had all these friends who were like–
You’re like, “How do these count…?
[16:05] …they were studying Shakespeare, they were studying Chaucer, and stuff like that, getting really hard into the middle English, and even the old English, and I was just taking this kind of like – you know, what you would consider trash, if it was like a pop quiz… You know, these topics that are kind of a joke…
Right. A guilty pleasure kind of stuff…
Yeah, yeah. And to some extent, I wish I’d taken Chaucer, I wish I’d taken Shakespeare. I’m probably not gonna have a lot of time to learn those things now, because I’m running freeCodeCamp… And that was the time when I had – I mean, I’m probably lying; I could probably sit down and power through some Shakespeare…
[laughs] But how’s your anime knowledge? Do you know a lot about anime?
Yeah, there you go.
Probably more than the people who studied Chaucer.
Yeah. So it wasn’t all for nothing. You came out with something.
But my point is – I do think that if all the academics in the world settled on “Okay, we want people to be literate, we want people to be numerate.” Maybe if they worked with the industry and figured out “Okay, SQL seems to be a pretty good skill. Pretty much everybody should learn SQL. Pretty much everybody should learn Linux.” Even if you’re not a programmer, it’s very beneficial to know how these systems work.
I feel like it’s easy to get stuck in what people call “tutorial purgatory” or “tutorial hell”, because you’re kind of jumping around between different beginner resources, instead of actually taking intermediate resources and building upon what you previously learn.
So that’s a big part of freeCodeCamp’s design - we don’t want people to get stuck in the desert of despair, whether [unintelligible 00:18:23.06] intermediate or upper-intermediate resources. And by having a single linear curriculum that everybody goes along - it’s like the Appalachian trail, you can always holler back like “Hey, look out, there’s an avalanche ahead”, or I don’t know… [laughter]
Is that a thing?
I mean, the Appalachian trail - people would pass knowledge back and forth, because everybody was kind of taking the same trail, so they knew what to expect. “Watch out, there are bears in this area!”
Or people going backward, going back East because the West was too harsh - they could say, “Oh, look out, up ahead there are bandits!” I don’t know.
I never took the Appalachian trail. I was always on the Oregon Trail. I don’t know if that’s the same trail, but… I just died of dysentery.
Well, the Appalachian trail goes to the Appalachian Mountains.
Well, yeah. That’s on the East Side.
Isn’t that true? I hope it’s true…
You’ve gotta get there first… If you’re headed West, you’ve gotta start with the Appalachians, right?
Yeah. Some people make it to over to Oregon, but other people don’t. I always die of dysentery.
[laughs] The hardcore people that don’t die of dysentery, yeah.
So to me, it’s obvious that you have free as a core principle, and your foundational aspect, and picking the general foundational things… You say you have an outsized impact, right? Your human count on labor inside of freeCodeCamp, versus the impact - it’s outsized, it’s huge. And you even cite some of these things in your budgetary numbers, like how many people you’re reaching versus how much money you’re spending, which - anybody who wants to give to a cause wants that cause to be as leveraged as possible; they want their money to be as leveraged as possible, or as effective and impactful as possible.
Yeah, it was a combination of that and the fact that if you wanna be a software engineer and continue to grow in your role and become more and more advanced, you’re probably gonna wanna learn these topics anyway. Again, a lot of it is designed with the notion that after a few hundred (or maybe a few thousand) hours worth of coursework, if you finish the first seven certifications or so, you’re gonna be ready to go and work as a software engineer in a web development capacity. But you might wanna come back and learn some more, so you can work as a data engineer.
I just think that if you look at the distribution of jobs, web development is still the central thing. I would include mobile development in web development, because so much of mobile development is essentially just working with APIs, and stuff… People try to put it in its own category, but if you just think of the mobile app, it’s kind of like an alternate client to the browser, you realize that a lot of the work is basically the same, and a lot of the skills are the same once you adjust for the fact that they’re slightly different toolchains.
So I would say that because half of all jobs are web development jobs, it definitely makes sense to start people there… And then probably right now there are tons of data science jobs, but it pales in comparison to just the demand for web developers. So this is a specialized thing… I wouldn’t recommend somebody trying to go straight into data science anyway, because you’re gonna need a lot of coding; you might as well learn the coding and potentially work on a team as a developer before you start working as a data scientist.
Right. So this would be kind of like an upgrade. Are data scientist jobs generally a pay upgrade over a software developer job? Or is it just out of like “My interests have changed” or “I actually would enjoy this more.” But am I actually making more money? Just speaking in generalities.
I think you’ll make a lot more.
I think you’ll make a lot more, especially if you learn machine learning [unintelligible 00:22:32.24] Plenty of undergraduate students could try to learn some machine learning and then go and potentially enter a hackathon, and stuff… But the real question is how applicable are those models gonna be once you move beyond the realm of a weekend hackathon, and implementing [unintelligible 00:22:51.03] that are gonna be industrial-grade?
I think there’s a reason why most data scientists – I don’t know if it’s still most, but historically it’s been most of them have Ph.D’s; often they’ll have math-heavy Ph.D’s, and statistics, and things like that… And it’s because it is a heavily quantitative field. Data science, in my opinion as a non-practitioner who speaks with data scientists all day, is really three things: it’s programming, it’s math, and it’s kind of domain expertise; understanding how the business works. If you’re a data scientist at Target, you’re gonna need to understand purchasing behavior of different people, and checkout, and logistics of shipping things around, and all the different costs associated with things, all the different risks… And a lot of times if you work with Target for like ten years as a middle manager and you go to night school, you might be able to learn the resources in order to be able to become a data scientist, because you’d have that domain knowledge. But again, you have to also have the programming and the math skills.
[23:55] So we’re not gonna be able to give you domain-specific things, but what I tell people generally is try to get a job as a developer and then pivot into increasingly data-centric roles; because if you’re at a large company – I was just listening the other day to the interview with some of the people who were behind one of the biggest datasets of all, the AmEx dataset on Practical AI… I think that that’s the future right there - being able to be on one of those teams because you have that background and you have those skills. But I don’t think that very many people come straight out of university and then get to work on giant datasets like that. I think it’s something you generally build toward.
That’s kind of how it is in (let’s say) a lot of careers anyways, over time… Like, today I leverage multiple skillsets I’ve learned over time. It’s the same here. Maybe you go in and you learn basic programming, web developer skills… And 1) you can find a love for it and an appreciation for it, and over time you have a need to layer on more skillsets; so maybe in the data realms of it, or domain expertise. That’s how – I think learning happens anyways, or at least good learning, and then you layer on your learning over time… Not just simply “Let me just go into the data science free course on freeCodeCamp and boom, ML wizard.”
It just doesn’t compute that way. Maybe for some it might, but for most people it’s probably not gonna make sense.
Right. Maybe the ones doing the research and working on the creation of the models and the techniques and the advancement there…
But what I’ve learned a lot about machine learning just from listening to and producing Practical AI is the challenges that are out there, and where there’s a lot of innovation, and money to be made, and jobs to be had, is kind of what Quincy’s talking about, with taking these techniques into a production capacity, or applying them into a business, and using them in certain contexts. There’s challenges there. Actually, I have an open tab right now that I haven’t read yet, but the headline is “We don’t need data scientists, we need data engineers.” I’m assuming it’s gonna be an awesome things that I’m excited to read…
It resonated with me because I see that there’s all these challenges where if you have software development skills, and you can merge them with the data science side, you can sit in the middle and understand things like deployment, like operations, like how to build things that can advance and be maintained and move on… There’s tons of opportunity there.
This kind of ties into my general argument about learning as a whole, lifelong learning. I’m a huge believe in lifelong learning. I frequently advocate for people slowing down and just taking a long-term approach. People often think about school as like a four-year block, or a two-year masters, or something like that… But I really think that if you get a good job and you like that job and you’re willing to work there for the long-term – and a lot of people make the mistake of just hopping around on jobs a whole lot, and they don’t ever really… You know, the rolling stone never gathers any moss. I think that’s the case. I mean, I understand people will change jobs for a major salary upgrade, for example…
But I do think that people should stick around and just see how they can pivot within their existing organization and how they can grow within their existing team… Instead of trying to be in such a rush, like “Oh, I’ve gotta chase this brand new technology that’s out.” There’s a gold rush, right? Instead, slow down and just think about how can you gradually taper your trajectory to head in that direction. A lot of learning - I feel like people go through these bursts of learning, where they just study really hard, or they spend the entire weekend working on this model, and they learn a ton about machine learning, but then they go back to work and they don’t use it, and a few months have passed by and they’ve practically forgotten everything that they learned from that experience.
[28:01] A big part of it is integrating into your routine reading for an hour a day, or working on a very specific skill every day, and kind of getting in a rhythm of doing that… Because sleep – and I’d actually be very interested in what Adam has to say about this, because I think sleep is so important to how the brain solidifies knowledge.
I’ve found, for example – I study a lot of foreign languages. I lived in China for six years and I’ve been studying Chinese for like 15 years, and then I just recently started learning Spanish… And a huge part of it is, in my opinion, you learn maybe like 30 minutes, you go to sleep, and in your dreams you’re kind of like weaving these threads together and then you wake up, and everything seems just marginally easier the next time you approach it. And if you get that kind of loop going, every single day you’re learning something and you’re revisiting something… It feels like, even though you’re only studying 30-40 minutes a day, over the course of a year you can make dramatic gains. And I feel like it’s the same way with programming; if people just slow down and sprinkle learning throughout their weeks instead of just doing like “It’s learning day.”
Do you wanna open up with your – or I guess I forgot you said “I wanna hear what Adam has to say about sleep”, because…
Yeah, I do wanna hear it. Adam, if you’ve got thoughts on that…
All I have to say is very short… I’m not gonna pontificate by any means, I’m not gonna get on my soapbox… We do have an up and coming episode of Brain Science we’re doing some research on, because I’m a huge proponent of it as well, but it is called – or it might be titled “Sleep is the best medicine.”
Hm… I thought laughter was the best medicine.
Well, you know, we’re taking it over… [laughter] In sleep.
There you go.
I mean, when you get sick, what do they say? Get some rest.
Sleep it off, yeah.
Sleep it off. It really is the best medicine in many cases… And so many people in a go-go-go society…
Right, the rat race.
Yeah, exactly. It over-emphasizes “Let me stay up all night over the weekend to learn”, instead of learning incrementally, bit by bit, over time. You know, there’s a couple different wars going on there…
“Oh, it’s so hard.”
Well, you’ve got that side that says “I can do more in these ten hours than I can do in 20 hours stretched out, because I have all the inertia and momentum and drive right now.” So there’s a couple of different aspects… I mean, you could argue either side really, from different angles, with different perspectives or different scenarios.
Yeah, I would argue the situations where you do need to go full out are less frequent than people think they are.
And then if you’re able to judge “Is this something where I really need to plow through this, or could I potentially just knock out a chunk of this and then wake up in the morning and be fresh and finish it?”
[32:02] I do think one thing you keyed on was routine, which is habits… And I’m a big re-believer/believer of good routines, good habits, create good rhythms… There’s a lot of things that you could do well because you wake up every day and you do it. You’ve built a routine. And it really sucks whenever something jumps in and breaks up that routine… Which might be why people plow in for that day or two, because they’ve got PTSD of like “I created this rhythm/routine and something disrupted it, and I couldn’t get back on the horse.” Anyways… That’s a very leftfield, brain-sciency stuff…
Well, the danger is when you think that the plow through methodology turns into the habit. It’s gonna be–
The only way.
It’s almost like when you get a raise - our proclivity is to then expand our lifestyle to match that budget. “I’m just gonna live up to that budget.” Then when you get a pay decrease, you’re screwed. It’s kind of similar with sleep; if I’m gonna burn it both ends because I have this one thing I have to get done, fine. But then the next thing, “Oh, I also have to get this done.” I slot that in, and now I’m just living on five hours of sleep, and I’m just destroying myself.
I always say if you’re gonna do it and you’re gonna do it with awareness…
…do it in seasons, or very specifically. Like, “I know I’m doing this, and I’m doing it for these reasons”, and it’s uniquely and different. It’s not because it’s a norm. Do it for a season and be okay with it for a seasons. Let’s say traveling more often, or being with your family more often. That’s not a norm for me. I’m not okay with that on the norm. I’m okay with that for maybe a month or two if necessary for certain reasons, but only for those reasons, and then I go back into my normal gear.
I was never a pull-an-all-nighter kind of guy. I don’t know, Quincy, back when you were in school and you had a test tomorrow, were you a “stay up all night and study” in kind of a guy?
No. But I would study more I guess in bursts, large bursts, than I think was optimal. Looking back, if I had school to do over again, I think I could have done a lot better with what I know now.
Yeah. I would definitely do the procrastinate till the end and then cram… So I was a crammer as well, but I’d always opt for – like, if it was the night before the big test, it was like “I can stay up for three more hours and cram this in, or I can just sleep right now and I’ll be more fresh and I’ll do better on the test”, because test-taking is a mental capacity thing… I used to always opt for just the sleep, and I think that paid dividends.
But I know a lot of people that would just stay up all night, studying… And I was always like “Gosh, I feel like you’re brain-dead right now.”
Yeah. Well, it’s almost like you forget it in the morning. You remember it then, but you’ll forget it in the morning.
Tests are weird though, because you only have to remember it for 40 minutes, and then you can actually forget it… [laughs] So it sounds like it works…
But that’s basically the purpose of the test, which is to actually help you learn it. And that’s one of the problems with education…
Right. All testing is problematic.
Learning confirmation, yeah.
We just have a few tests. We should have tests every single day of class. There should be a quiz at the beginning of every day or class, just to force you to dump what’s out there and kind of create this experience of having grappled with the knowledge and put it on paper. But instead, at least when I was in school, there’d be like a mid-term, and then there’d be a final, and there was no other evaluation criteria, and no feedback.
Yeah. That’s why I’m excited about this book from Greg McKeown; it’s called Effortless. He uses this quote a lot, but it’s a quote that’s attributed to Abraham Lincoln… And it goes something like this - “If you give me six hours to chop down a tree, I’m gonna spend the first four sharpening the axe.”
Oh, yeah. I’ve heard that one.
It’s really about – like, effortless work is because of great preparation, or great planning, a plan, period. But sometimes you can over-plan, so it’s not always true.
[35:57] Yeah, planning can become a form of procrastination. I know lots of people who map out exactly, “Oh, I’m gonna use this resource, and I’m gonna be listening to the podcast, and I’m gonna ride my bike…” They schedule everything, and then they ultimately can’t stick with the rigors of that schedule, just because it becomes odious, and they start to fear it.
It’s the same thing for me. I can talk about my daily rhythm, if you’re curious… I have kind of like a bedtime routine where I basically – starting at about two hours before I’m gonna go to bed I do my languages, and then I do… I’ve got this kind of pull-up bar in my doorway, by my fridge, and I just do a bunch of pull-ups, and then put it on the ground and do push-ups… And then I’ll do other things that I need to do; I’m doing geography quizzes on Seterra.com, so memorizing all the different United Nations countries, where they are… I memorized all of the different states in Nigeria, and the states in India, and places like that…
And of course, the U.S. The North-East is particularly hard with the U.S. So yeah, I’ll do things like that just every day. And even though it only takes 5-10 minutes, over time I’ve managed to memorize huge portions of different countries and maps and stuff. And then after I do all of those things, because I did all of those things, I reward myself by letting myself play video games for like 30-40 minutes before I go to bed.
So there’s that kind of reward there to like – even though I’m tired and I don’t wanna do it and it’s after a long day of work, that reward kind of spurs me… “Well, I don’t get the reward, I don’t get to play video games if I don’t put in the time studying.”
Yeah. I like that one. I like to do scenarios like that where it’s like “I wanna do that, but I’ve gotta do these things first”, and that thing is a reward because I did those things, because they’re unpleasant, or I don’t really wanna do them, or they’re arduous, or just for whatever reason it’s just cognitively hard, in comparison to just sitting down and playing the video game.
Video games are so easy.
They are so easy.
It depends on which game you play…
Well, it’s easy to want to play, I guess. I mean, not easy to do, but… You don’t have to convince yourself, right? You’re already convinced.
They’re designed to be addictive; they’re designed to draw you in.
That’s right, that’s right.
And the future of education is video games. If we can make courses that are as addictive as playing Doom, or playing Street Fighter or something like that, then suddenly you’ve got this thing that draws people in and they get really interested in.
One of my aspirations for freeCodeCamp is that someday we can have as robust a fandom as Final Fantasy games, or something like that, where people are like “Oh yeah, this is a particularly insidious challenge, and it’s claimed many people have flamed out at this part.”
Yeah, we wanna gamify it; we wanna have the equivalent of – like, you walk into the room and there are a bunch of corpses, and those are people who have failed the exam, and haven’t come back to try it again… You know? Something like that. We want that kind of vibe, and we wanna have all the RPG skill tree type elements, just to make it fun.
We wanna have leader boards, and anything we can make where it’s kind of cooperative, instead of competitive… Those are things we wanna incorporate.
How many times can you respawn before you lose freeCodeCamp? “Sorry, you lost.”
Yeah, so we did actually tinker with what I was calling Arcade Mode for a while…
…where you could basically just sit down and like “How much time do you have?” and it’s like “Boom!” algorithm challenge after algorithm challenge, and they would just get increasingly difficult, and every time you thought you got your code right and you try to run it and the test didn’t pass, you’d lose a life.
What happened with it?
We’ve got a lot of priorities, we’re 12 people…
Okay, so you didn’t actually execute on it.
No, we built it, but we couldn’t figure out a way to integrate it properly, and there were some issues… You know, if it’s not a slam dunk–
Well, make it a mode then. Just make it like an alternative mode, versus the primary path… Like, “Hey, do you wanna try the side-quest?”
Yeah, eventually we will.
Side quest is a different way, you know?
Yeah. We don’t wanna release anything that’s not done, that’s not right… And because we’re such a small team, we really have to focus. And that’s the hardest thing, deciding which projects to – not kill, but put on ice. We know where the future is; the future is making learning the code feel like you’re playing World of Warcraft, or something like that, where you feel like you’re getting involved, and you’re making friends, and you’re progressing toward being a powerful wizard. So we’re gonna get there.
[40:25] That’s one of the things – people are often like “Oh, I can build freeCodeCamp in a weekend. It’s really simple. It’s just like this editor in the browser, and…” And I’m like, “Yes, there are certain aspects of freeCodeCamp that are relatively simple to implement, but this is just like part of the vision. The vision is so much grander and broader than what exists today… And I set freeCodeCamp up as a non-profit, and I kind of created this model that I wanted to optimize for sustainability and durability above all else. We don’t care about explosive growth, we don’t care about getting celebrity endorsements or anything like that. We really just want to gradually over one period of time build up what we think is the best kind of school type environment for adult learners who want to learn technical skills… And I do think that that’s going to eventually be this – eventually, freeCodeCamp will have had millions and millions of dollars poured into its development, and it’ll be like a AAA video game… But it’s gonna be a AAA video game decades in the making.
I like that.
So is that what the grand vision is? You said that you have this big vision for it, and it’s this school for adult learners that is like a video game, or that’s as compelling as a video game? Is that what your vision is?
Yeah, as compelling, where people want to go there and they get excited. They wake up with it, like “I can’t wait to finish work so I can jump on freeCodeCamp.” And for some people that is the case, but not everybody gets that excited about learning to code. A lot of people would rather go and play video games.
We’ll know that freeCodeCamp is compelling when people who are hardcore gamers stop playing games completely and are just like “I don’t need games anymore, I’ve got freeCodeCamp.”
That’s really fascinating… Have you found that a lot of people get started and don’t finish, or do you track that, how far people get? Is the rate of attrition pretty high?
Yeah. I think a lot of organizations – this was a question that Coursera and EdX and a lot of these organizations were criticized, because they would have low graduation numbers. Like, it’s free. Coursera was free. EdX was free. It was not fair for these media pundits to say “Yeah, but only 5% of people who start the course will actually finish it. Isn’t that a problem?” No, that’s not a problem when you make the course free and anybody can just go and take it.
And it’s fine, coding is not for everybody. I firmly believe any sufficiently motivated person can learn to code, but not everybody is sufficiently motivated, and that’s okay. And also, life gets in the way. People have, especially during a global pandemic that’s causing unprecedented levels of unemployment, people have better things to worry about than learning to code. But I do think that it’s fine… And I realize this might just sound like a big justification that “Yeah, not very many people finish freeCodeCamp.” Very few people finish freeCodeCamp, and part of the reason is because we keep expanding freeCodeCamp and it keeps getting longer and longer.
So far, according to my most recent check of LinkedIn, maybe a year ago, more than 40,000 people in our alumni network who’ve listed freeCodeCamp certifications on their LinkedIn account have gotten a job. After they listed that certification, they were able to go out and get a developer job. That’s how we define alumni.
Are you pretty rigorous with checking that and confirming that? What’s the motivation for them, for you… What kind of processes do you have to confirm that? Not so much that it’s true, but to keep it up to date and actually allow them as alumni - what’s the process there?
Yeah. Well, the alumni association – technically, anybody can join the alumni association by putting a certification on their LinkedIn, and I assume they wouldn’t lie about it, because you have to link to the actual certification on freeCodeCamp. And we actually have a button… When you earn a certification on freeCodeCamp - and we do audit these for academic honesty and make sure people aren’t plagiarizing, and stuff…
[44:06] When you earn this certification, there’s a button you can press and it’ll pull up a pre-populated LinkedIn wizard where you can add that certification to your account. And we have a lot of people – the network is I think more than 40,000 people, or something like that… I’m not sure how many actually have certifications on there, but a number of them have gotten jobs as software engineers after they’ve gotten the certification.
But that number is utterly dwarfed by the sheer volume of people who have at one point tried freeCodeCamp. And what I often tell people is like “It’s okay if you stop using freeCodeCamp and you go focus on something else for a while. If life happens and you stop.” And a lot of people will come back 3, 4, 5, 10 times they’ll quit and then they’ll restart… And it doesn’t matter if that happens to you; you can still restart. A lot of what you’ve learned will still be in your brain, and every time you restart, you’re kind of etching it further and further in there, and you’re getting a little bit more intuitive grasp on programming. The most important thing is that eventually you finish it.
I think a lot of people get so concerned about “Oh, I’ve gotta get a job as soon as possible out of school.” They lose track of the fact that life is long. The average American lives about 80 years, and they could probably - and depending on the field, but definitely as a software engineer - they could probably have the capacity to learn for at least 40 of that… So you have plenty of productive time, and there’s nothing that says that you have to finish this certification within a year.
I think a lot of people create these artificial goals that maybe cause them to have too much pressure, and they buckle under the pressure. But if you’re just kind of casually strolling through “Oh, I’ll finish when I finish”, and you haven’t made any major lifestyle changes that become this forcing function, then it’s fine. I tell people, “We expect it to take years.” We had somebody a few months ago who was like “Yeah, I’ve finally finished. I got the sixth certification in the original six certifications”, and they’d done it after four years of going through freeCodeCamp.
Well, it seems like you’re optimizing for access; not so much that completion doesn’t matter (obviously it does), but just by nature - we talked about this before - of the name, “free”. You’re optimizing for access, and I think that’s what’s important. It’s less about “Oh, this many of this many have completed”, but more like “This many of this many in the actual world have access.” Languages… I know a big part of this recent push, at least around the data science push mentioning is like the different languages that freeCodeCamp has translated into. So access at a global level, than just simply those who have the financial means to access if it was a paid course, or only spoke English, for example. This is available in many different places and many different languages.
Yes. And I wanna give a shout-out to the many people who have been helping translate freeCodeCamp. One of the reasons it’s taking so long to get the translations live is because we just wanna have a repeatable process. We wanna have freeCodeCamp in French, we wanna have freeCodeCamp in Brazilian, Portuguese, Swahili, and we’re making strides for that… And now we have this system that we’ve put together where essentially people can make language contributions, and whenever those have been approved and they get pushed into Git, and then once there’s a critical mass of that certification in that language, then we publish it and we push it out to main, and ship it to production.
So we’re gonna be able to very rapidly cover a lot of the major world languages, and even some of the more niche languages that just happen to have a particularly active contributor base.
So when you add new curriculum, like this new data science stuff, are you adding it in all the languages that are currently supported on the other areas of freeCodeCamp, or did you start with a couple and then build out from there? What’s the gameplan?
Yeah, so we’re gonna roll out – first, this is a question a lot of people have… We never actually get rid of certifications, we just make them legacy certifications, and they’re kind of deprecated in that sense. So people who are going through freeCodeCamp’s curriculum - don’t stop; keep going. You’ll still be able to earn whatever certification you’re working on.
We always roll out the certification projects first. So there are two types of projects - there’s the practice projects, which are what you use to actually learn how to use the tool, whether that’s D3.js, or whether that’s NumPy, or whatever… You’re gonna build a project using that tool to learn how to use that tool, and then you’re gonna apply those skills combined with other skills to build some other certification projects.
[48:41] Each section has five certification projects, and if you build those five certification projects it doesn’t matter what else you’ve done. You don’t actually have to do the practice projects; they’re just to prepare you for those. If you’ve done those, then you can claim the certification. So what we traditionally do is we always do the certification projects first, ship those, and then people can use videos that we have on our YouTube or other course sites that have exercises with that tool… And they can get to the point where they’re good enough to be able to build those projects and claim those certifications.
So we’ll ship those first, and we always ship them in English (to answer your question) first, and then the community steps in and helps translate that into other major world languages. In terms of the distribution of speakers, Chinese and Spanish are by far the biggest languages on Earth, in addition to English… And then it falls from there in terms of the install base of a language, if you will. There are a lot of other major world languages, like Arabic, Russian and Portuguese that we prioritize, and then a lot of people have approached me about creating a Vietnamese version, or creating a Georgian version. Because even though a lot of people in Georgia speak Russian, they would rather learn it in their native language.
And when you’re learning in another language, even if it’s a language you’ve spoken a lot, it is a lot harder… And I say that as a non-native English speaker; or, I’m sorry, I am a native English speaker, but I’m not a native Chinese speaker, and I spent several years learning in China, in Chinese, and it’s very hard.
That’s gotta be difficult whenever you create videos too, right? I suppose, do you make several versions of the video when you translate it, or you just simply subtitle it?
We get somebody who’s a native speaker from that community to create the video, and we just published a 4-hour Python video yesterday by a woman named Estefania, who is in Venezuela… And she’s a prolific teacher, and she happens to be bilingual, English and Spanish, and she wanted to create a Spanish video on Python
We have a separate YouTube channel that’s just focused on Spanish, and we have a separate YouTube channel that’s just focused on Mandarin Chinese. And because China has the Great Firewall, we also have the videos on a separate website called Bilibili, which is kind of like an anime-themed website, but it became the most popular video-sharing website in China… Kind of like how Twitch has a video game theme, but it’s become a more general-purpose streaming website over the years.
Yeah, interesting. So [unintelligible 00:51:12.15] but I’m just curious - when they create these alternate versions in different languages, do they take the original and simply just translate it, or do they sort of re-teach it with new motivation and emotion? How does one video, when translated, compare to the other in terms of the teaching side of it? Are they taught the same, or is it simply just a copy?
Well, language and culture are intertwined… And learning paradigms, some countries have very different – a Swiss education system is very different from the Norwegian education system. So there are different conventions that a teacher might bring with them when they teach. So I just tell them – my only direction is like “Hey, teach it how you would wanna learn it, based on your growing up, when you were learning this thing.” So every video is kind of wholly created in the vision of the person who created that, regardless of what the original English version was.
[52:16] I think over time these different language communities are going to start to not look like one another very much. For example, maybe it’s possible that in China there are a whole lot of Vue.js videos and courses around Vue, because Vue is much more popular in China. It’s possible that right to left based languages - maybe they have different courses on design, that kind of tie in those sensibilities.
One of the things I gave up a long time ago is this sense of trying to have a central…
…theme, or feel… Yeah, I gave up control. And one of the things that I did that was I think very wise, accidentally - I’m not saying that I’m like a sage or anything, but… It was just impractical for us to have control over all the different study groups. This Cambrian of explosion of – um, this is the second time I’ve used the term “Cambrian explosion” during this podcast… I’m sorry, I sound like a broken record. You know, this huge groundswell…
There you go.
…that’s a good word.
That’s a good one, yeah.
[laughs] A Cambrian groundswell.
…this groundswell of different study groups on Facebook. We had like 2000 of them, in every little city in the United States, and in a whole lot of cities abroad… And it was a fool’s errand to try to control those… And I just said “Hey, here are some recommended standards. You’re in control. You figure out who the toxic people are and eject them from your group, if necessary. You figure out what you wanna do as far as corporate sponsorship, and things like that. We’re here in your corner, we wanna help facilitate.”
So that was a big thing that we did, and it was a huge success. And of course, unfortunately the pandemic has wiped out a lot of that, but we’re gonna rebuild once there’s a critical mass of people who are vaccinated and we can start having in-person events again.
There are some study groups that are still going and have just made the jump to online in the meantime… But if I’ve been like a command and control type open source project leader, I would have probably ended up with like ten study groups, and they would all be following this very regimented list of rules.
I think the fewer rules you have – you wanna have basic safeguards in place, but you really should let your contributors express themselves and give them agency and give them benefit of the doubt.
So you’ve been bringing on help to put together this curriculum, because you’re a math fan, but you’re not a math instructor… And even when it comes to coding and programming, you have working knowledge of these things, but you’re not doing much of the curriculum, right Quincy? You are involved in creating in and maybe strategically doing it, but you call on aid when it comes to the details, so that everything is sound… Is that fair to say?
Absolutely. And I think one of the big skills I’ve built up over the past six years of running freeCodeCamp - it’s year seven of running it, as Adam pointed out…
Yeah, it’s awesome.
…is knowing my limits, and knowing when I can realistically be of help and when I’m just gonna get in the way trying to help. So I wear a lot of hats… For example, a lot of organizations have dedicated fundraisers. People on the team who are basically marketing people, who go out and convince rich people to part with their money and give them money… Or to some extent, they might run – like Wikipedia, for example. They’ve figured out exactly the shade of red that they need to use on their “Donate $20 to Wikipedia now or we’re gonna go out of business” banner.
I have tremendous respect for Wikipedia, but I hope that freeCodeCamp never resorts to the kind of scare tactics that a lot of these organizations do resort to… Because I know they work, but it just feels intellectually dishonest to me. freeCodeCamp is doing okay, and a big part of the reason we’re running this fundraiser is because we want to bring on more people, but we don’t want to risk all the people we already have and all the structure we already have in place. So it’s kind of like a planned expansion.
But I wear a lot of hats, so I do all the fundraising myself. Whenever we’re trying to get a grant, I apply for the grant myself, I talk to the grant makers myself… And a lot of people are surprised when they have a meeting and it’ll be like 4-5 people from a company, and then it’ll just be me on our side. So it’s kind of fun to be the lone representative of freeCodeCamp… And some people might be like “Well, that’s reckless. You should have people for that.” But we have scarce donor funds, and I don’t wanna allocate those donor funds to hiring a bunch of people from outside of our organization. I want really just for people within our organization to percolate up and take different roles within the organization.
I’m okay with learning these new things. We don’t run any of our articles by a publicist or anything like that. I write it, and then usually Abbey edits it, and then we publish it, we go with it. As a result of doing that and just doing the accounting for freeCodeCamp, doing a lot of the budgeting, all that stuff, without having an outside specialist, I’ve found it is challenging, but wearing a lot hats is what humans do.
I’m gonna read a quote from Robert Heinlein, if that’s cool… Because he’s like this great science fiction author. He has this really profound quote about what he believes that all us humans should be able to do. He says “A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently and die gallantly. Specialization is for insects.”
I love that quote. I’ve heard that one before…
Is that right?
As you started getting into it, I was like “You know what - I’ve heard this…” And especially “Specialization is for insects” - that resonates, and I totally agree with that sentiment.
[01:00:08.19] You have all these hats on, and you have all these people helping you. Like you said, your budget is thin… You have managed to do what I think is an amazing job of getting support from the community. As you said, you don’t do the few large donors game, you do the mini, small donors game. That’s the game that you’re playing. And you have something like 7,000 supporters at this point who have all dedicated (what) five bucks a month to freeCodeCamp?
Yeah, 7,000 monthly active donors.
Yeah, and it adds up. That’s enough of a budget to be able to pay for servers and to have some full-time staff. And it’s robust. We’re not hanging on the word of some rich donor, “Is he gonna have the money to give to us this year or not?” I think that it’s really healthy to have a really robust, grassroots support network, as opposed to just being dependent on a few people. And whoever is giving you money, to some extent they’re your audience. They’re the ones that you’re kind of–
They’re your customer.
…keeping in mind when you’re writing things or determining what you’re gonna do next. And if you don’t have a whole lot of big patrons, if it’s mostly just your core community who you’re already trying to help, then the interests are aligned.
You have like 7,000 - is that right? 7,000 monthly contributors, donations-wise?
That’s correct, yeah.
I think what you’ve done on that front is very wise, and I also think it’s very wise to do a lot of the jobs, because – you know, Jerod and I both believe this, too… Being in the details about your business is pretty smart, in my opinion… And your business is freeCodeCamp, and you could never truly hire well for that position when it makes sense to hire for it unless you’ve done the job yourself, because you wouldn’t know what qualifications were necessary, or what the details were, or the gotchas. You can be the Appalachian trail person calling back and saying “Hey, don’t do this or do that, because that’s a mined field” or whatever. But I totally believe in being in the details of your business. That’s what makes sense.
Only if you’re trying to move as fast as possible doesn’t make sense to hire for people. Only then. Otherwise, enjoy the journey.
Are you enjoying the journey?
Oh, yeah. [laughter]
You’re on a podcast, you can’t say no… You’d be like “Oh, actually this is terrible…”
“Actually, I kind of don’t like this journey…”
You know, I worked at Taco Bell for like several years, just taking orders and making tacos. I worked at grocery stores, [unintelligible 01:02:33.16] I worked as kind of like a middle manager in a larger school chain, and as school director and as a teacher… And I loved being a teacher too, but it was nothing compared to running an open source community. The most mundane aspect of administering a non-profit is still much more exciting than making tacos.
There you go. So for this new push into the world of data science and machine learning you are doing a fundraiser, and trying to raise $150,000 starting now… And you have a fellow by the name of Darrell Silver, who has agreed to 100% match those donations up to that 150k. So tell us that story… Where did Darryl come from, and why is he so generous with this money?
Well, Darryl also has run education-focused startups, and he’s exited a couple of times. Most recently he sold his company - or got acquired - by Chegg, which is part of a bigger textbook company system; I don’t know the hierarchy of who owns what, but yeah, he has the means to support freeCodeCamp and he believes in freeCodeCamp. I’ve known him for years. We met in New York City at the original CodeLand Conference that Saron Yitbarek put on back in (maybe) 2016-2017; it was a while back.
[01:04:09.29] And I have a lot of respect for what he did through Thinkful, and The Odin Project is another project that Thinkful is patrons of that open source project as well… And yeah, he just wanted to see us grow. The Odin Project uses freeCodeCamp as one of its learning resources as well… But I think he’s fully focused on just doing the next thing. So he was just like “Yeah, let’s do this.”
We’re gonna link out to the blog post that he wrote, but I like the first paragraph of what he wrote… I’m gonna quote him if you don’t mind. He says “freeCodeCamp is a non-profit unicorn. They delivered 1.3 billion minutes of free coding education last year, they grow 60% every year, and it is sustainably run by just 12 full-time staff and hundreds of volunteers. That’s a smaller team than when Facebook acquired Instagram for 1 billion dollars.” That’s his opening paragraph.
Yeah. A non-profit unicorn.
So for the next 30 days - and of course, we had some production time on this, so for the next N days; don’t wait, go check it out right now - this fundraiser is gonna be going on. And during this time, up to the first 150k, Darryl is gonna match dollar for dollar, right? So every dollar you put in is worth two dollars. That’s excellent. So where does the money go? What’s it going to exactly?
Yeah, 100% of this money is going to go toward the data science curriculum. So the big cost is usually people in any organization… And we have already found a really good instructor who’s got like 20 years of experience teaching collegiate and high-school level… So he’s on, and we’re gonna identify a few other instructors as well who can help, at least in a part-time capacity. A lot of professors work several different jobs, or like they’re adjuncts in one place and then they write books and do other things on the side… So we’re gonna try to find a good, solid collection of people who already know what freeCodeCamp is and have been a part of the community.
So we’re not gonna try to bring in total outsider star math professors. We don’t really care about that. What we care about is people who are passionate about teaching, and people who have a lot of experience teaching.
So let’s assume you get the 300k and you put it towards the curriculum… When’s the curriculum coming out? What can we expect? I mean, probably there’s some work ahead, but do you have deadlines and ETAs?
Yeah, that’s a good question.
Any promises you’d like to make here on the air?
We don’t use deadlines internally, at all, period. And that’s kind of a radical thing that people are like “Oh… That’s very contrarian of you, Quincy. Why don’t you use deadlines? How do you get things done?” But things get done, regardless of whether you put a deadline on… And I’ve found that things are generally done better if they’re not up against this time pressure that results in compromises.
Now, I can understand certainly the use of deadlines. We happen to have a really motivated team who just gets things done and is very communicative of the state of those things… We also work in massive parallel. I like to call ourselves the Massively Parallel Organization, and this means that we have so many different threads and nobody is getting blocked by anybody else.
If you can take work and you can make it discreet enough and put it on its own thread, then you don’t have people blocking one another, and you reduce the communication overhead, and like “Oh, that got done over there. Great.” But I wasn’t waiting on it. It’s just – I’m delighted that that’s done. “Well, that happened. That happened. That happened.” So that’s a big part of our organizational philosophy - trying to figure out ways that we can design the work and spec it out to where nobody else is waiting on this work to be done. And then it can just ship whenever.
And I suspect for the data science curriculum - we’ve already done a tremendous amount of planning around that, and you can actually browse through a lot of the sheets that we’ve created that kind of break down all the concepts that we’ll be able to teach, and those are gonna continue to evolve. And those are public. Anybody can go and view in a Google Docs so they can see the state of those different sheets and how we’re planning different things…
[01:08:09.13] And there’s a form – if you’re a math professor, or if you’re a computer science professor or if you’re a practitioner, or machine learning, or some other form of data engineering or something like that - fill out that form, send us feedback on the curriculum. We might discover a new textbook that we can look at for inspiration, something like that, and you might be able to help us steer the curriculum more in the direction of what you would like to see taught.
But there’s a very good quote about deadlines… Shigeru Miyamoto, the creator of Zelda and Mario Bros/Super Mario Bros, he says “A rush game will be forever bad. A delayed game will eventually be good.” I think if you look at Cyberpunk 2077, it’s very much a victim of that overly ambitious deadline. And the whole culture of crunch that you encounter in a lot of fields of software development can be tied back to unrealistic deadlines. People who don’t have any business setting the deadline. I’m not a domain expert in data science. I’m not a domain expert in math. But I understand that it’s this big, abstract topic, and that if I ask somebody who does have domain expertise in that, like how long they think it’ll take to teach this concept, or how long they think it’ll take to exhaustively cover this concept, or this field of study, they can probably come up with a reasonable estimate of that.
So I think the world will be much better if managers listen to engineers rather than dictate it downward on engineers. Now, I’m sure there are lots of managers who do do that, and a lot of projects are successfully shipped on deadline or even ahead of deadline. But I do think that having a deadline results in compromises that are not necessary if you plan things out a little bit better.
You still have those expectations for this though. You have a roadmap, you’ve broken it down into three stages, you know that two stages will be done in roughly two years… You have at least expectation, if not some variation; it’s not a deadline, it’s more like “Expected in two year, maybe.” The maybe part is the cool part. “In two years, maybe…”
Maybe. [laughs] No promises.
Yeah. Well, I’m optimistic that we’ll be able to ship parts of this curriculum this year, in 2021. And the reason why is because, again, we’re gonna start with specific deliverables that people need the most. People need to be able to build the certification projects in order to claim the certifications. They can learn data science and machine learning and math from a lot of different sources. There are excellent [unintelligible 01:10:43.23] out there that they can take, there are good textbooks that they can pick up, online courses that they can buy, YouTube channels, podcasts they can listen to to learn all these topics… But in order to be able to actually earn the certifications and have that as problem sets - that’s like a huge thing that freeCodeCamp gives. It gives a standardized problem that a lot of people have to solve. And everybody builds that same project and gets all those test suites to pass, and then they can turn around and help one another. It creates a discussion. That’s kind of square one for actually having a learning experience, is having some sort of evaluation criteria. And by the way, we have videos on most of these topics already on freeCodeCamp.
On your YouTube, yeah.
So we can slice those up into atomic little bits, and we can add some comprehension check questions, and that’s basically what we do with our Python curriculum so far, is just use video. Video is good, and text is good too, but there’s no beating interactive. Interactive is hands down the ultimate way to ensure that people really understand the subject matter and are able to grapple with it and retain it.
Well, we haven’t given our audience an exact Why yet in this show. I think we’ve meandered to a possible Why, but let’s end it with a good Why. Why help fund this mission? I think you’ve laid out the rough budget is around 300k. You have a benefactor giving, which we’ve discussed, $150,000 of match. So what’s the Why? Why should our audience care, why should our audience consider donating their hard dollars to this cause?
[01:12:14.21] We’re gonna put into existence a well structured, well thought out, vertically-integrated – okay, I’m using a lot of buzzwords, I apologize…
There you go.
[laughs] I like it.
But that’s an important distinction. You can start at the beginning and you can go all the way through to the end and you’ll have a very good idea. It’s not like hopping from course to course where you’re like “Oh, they didn’t talk about this in this course. I have to go find another course to teach that.” Or like “Oh, they already did this. Do I have to spend 20 minutes reviewing this topic that I just finished?” That’s what happens when you start to plug a bunch of incompatible courses together into your own curriculum. And plenty of people do that. I did that when I was learning to code, but I think a cohesive, linear curriculum is very valuable from that perspective. You’re gonna get a powerful mathematical curriculum that teaches you basically all the math you would have learned as an undergraduate engineering student, except we’re gonna teach it using primarily Python. So instead of learning it with like a graph and calculator and pen and paper, you’re just gonna be coding Python the whole time… And by doing that, you’re gonna actually be doing the work the way that people in the field do it, which is in a Jupyter Notebook, with the power of a scripting language instead of just the old-fashioned way that it’s been done for thousands of years.
Second, this is going to be completely free, and that means that you can use it, your kids can use it, your neighbors can use it, people around the world, many of whom, as we established, don’t have credit cards, 60% of whom live off less than $10 a day - they can use it. So you’re kind of giving this gift to humanity.
And third, it is all Creative Commons, ShareAlike; Creative Commons 4.0. BY-SA is the specific license if you wanna look it up… But it’s extremely permissive, and there are no commercial restrictions. You could start a school and you could use this curriculum as part of your own curriculum. There’s no restrictions on that. People can build businesses around freeCodeCamp if they want to, and we’re happy to provide that input, we’re happy to stimulate that economy and hopefully help for local businesses to be able to exist in that capacity. We’re not gonna ask for anything in return. And everything, of course, is also permissively licensed under the BSD 3 license, all the software we write.
So it’s as open as you can get. So just think of it as like you’re giving to a [unintelligible 01:14:34.11] essentially. You’re giving us money, and we know how to use that money to take what I consider to be a very small amount of money. If you look at the budget of Khan Academy, which is a great organization that does great work - but their budget is, I think, more than 100 times larger than ours. This is like a very impactful donation that you can make, and we’re gonna make efficient use of it.
You know, a small amount or a nominal amount… It doesn’t have to be a tremendous amount. It doesn’t have to be a tremendous amount; it doesn’t have to be thousands of dollars, for example. It could be a very small amount to get to the $150,000 plus the 150k match to get to your 300k to build out this curriculum that is gonna do this great [01:15:26.03] for the world.
Quincy, we love you, we appreciate what you do for the world, we appreciate your non-profit unicorn, as you had said… And we appreciate that about you. We think you have a great heart, and that’s why we have you back on the show. We love your mission, and to our audience, we hope you love it, too. Check out what he’s doing, and… Thanks, Quincy.
Thank you very much Jerod, Adam for having me, and thanks for continuing to run the Changelog. It’s awesome.
Our transcripts are open source on GitHub. Improvements are welcome. 💚