Skip to main content

Theory of learning

Compositional assimilation

For most disciplines, you'll never find the bottom: English could be reduced to words, but dictionaries don't "explain" literature. Watchmaking could be reduced to gears, but gears take us down a rabbit hole of elastic deformation, contact stress, and ultimately quantum mechanics. In fact, anything physical arguably explodes in complexity as we zoom in.

By contrast, computer software is directly reducible to digital logic. A program's operation can be visualized exactly, one step at a time. This is theoretically its defining characteristic.

Of course, when a professional engineer looks at a humongous app such as Firefox or Photoshop, they don't imagine bytes. Their mental picture draws from thousands of abstractions and industry standard concepts. But underneath all that is an ingrained expectation that every subsystem could be broken down, again and again, until every part is crystal clear.

From "I can understand any app", it's a small step to the conviction that "I can make any app."

In other words, top engineers learn new concepts by reconstructing them from what they already know, a learning methodology that we call compositional assimilation. It isn't merely relating new ideas to old ones. With software, each layer can be actually assembled from the layers below. What's the best way to learn the Lisp programming language? A top engineer will tell you to code your own Lisp interpreter in C. If you can't do that, you don't really "know" Lisp.

Compositional assimilation comes naturally if you grew up writing assembly language on retro home computers, where the whole system fit in a single user manual. But sadly, a student today faces a bewildering ocean of fancy frameworks, development tooling, cloud infrastructures... not to mention AI assistants that amplify the abilities of experienced engineers, while luring beginners into habits that sidestep understanding and ultimately block their growth. Understandably, they struggle to find even a small island of something they can deeply know, let alone "compose" into other concepts.

The Hybrix promise

  1. You can learn everything there is to know about the Hybrix virtual computer. You'll be able to explain the function of any byte in its memory.
  2. You can singlehandedly make an entire program, eventually without any framework at all.
  3. It won't be a disappointing toy environment. You'll create complex programs that function like real apps. They might even be beautiful!
  4. The ocean won't get any smaller. Hybrix won't teach you Docker or AWS or TypeScript or all the other concepts needed for a job. What Hybrix provides is the mental foundation for assimilating all those things: No matter how complicated is a system that you confront, ultimately it has to run on a digital computer. And that's something you'll know!