Six years ago I started putting machine learning courses online in what I called the End to End Machine Learning School (e2eML). I hoped that eventually I would build a curriculum and a student body large enough to be self sustaining and allow me to teach full time. As of March 1, 2025 I'll be closing it down. Here are some things I learned along the way.
Money comes from students
It's obvious in retrospect, but in a school like mine, every dollar that went into my pocket came out of a student's pocket. In order to make enough to rely on teaching as a primary source of income, I either had to charge a few students a lot of money, or lots of students a little money. These approaches represent two different business plans: one where I focus on a small group of high-paying students and one where I recruit as many students as possible who can pay a small fee.
People don't like giving away their money
I was active on LinkedIn and Twitter and sent email newsletters. I posted regularly and engaged with commenters. I answered follow up questions and was responsive to requests. I had tens of millions of impressions on posts advertising my courses. Over 16,000 students committed to the school enough to sign up with an email address for some of the free content. Maybe 2% of those signed up for paid courses. Sales and marketing is hard work and I have a lot of respect for the people who are good at it.
I'm don't like telling people to give me their money
Some of the most popular ways of persuading people to part with their money are by frightening them or by promising them something you can't give them. I was uncomfortable with both of these, even in small doses. I wish I could have told prospective students that my courses would have gotten them high paying jobs, but that would have been an exaggeration. I wish I could have told them they'd be left behind if they didn't sign up today, but that would have been a lie. So I told them that the course content was fascinating and accessible, and might be useful. Not exactly a hard sell, but I realized that's the salesman I am.
I enjoy helping people get a foothold
When confronting a new topic or a new field, there's a thing that happens sometimes where you are excited about it, but you don't know where to start. That's a critical point. It's like starting to climb a mountain, but being confronted by a blank face of rock. There are a few people who will relentlessly hammer at it until they make their own way up, but there is a much larger group who just need some pointers on the first few steps--here's a less steep section; here's an edge to hold onto--and then they can take it from there. I love being able to point out those first few moves.
This became the pattern for the content I created. After getting comfortable with a topic, I would write to introduction and tutorial that I wish I had when I started. What would past me most want to know?
This decision meant that examples and concepts were often simplified, sometimes leaving out important details at first. Sometimes they weren't entirely correct, but gave a useful mental model for getting started. They definitely didn't showcase elegant mathematical formalisms and famous-name histories. It's not the only way to teach or even the best one, but it's one I chose.
I enjoyed reaching people who might not have many options
In order to make the courses financially accessible, I chose a low-tuition/ many student business model. This decision meant that I would not be able to give students much individual attention or mentoring or feedback. It made the nature of the courses more one-way and asynchronous. It certainly isn't the most effective way to teach. There is no substitute for one-on-one, interactive teaching. But it was the way I could reach the largest number people.
Ultimately it was also the reason I made the courses free. I realized that even a US$9 cost was prohibitive for many of the people I was trying to reach. I experimented with discounts and promotions and scholarships, but at the end I realized that I had two incompatible goals--1) get money from students and 2) reach students without money--so I let go of the former and doubled down on the latter.
I enjoyed lecturing more than fielding questions
I realized that I'm not actually cut out to be a great teacher. I like to write prose and code and presentations and videos, but I struggled when it came to debugging technical issues or answering students' very thoughtful questions about the content. The asynchronous nature of the content meant that I was already focused on the next course. Sometimes the questions were about something I published two years ago, and I had to do some industrial grade dredging to remember what I was thinking then.
I enjoyed curiosity-driven projects more than topic coverage
In a curriculum, there is an expectation that topics will be covered somewhat exhaustively. An arithmetic curriculum that only covers subtraction and division would be weird. Machine learning is a broad topic, but there is an expectation that a ML curriculum will cover at least the most popular algorithms, and especially whatever is hot at the moment. (In 2019 that was neural networks.)
However, I found that some of my most satifying work was in exploring deserted corners or experimenting with new methods. Rather than encyclopedic coverage of common regularization methods, what about trying out some new ones? What if we changed convolutional neural networks so that they use sharpened cosine similarity instead of convolution? Can we improve on existing discrete optimization methods for hyperparameter optimization?
Several times I lost steam on a course only to realize after some introspection that I just wasn't interested in that topic at the moment. I was forcing it. Forcing it and powering through the boredom is a normal part of life if someone is paying you to do a job. But after I stopped charging for my courses I realized that I was free to pursue whatver caught my fancy. So I did.
Writing is an indispensible part of my learning process
Even when I started teaching on a topic I thought I understood or code I felt comfortable with, the writing step transformed it. As I explained the topic in writing I would write a sentence, then stop and second guess whether it was right. This led to a double-checking rabbit hole which, more often than not, would cast a whole new light on the thing I was trying to say. And sometimes I would discover I was flat wrong. But the explaining through writing sent deep taproots down in my comprehension. I might still be wrong, but at least I was wrong on a more profound level.
Writing about code exposed bugs for me. Every time. Some of them were pretty embarassing.
When approaching a subject I didn't know much about, like transformers, writing helped my sort through the hail of factoids and half-formed concepts. Even though I could only hold one pebble of knowledge in my head at once, writing gave me a beach where I could arrange them into a bigger mosaic.
Writing has become inseparable from my learning process. This leads to and unruly set of posts. I've resigned myself to the fact that my blog will be somewhat chaotic, although I've tried to impose a veneer or organization.
Thank you
If you were part of e2eML, I am grateful to you. Thank you for trusting me with a bit of your time and attention and hard-earned money. I appreciated having you there.