DDeep Dive with Ali Abdaal
← All frameworks
Innovation

Core-First Learning Build

Learn by building the hardest essential capability before the surrounding product

Difficulty
Advanced
Time to result
~months to results
Steps
6
Confidence
96%

The Core-First Learning Build treats a real product as the curriculum. First identify the indispensable interaction and the hardest technical uncertainty within it. Build that difficult capability in minimal form using available tutorials, libraries, protocols, and documentation rather than completing a broad course beforehand. Once the core works, add the surrounding interface, workflows, and secondary features. This sequence reduces existential technical uncertainty early and produces infrastructure that accelerates later platforms or versions. The approach depends on persistence: difficult defects may consume days or weeks, and discomfort is evidence of active learning rather than proof that the builder lacks ability. The result is both a functioning product and operational understanding of its full stack.

Origin

Younas used this approach after leaving banking to build Muzmatch, beginning with real-time chat before constructing the rest of the iOS and Android products.

Core principles

  • 01Learn through a concrete deliverable
  • 02Start with the product's hardest essential capability
  • 03Use existing protocols, libraries, and tutorials
  • 04Let completed infrastructure accelerate later builds
  • 05Persist through prolonged technical discomfort

How to run it

  1. 1

    Define the essential interaction

    Identify the single interaction without which the product has no value. Describe the smallest version that would prove it can work.

    Pro tip Frame the core as a user outcome, such as two people exchanging messages in real time.

    Watch out Do not confuse visual polish with essential functionality.

  2. 2

    Attack the hardest uncertainty

    Begin with the most difficult technical component inside the core interaction. Resolve the risk that could otherwise invalidate the whole product.

    Pro tip Search for mature protocols and open-source components before inventing infrastructure.

    Watch out Starting with easy peripheral screens can create false progress.

  3. 3

    Learn only what the build requires

    Use focused tutorials and documentation to understand the immediate tools and concepts. Apply each concept directly to the working product.

    Pro tip Complete one basic orientation tutorial, then shift rapidly into project-driven learning.

    Watch out Avoid endless course consumption that postpones contact with real problems.

  4. 4

    Debug through discomfort

    Investigate failures systematically and continue even when one blocker consumes substantial time. Treat each resolved defect as reusable technical knowledge.

    Pro tip Reduce difficult bugs to the smallest reproducible behaviour before testing fixes.

    Watch out Do not interpret an unfamiliar or painful problem as evidence that you cannot learn the skill.

  5. 5

    Build outward from the core

    Once the critical capability works, add profiles, onboarding, interfaces, and other supporting features around it.

    Pro tip Preserve clean endpoints and backend services so they can support additional clients.

    Watch out Adding scope before stabilising the core increases debugging complexity.

  6. 6

    Reuse the foundation

    Apply the completed backend, endpoints, and product understanding to subsequent platforms or iterations.

    Pro tip Separate reusable services from platform-specific interface code.

    Watch out Do not assume the second platform requires solving every foundational problem again.

In the wild

Building Muzmatch chat first

Younas began with real-time chat, the heart of the dating product, and used ejabberd and XMPP resources to make it work. He then built the rest of the iOS application around that capability. With the backend and endpoints already completed, the Android version took about one month rather than the four months spent on iOS.

He released native iOS and Android applications with a backend after roughly six months of project-driven learning.

Common mistakes

Learning without a deliverable

Broad study can delay the feedback and motivation that come from applying knowledge to an actual product.

Saving the hardest part for last

Peripheral progress has little value if the unresolved core capability later proves infeasible.

Quitting at the first deep blocker

Complex bugs can require extended investigation, and encountering one does not establish that the learner is incapable.

Is it for you?

Best for

It is best for motivated builders who have a specific product in mind and can tolerate sustained trial and error.

Not ideal for

It is not ideal when failure of the core could create safety, legal, or irreversible operational risks without expert supervision.

From the transcript

I actually started with the hardest thing first, I remember.

Shahzad Younas · 11:40

And I learned by doing like how to build an app.

Shahzad Younas · 11:40

So went to the heart of what that was, which was chatting and everything else.

Shahzad Younas · 11:40

From the episode

How To Build A Multi-Million $ Dating App