March 10, 2020
One of the most common complaints I hear from students is: Why do I have to learn all this math? Why isn’t there a library to do what I want?
Someone recently made this proclamation to me: “You should explain that your courses are for college students, not industry professionals”.
This made me laugh very hard.
In this article, I will refer to students who make such proclamations as “ML wannabes” for lack of a better term, because people who actually do ML generally know better than this.
Choosing Between Academic and Professional is a False Dichotomy
Yes, even Geoffrey Hinton, Yann LeCun, and Yoshua Bengio have to choose between “academia” and “industry”.
But are they choosing between using Tensorflow vs. exploring the fundamental ideas in machine learning (which necessarily involves lots of theoretical thinking and math)?
I think it’s clear that Geoffrey Hinton isn’t sitting there and saying, “screw all this math, let me just plug my data into Keras”.
Ok, but you and I are not Geoffrey Hinton. So what about us?
When ML wannabes say that my courses are for college students and not professionals, my immediate thought is: What kind of so-called “professionals” do you work with?
Are they fake professionals?
What do you think college students do after they graduate college?
I hope these questions aren’t too philosophical… it’s a pretty standard path: college students graduate college, then work as a professional.
Ergo, professionals are former college students. They have all the knowledge of a college student, and then some.
So isn’t it the case then that being a professional means that they are now experts at all this “math stuff”?
By that logic, shouldn’t it be the case that professionals are the best-equipped to learn all this “math stuff”?
AND vs OR
You are not choosing between having an understanding of the math behind machine learning and its practical application.
Being effective at applying machine learning practically involves having a base level of theoretical understanding.
Conversely, having a good understanding of machine learning in theory involves a base level of understanding of how it will be applied in the real world.
i.e. It’s “AND”, not “OR”. You don’t get to choose between these. If you miss one, you’ll be bad at the other. You need both.
Notice that I said a base level of understanding: you don’t have to do a PhD in statistical learning theory. In fact, I hate statistical learning theory.
Nothing I teach involves PhD-level math, so if you think that’s what it is, then you are overestimating everything, including your own skill. I always find it funny when students say “you need your PhD to do this math”. Actually, saying stuff like that just makes YOU look silly because you think you’re closer to it than you really are. In fact, it’s not “PhD math” you’re having trouble with, it’s just undergraduate math…
Even worse: the people who tell me they have a PhD and that’s why they know what they’re talking about. This is the funniest. You have a PhD and you admit that you still have trouble with undergraduate math? Isn’t that just making you look bad? Very silly indeed.
Professionals forgot what they learned in college
You may be excused if it’s been 20 years since you graduated college and you’re not doing math or algorithms everyday.
Ok, but then what are you doing? Why did they hire you in the first place?
Again, saying all this stuff just makes YOU look bad.
All that stuff you learned in college went out the window?
You paid thousands of dollars and learned nothing useful whatsoever?
Well maybe you got a job that only requires doing database queries and building report dashboards all day.
You got comfortable.
No problem with that. It pays well. It’s steady. You don’t have to bang your head against the wall all the time.
But now what? What are you going to do about it?
Are you going to blame other people for your situation?
If I want to go back to being a professional tennis player after a few years off the courts due to injury, is it my job to train myself to back a world-class level, or is it my opponents’ job to go easy on me?
Coding interviews at Google, Facebook, Amazon, etc. are great examples of why, as a professional, you can’t simply forget everything you learned in college.
Not knowing “college material” doesn’t make you “not a college student”, it makes you a bad professional.
i.e. You’re supposed to know this stuff, and yet you don’t.
You can’t say “I’m not a college student”, because that doesn’t excuse you from not knowing this stuff anyway.
What about people who didn’t go to college? There are tons of stories out there about people who have worked their way up from scratch on their own. They learned what they had to in order to pass the coding interview.
They did not say, “since I am not a college student, the company must change their standards when they hire me”.
They did all the same work as a college student, and in fact, it is even more admirable that they taught themselves!
So as an ML Wannabe, realize that saying “I’m not a college student” is not an excuse, it’s merely equivalent to saying, “I’m not a good professional, I’m a professional that lacks knowledge”.
There is a funny contradiction when it comes to coding interviews:
The wannabes always say, “industry doesn’t care about academics”.
Then when it comes to these coding interviews that they have trouble with, they complain: “industry cares too much about academics!”
So which is it?
That is why professionals at these tech companies do such great work: they are not just professionals. They are professionals who apply what they learned in college on a daily basis.
More on that next.
How Google Came To Be
With hindsight, we can observe with great awe at how Google became the giant it is today.
It all started with a simple Markov model (the kind of math ML Wannabes try to avoid).
This Markov model was a model of links to webpages on the Internet, and this allowed the founders of Google to create the most powerful search engine the world had ever seen.
Of course there were engineering challenges as well. How do you find the eigenvalues of a matrix with over a million rows and columns?
“Aha!” You say. The Lazy Programmer is wrong. Clearly this is a practical engineering problem and not an academic one!
Sorry to say, but you are still wrong.
What library do you use to factor a million x million matrix? Oh right, one doesn’t exist.
Google didn’t just pioneer the mathematics of search, they also pioneered the field of big data which is a subset of distributed computing.
Why didn’t they just use the MapReduce library? Oh right, because they had to invent it first!
If you don’t believe that this is an “academic” subject, you can read the many papers Google has put out on its file system, global databases, etc.
I talk a lot about math in this article but another thing ML Wannabes really hate is programming things on their own. (They prefer to use libraries that involve just a few lines of code to get the job done quickly.)
So what happens when the library you want doesn’t exist?
Do you say screw it and move on to something else?
Well that’s what differentiates the leaders and the followers.
And surely one must ask themselves: is creating a billion dollar company practical?
Whether you agree with these hiring practices or not; one can’t dispute results.
You Live in a Bubble
You might say: “Everyone around me is a professional, and they would all disagree with YOU, Lazy Programmer!”
You live in a bubble. Everyone does.
It makes sense if you think about it.
Your company hired people of similar aptitude to be on your team to get a particular job done. You are surrounded by like-minded people.
Of course you are.
And if anyone disagreed with you, you probably wouldn’t be friends with them anyway.
The likelihood of you being surrounded by opposing viewpoints is small.
How would your team get anything done if you could never agree?
But you can’t make the assumption that whatever is in your immediate radius applies uniformly throughout the rest of the world.
There are tens of thousands of STEM undergraduates going into the workforce each year.
Do you think they just automatically forget their undergraduate training?
Is the past 4 years simply erased from their minds?
No – instead, they become these coveted professional-college student hybrids you so fear.
Choose Your Own Life; Choose Your Own Career
I get it.
At some point, you want to stop thinking so hard.
You want to have a family.
You want to start taking up other hobbies that do not involve being a geek.
I can’t say that won’t be me someday.
In that case, go for that cushy job where it’s a little easier and you get to use all the libraries you want and never have to think about calculus and graph algorithms.
There’s nothing wrong with that.
A comfortable life, a comfortable software developer salary…
This is an excellent goal to have in life.
But you can’t have your cake and eat it too.
If you want to be a real professional (and not a wannabe) then you have to put in the work.
I’m just a vessel for information. I take machine learning and bring it to you.
I did not invent machine learning. So if there’s math, there’s math because the guy who invented it used that math.
Don’t blame me.
If you want to do machine learning, then accept what machine learning is.
You can’t choose to do machine learning, and then refuse to do all the work that everyone else did.
What makes you feel so self-entitled that you think everyone else has to do it except you?
At the very least, you should be interested and enthusiastic about gaining new knowledge – not actively trying to avoid it.
Whether you learn “top-down” or “bottom-up”, you’re going to have to answer the hard questions sooner or later.
If you choose this path, then it’s your job to make the journey.
Don’t expect others to carry you.