Two gaps in programming education
Last updated: Oct 30, 2019
In short (TL;DR)
- Codexpanse is a new educational effort.
- Our mission is to foster the diversity of minds.
- We teach programming, computer science, and math in noncanonical ways.
What is Codexpanse
We’re launching Codexpanse: a humane educational effort. We help people learn programming, app development, computational thinking, personal computing, and computer science. Codexpanse consists of:
- online courses
- reference sites and encyclopedias
- youtube channel
Why though? Aren’t there enough free and paid resources out there? Especially for beginners. Maybe even too much! Let me explain.
The First Gap
My name is Rakhim, I’m a co-founder of Codexpanse. I’ve been teaching beginners in different settings (online, offline, university, workshops, privately, large groups, small groups, individually). And I’ve learned this: while some people have got endless free and paid resources, there are still people who have nothing that works for them.
Open any book or watch any course — they all feel very similar. The order of topics, the explanations, the analogies and techniques, all resemble one another. Oh, and they all start with “Hello World” 😐
Do you feel excited about “Hello World” and “doing math”? I do! Some people just get it. Any decent book or teacher would work for them. They quickly understand basic concepts and off they go, into the future. I was like that and I thrive on “Hello World”, doing “math”, formal books and long courses. Among the developers I meet, the majority said they never had a very hard time learning to program.
But I rarely hear them talk about problems in these basic approaches. It’s a survivorship bias: we learned through X, therefore X is fine.
This makes sense, right? Programming is not for everybody. If it’s so hard, maybe programming is not for you. It’s a valid argument, and I agree with it for most other fields. I don’t want just anyone to be able to become a doctor. Or a civil engineer. Or a plumber. So, maybe, filtering by initial fitness is a good thing?
Maybe. But maybe not.
There are 2 points I want to make:
- Programming is a meta-skill. You can’t compare programming with medicine, because programming is medicine and engineering and politics and art. It’s a universal tool.
- We don’t know if filtering people by their ability to learn from current resources is a net positive. We might be missing out on important things other people and other mindsets can bring.
We call this The First Gap.
As you progress from beginner to expert, the amount of available resources decreases. There are hundreds of thousands of “learn to code” articles, books, videos and courses. There are also quite a lot of resources for intermediate devs: documentation, community resources, books, talks, etc. Go further, and you end up with a handful of books and courses on advanced topics.
The red graph below shows the diversity of available resources: how many different approaches and ideas are used to explain things. In my experience it’s pretty low on the ends: for beginners and for experts.
The pink bar reveals The First Gap: a big difference between the number of resources and their variety:
What CAN be different?
Well, maybe there’s low variety in beginner resources because there aren’t really many ways to explain basic concepts? Or maybe we got lazy.
Of course, we can’t try to create perfect, individual resource for every person. Our goal is to provide a variety of explanations in a variety of mediums. Text, exercises, videos, comics, podcasts, illustrated-funny and illustrated-serious. Multimedia! (Such a 90s word!) Immerse the learner and make them apply knowledge from day one.
If something doesn’t work, doesn’t feel right, then the learner should have at least a few alternatives.
There’s this myth about learning styles: some people are visual, some prefer text, etc. It turned out to be a misconception. Good learning resources that incorporate rich media work well for everyone. Bad learning resources work badly for everyone.
We want to provide a variety of resources for hungry minds. That’s why courses on Codexpanse will come as combos:
- Online course with interactive exercises, quizzes and text.
- Projects with automated testing.
- Illustrations, downloadable cheat-sheets and lecture notes.
- Videos and animations.
- Full e-book versions in Epub, Kindle and PDF.
- Some topics will be covered in our podcast.
The Second Gap
The second area of focus for Codexpanse is The Second Gap: a huge difference between the depth of complex topics and the number and variety of explanations. This is simpler to understand and justify, it basically means there aren’t too many different ways to learn deeper topics. For starters, we plan to deliver the following programs:
- Computer Science and Math for the busy developer. Rapid overview of fundamental topics including proofs, algorithms, data structures, set theory, graphs, theory of computation and cryptography. Currently under development.
- Cryptography. Math with implementations and exercises in Python/JS.
- Deeper into data structures.
- Theory of computation, languages, grammars, lambda-calculus and automata theory.
Also, some fun practical things, including:
- Clojure basics / Functional programming
- Web development from the first principles with Clojure (full stack)
- SQL and relational algebra
And some weird ones:
- Org mode
- Digital essentialism and not going insane
- Personal Automation
This is just the beginning. Our plans are somewhat ambitious, but hey, you only live once, right.
— Rakhim D. (@freetonik)