September, oh-so-productive, much success
Traditional dog waiting for their human:
Winter is coming
We're about to launch Codexpanse, the next big, main project for me. Its idea is twofold:
- Teach beginners to program.
- Help developers expand their domain.
Before I unwrap this, let me quickly show all the parts of Codexpanse:
- Courses and books for beginners. New course each month. Ebook versions coming later in October.
- Courses and books for developers (coming soon). Starting with CS/Math and Clojure.
- Courses and books on digital essentialism, productivity, personal knowledge base building (coming soon).
- Codexpanse Podcast. CS, math, physics and the computable nature of the Universe. New episode this week!
- CS.quickref.dev: concise encyclopedia of CS terms. 3 levels of explanation: layman, beginner, expert.
- python.quickref.dev: Python reference for beginners (complements the courses)
- YouTube channel. Visual lessons.
- Blog (coming soon).
Phew! Let's talk why.
Another "learn-to-code" thing?
Yeah, I hear you. Online courses for beginners? There's like a million of them!
I've been teaching beginners in different settings (offline, online, privately, large groups, small groups, individually). And I've learned this: some people have endless free and paid resources, and some have nothing.
All those courses, books and videos just don't work for some folks. Open any book or watch any course — they all feel the same. The order of topics, the explanations, the analogies and techniques, all feel so similar.
Oh, and they all start with "Hello World" :-)
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 formal books and long courses. Among the developers I meet, the majority said they never had a hard time learning to program.
And this makes sense, right? Programming is not for everybody. If it's so hard, maybe it's not for you. It's a valid argument, and I agree with it for most other fields. I don't want 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. I don't know.
But 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. Maybe it is. But maybe we're missing out on important things other people can bring.
We've been filtering out people for a while now, and, to be honest, I can't say software engineering is in a good state right now. Other types of mindsets may do good.
People talk about diversity in tech lately. I'm interested in diversity of mindsets. I believe our industry and humanity in general will benefit from a wider range of thinking.
That was the first area of focus: beginners and mindsets.
The second area is experienced developers who want to learn something distinctly novel (for them). Not a new framework or a language, but a new paradigm, completely different tool or maybe some fundamentals of computer science and math.
Let me draw a diagram! (I got this cool app called OmniGraffle now...)
As you move 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. Black graph shows this natural progression. It makes sense, the deeper you go, the less stuff there is.
Red graph shows the diversity of available resources. In other words, 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.
But if you want to sharpen your abstract algebra or discrete math or data structures knowledge, there are a few ways, and they feel pretty similar, again. Coursera, textbooks, rare blog posts and a few videos. Don't get me wrong, some of them are brilliant! But this is where I want try to create something, too.
What CAN be different?
Maybe, there aren't really other ways to explain basic concepts!
Maybe.
Or maybe we got lazy.
I can't say "we made a different explanation that will work for you!". 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.
Doesn't work? Don't worry! Try another thing!
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 all 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 are to be covered in our podcast.
(Users only pay once to get them all!)
What to expect
If you're reading this newsletter, you're probably not a complete beginner in coding. So, let me first tell you about my grand plans for the expert-level courses.
I'm getting back to my initial dream (that led to Hexlet in the first place) and build a cool new fundamental curriculum.
- 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 (or maybe 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:
- Emacs
- Org mode
- Bash
- Digital essentialism and not going insane
- Automation
When
We're launching later this month. You'll get a discount, because I like you :-)
Hopes
It took quite some time to get to this point, after years of value-neglect. Long periods of time when I didn't think for myself, and didn't consider what exactly I find valuable, what things I believe to be important.
I'm not there yet, since there is no "there". Everything is a vector.
Achievable goals are limited by definition.
Vectors are limitless.
Cheers!