Skip to content
Generic filters
Exact matches only

Why Machine Learning Does Not Have to Be So Hard

Last Updated on July 13, 2019

Technical topics like mathematics, physics, and even computer science are taught using a bottom-up approach.

This approach involves laying out the topics in an area of study in a logical way with a natural progression in complexity and capability.

The problem is, humans are not robots executing a learning program. We require motivation, excitement, and most importantly, a connection of the topic to tangible results.

Useful skills we use every day like reading, driving, and programming were not learned this way and were in fact learned using an inverted top-down approach. This top-down approach can be used to learn technical subjects directly such as machine learning, which can make you a lot more productive a lot sooner, and be a lot of fun.

In this post, you will discover the concrete difference between the top-down and bottom-up approaches to learning technical material and why this is the approach that practitioners should use to learn machine learning and even related mathematics.

After reading this post, you will know:

  • The bottom-up approach used in universities to teach technical subjects and the problems with it.
  • How people learn to read, drive, and program in a top-down manner and how the top-down approach works.
  • The frame of machine learning and even mathematics using the top-down approach to learning and how to start to make rapid progress as a practitioner.

Let’s get started.

You're Doing it Wrong. Why Machine Learning Does Not Have to Be So Hard

You’re Doing it Wrong. Why Machine Learning Does Not Have to Be So Hard
Photo by popofatticus, some rights reserved.


This is an important blog post, because I think it can really help to shake you out of the bottom-up, university-style way of learning machine learning.

This post is divided into seven parts; they are:

  1. Bottom-Up Learning
  2. Learning to Read
  3. Learning to Drive
  4. Learning to Code
  5. Top-Down Learning
  6. Learn Machine Learning
  7. Learning Mathematics

Bottom-Up Learning

Take a field of study, such as mathematics.

There is a logical way to lay out the topics in mathematics that build on each other and lead through a natural progression in skills, capability, and understanding.

The problem is, this logical progression might only make sense to those who are already on the other side and can intuit the relationships between the topics.

Most of school is built around this bottom-up natural progression through material. A host of technical and scientific fields of study are taught this way.

Think back to high-school or undergraduate studies and the fundamental fields you may have worked through: examples such as:

  • Mathematics, as mentioned.
  • Biology.
  • Chemistry.
  • Physics.
  • Computer Science.

Think about how the material was laid out, week-by-week, semester-by-semester, year-by-year. Bottom-up, logical progression.

The problem is, the logical progression through the material may not be the best way to learn the material in order to be productive.

We are not robots executing a learning program. We are emotional humans that need motivation, interest, attention, encouragement, and results.

You can learn technical subjects from the bottom-up, and a small percentage of people do prefer things this way, but it is not the only way.

Now, if you have completed a technical subject, think back to how to you actually learned it. I bet it was not bottom-up.

Learning to Read

Think back; how did you learn to read?

My son is starting to read. Without thinking too much, here are the general techniques he’s using (really the school and us as parents):

  • Start by being read to in order to generate interest and show benefits.
  • Get the alphabet down and making the right sounds.
  • Memorize the most frequent words, their sounds, and how to spell them.
  • Learn the “spell-out-the-word” heuristic to deal with unknown words.
  • Read through books with supervision.
  • Read through books without supervision.

It is important that he continually knows why reading is important, connected to very tangible things he wants to do, like:

  • Read captions on TV shows.
  • Read stories on topics he loves, like Star Wars.
  • Read signs and menus when we are out and about.
  • So on…

It is also important that he gets results that he can track and in which he can see improvement.

  • Larger vocabulary.
  • Smoother reading style
  • Books of increasing complexity.

Here’s how he did not learn to read:

  • Definitions of word types (verbs, nouns, adverbs, etc.)
  • Rules of grammar.
  • Rules of punctuation.
  • Theory of human languages.

Learning to Drive

Do you drive?

It’s cool if you don’t, but most adults do out of necessity. Society and city design is built around personal mobility.

How did you learn to drive?

I remember some written tests and maybe a test on a computer. I have no memory of studying for them, though I very likely did. Here’s what I do remember.

I remember hiring a driving instructor and doing driving lessons. Every single lesson was practical, in the car, practicing the skill I was required to master, driving the vehicle in traffic.

Here’s what I did not study or discuss with my driving instructor:

  • The history of the automobile.
  • The theory of combustion engines.
  • The common mechanical faults in cars.
  • The electrical system of the car.
  • The theory of traffic flows.

To this day, I still manage to drive safely without any knowledge on these topics.

In fact, I never expect to learn these topics. I have zero need or interest and they will not help me realize the thing I want and need, which is safe and easy personal mobility.

If the car breaks, I’ll call an expert.

Learning to Code

I started programming without any idea of what coding or software engineering meant.

At home, I messed around with commands in Basic. I messed around with commands in Excel. I modified computer games. And so on. It was fun.

When I started to learn programming and software engineering, it was in university and it was bottom up.

We started with:

  • Language theory
  • Data types
  • Control flow structures
  • Data structures
  • etc.

When we did get to write code, it was on the command line and plagued with compiler problems, path problems, and a whole host of problems unrelated to actually learning programming.

I hated programming.

Flash-forward a few years. Somehow, I eventually starting working as a professional software engineer on some complex systems that were valued by their users. I was really good at it and I loved it.

Eventually, I did a course that showed how to create graphical user interfaces. And another that showed how to get computers to talk to each other using socket programming. And another on how to get multiple things to run at the same time using threads.

I connected the boring stuff with the thing I really liked: making software that could solve problems, that others could use. I connected it to something that mattered. It was no longer abstract and esoteric.

At least for me, and many developers like me, they taught it wrong. They really did. And it wasted years of time, effort, and results/outcomes that enthusiastic and time-free students like me could dedicate to something they are truly passionate about.

Top-Down Learning

The bottom-up approach is not just a common way for teaching technical topics; it looks like the only way.

At least until you think about how you actually learn.

The designers of university courses, masters of their subject area, are trying to help. They are laying everything out to give you the logical progression through the material that they think will get you to the skills and capabilities that you require (hopefully).

And as I mentioned, it can work for some people.

It does not work for me, and I expect it does not work for you. In fact, very few programmers I’ve met that are really good at their craft came through computer science programs, or if they did, they learned at home, alone, hacking on side projects.

An alternative is the top-down approach.

Flip the conventional approach on its head.

Don’t start with definitions and theory. Instead, start by connecting the subject with the results you want and show how to get results immediately.

Lay out a program that focuses on practicing this process of getting results, going deeper into some areas as needed, but always in the context of the result they require.

It Is Different

It is not the traditional path.

Be careful not to use traditional ways of thinking or comparison if you take this path.

The onus is on you. There is no system to blame. You only fail when you stop.

  • It is iterative. Topics are revisited many times with deeper understanding.
  • It is imperfect. Results may be poor in the beginning, but improve with practice.
  • It requires discovery. The learner must be open to continual learning and discoverery.
  • It requires ownership. The learner is responsible for improvement.
  • It requires curiosity. The learner must pay attention to what interests them and follow it.

It Is Dangerous

Seriously, I’ve heard “experts” say this many times, saying things like:

You have to know the theory first before you can use this technique, otherwise you cannot use it properly.

I agree that results will be imperfect in the beginning, but improvement and even expertise does not only have to come from theory and fundamentals.

If you believe that a beginner programmer should not be pushing changes to production and deploying them, then surely you must believe that a beginner machine learning practitioner would suffer the same constraints.

Skill must be demonstrated.

Trust must be earned.

This is true regardless of how a skill is acquired.

You’re a Technician


This is another “criticism” I’ve seen leveled at this approach to learning.

Exactly. We want to be technicians, using the tools in practice to help people and not be researchers..

You do not need to cover all of the same ground because you have a different learning objective. Although you can circle back and learn anything you like later once you have a context in which to integrate the abstract knowledge.

Developers in industry are not computer scientists; they are engineers. They are proud technicians of the craft.

Efficient, Effective, and a Fun Way to Learn

The benefits vastly outweigh the challenge of learning this way:

  • You go straight to the thing you want and start practicing it.
  • You have a context for connecting deeper knowledge and even theory.
  • You can efficiently sift and filter topics based on your goals in the subject.

It’s faster.

It’s more fun.

And, I bet it makes you much better.

How could you be better?

Because the subject is connected to you emotionally. You have connected it to an outcome or result that matters to you. You are invested. You have demonstrable competence. We all love things we are good at (even if we are a little color blind to how good we are), which drives motivation, enthusiasm, and passion.

An enthusiastic learner will blow straight past the fundamentalist.

Learn Machine Learning

So, how have you approached the subject of machine learning?

Seriously, tell me your approach in the comments below.

  • Are you taking a bottom-up university course?
  • Are you modeling your learning on such a course?

Or worse:

Are you following a top-down type approach but are riddled with guilt, math envy, and insecurities?

You are not alone; I see this every single day in helping beginners on this website.

To connect the dots for you, I strongly encourage you to study machine learning using the top-down approach.

  • Don’t start with precursor math.
  • Don’t start with machine learning theory.
  • Don’t code every algorithm from scratch.

This can all come later to refine and deepen your understanding once you have connections for this abstract knowledge.

  1. Start by learning how to work through very simple predictive modeling problems using a fixed framework with free and easy-to-use open source tools.
  2. Practice on many small projects and slowly increase their complexity.
  3.  Show your work by building a public portfolio.

I have written about this approach many times; see the “Further Reading” section at the end of the post for some solid posts on how to get started with the top-down approach to machine learning.

“Experts” entrenched in universities will say it’s dangerous. Ignore them.

World-class practitioners will tell you it’s the way they learned and continue to learn. Model them.


  • You learned to read by practicing reading, not by studying language theory.
  • You learned to drive by practicing driving, not by studying combustion engines.
  • You learned to code by practicing coding, not by studying computability theory.

You can learn machine learning by practicing predictive modeling, not by studying math and theory.

Not only is this the way I learned and continue to practice machine learning, but it has helped tens of thousands of my students (and the many millions of readers of this blog).

Learning Mathematics

Don’t stop there.

A time may come when you want or need to pull back the curtain on the mathematical pillars of machine learning such as linear algebra, calculus, statistics, probability, and so on.

You can use the exact same top-down approach.

Pick a goal or result that matters to you, and use that as a lens, filter, or sift on the topics to study and learn to the depth you need to get that result.

For example, let’s say you pick linear algebra.

A goal might be to grok SVD or PCA. These are methods used in machine learning for data projection, data reduction, and feature selection type tasks.

A top-down approach might be to:

  1. Implement the method in a high-level library such as scikit-learn and get a result.
  2. Implement the method in a lower-level library such as NumPy/SciPy and reproduce the result.
  3. Implement the method directly using matrices and matrix operations in NumPy or Octave.
  4. Study and explore the matrix arithmetic operations involved.
  5. Study and explore the matrix decomposition operations involved.
  6. Study methods for approximating the eigendecomposition of a matrix.
  7. And so on…

The goal provides the context and you can let your curiosity define the depth of study.

Painted this way, studying math is no different to studying any other topic in programming, machine learning, or other technical subjects.

It’s highly productive, and it’s a lot of fun!

Further Reading

This section provides more resources on the topic if you are looking to go deeper.


In this post, you discovered the concrete difference between the top-down and bottom-up approaches to learning technical material and why this is the approach that practitioners should and do use to learn machine learning and even related mathematics.

Specifically, you learned:

  • The bottom-up approach used in universities to teach technical subjects and the problems with it.
  • How people learn to read, drive, and program in a top-down manner and how the top-down approach works.
  • The frame of machine learning and even mathematics using the top-down approach to learning and how to start to make rapid progress as a practitioner.

Do you have any questions?
Ask your questions in the comments below and I will do my best to answer.

error: Content is protected !!