DataTalks.Club

From Software Engineering to Machine Learning

Season 4, episode 1 of the DataTalks.Club podcast with Santiago Valdarrama

Did you like this episode? Check other episodes of the podcast, and register for new events.

Transcript

Alexey: Today we'll talk about career transitioning from software engineering to machine learning. We have a special guest today, Santiago. Santiago is a director of computer vision solutions at Levitas. There, he leads a small team of software engineers and machine learning engineers. Santiago is a computer scientist who focuses on applied machine learning. You probably know Santiago from his Twitter. On Twitter, every day, he shares a lot of practical things about machine learning. Thanks, Santiago, for joining us today. Welcome. (2:39)

Santiago: Thank you for inviting me. (3:16)

Santiago’s background

Alexey: Before we go into our main topic of moving from software engineering to machine learning, maybe we can start with your background. Can you tell us about your career journey so far? (3:19)

Santiago: Absolutely. I started as a software developer. I went to college, got a computer science degree, and I started building software. I think it was 2015 when I decided to go for a Master's in computer science. Back then, I had no idea about machine learning. I didn't have any interest in it. It was during the Masters that I decided to focus more on machine learning. I know you've been using the term “transitioning from software engineering to machine learning”. I like the term “adding to my skill set the machine learning skills” more because I think if you're a software engineer, you are already providing a lot of value. By incorporating machine learning now, you're augmenting the impact that you can have on the industry. That's basically a short description of how I went about it. It was through my Master's that I started working more on machine learning and getting more responsibilities in that area. This goes up to today, where I'm mostly focused on that area. (3:28)

Alexey: I'm following you on Twitter. I noticed that you recently posted a picture from your youth. I think it was from Cuba. It was a picture of a newspaper. You're from Cuba originally, right? (4:36)

Santiago: I am from Cuba. Yeah. I came here to the United States back in 2009. May 1st of 2009. I've been here for 12 years now. (4:51)

Alexey: Okay. So you did your Bachelor's there (in Cuba)? (5:04)

Santiago: Yeah. I did my Bachelor's in Cuba for computer science. Then I went through my Master's here in the States. It was Georgia Tech – their online Master's program, which is fantastic. (5:09)

Alexey: Yeah, I think I saw this online. Because you post so much on Twitter I already know this bit as well. I think in this picture that you shared from Cuba, it was two guys – you and your friend – and you're staring at the computer. Your comment was that you didn't have an internet connection back then. (5:21)

Santiago: I think the first time we saw internet during my college degree, I think it was 2000, maybe 2001, was the first time that we got access to internet. Back then it was about having a couple of books and that was it. The knowledge that we shared was mouth to mouth. You had to talk to people if you wanted to know something that you didn't already know. It was very different from the way it is today. You can find so much information online. Literally anything that you want to know is going to be online in some form. Definitely very different from back then. (5:43)

Alexey: Yeah, I see why you love books. (6:26)

Santiago: Oh, yeah. That's exactly why I love books. For sure. (6:28)

“Transitioning to ML” vs “Adding ML as a skill”

Alexey: You mentioned that you don't like when I say “transitioning from software engineering to machine learning.” You said that you don't like this word “transitioning” because you didn't really transition, but you just added machine learning to your skillset as a software engineer. Is that right? Do you think that software engineers are already qualified to do machine learning? (6:33)

Santiago: I do, actually. This is what I think. One of the hardest skills for you to get and start providing value in the machine learning field is coding – your ability to develop solutions – your ability to make the computer do what you want. That's one of the hottest skills that you can build. If you're a software engineer, if you already have that skill, you're definitely halfway home. You’re definitely half there in terms of what's needed to be successful in the machine learning field. It's interesting that most people are afraid of math. But what I've seen is that most people that don't continue, the ones that are left behind – it's not because they lack math skills, it's because they lack coding skills. If you were to ask “Who's better positioned to be successful?” Nine times out of ten, I'm gonna pick the person who already knows how to develop software and provide value through software. (6:58)

Getting over the fear of math for software developers

Alexey: So, software engineers are basically already qualified for this work? (8:02)

Santiago: Oh, yeah. Absolutely. (8:05)

Alexey: They just need to convince themselves that math is not the worst. (8:07)

Santiago: It's not that scary. It's not that scary. Yeah, math – you're going to need math. And yeah, the deeper you go, math is gonna become more important. But it's not that scary. I promise you, if you have the skills to build software, you can have a huge impact just with those skills and a little bit more math that you're going to incorporate as you go. Yeah, for sure. (8:12)

Alexey: Yes. But how do we, as software engineers, convince ourselves that math is not scary? When I was studying machine learning I remember, especially when you talk about more difficult concepts like support vector machines, there are all these crazy formulas. Maybe somebody who studies math will disagree that they’re ‘crazy’ and say “Oh, it’s like third grade calculus. Whatever.” But when I look at this, it's scary. So how do I convince myself that it's not scary? That I shouldn't worry about this thing? (8:36)

Santiago: A great question. Number one. We have to think about who's chairing machine learning content mostly. If you think about it, it’s mostly coming from academia. It’s papers. It’s the people who invented those formulas that are writing the books and recording YouTube videos. Obviously, it's really hard when you get to a blog post and you cannot get past the second paragraph because there is a huge formula right at the beginning. I have the hope that that's going to get better over time. (9:17)

Santiago: I'm working on it. A bunch of people are working on it – trying to share the other side of machine learning. It is a very different approach – to understand and to learn how to make progress in the field. Instead of starting with how the thing is built, you start with what can you use and how you can use this concept to solve that problem. It's a very different approach. Think about when you go to school and they teach you a bunch of physics and chemistry and math. Just because it's a general foundation that maybe you're going to need later. Or maybe you will not need it later. That has pros, but it also bores a lot of people. A lot of people started there and they don't know where they're going. They go through so much math content that they don't know, “Why is this gonna be useful?“

Santiago: Another approach is to start with problems – look at a problem and say, “What do I need in order to solve that problem?” Yes, I know that a lot of people will say, “Well, you cannot use something effectively unless you know how that thing works.” I understand that. But there is a spectrum. You can know very, very low level details of how it works internally. Or you might know just the necessary things that it does in order to solve the problem. Not everyone that’s using sorting a list right now knows exactly how the algorithm works. I know extremely effective Python programmers that don't even know that the sorting behind Python is called Timsort. They have no idea. They can still sort lists, right? Now, some other person will tell you, “But if something goes wrong with sort, they will not be sure of why.” When that happens, they can go and dive deeper and get the knowledge that they need to understand how team sort works. But I don't think everyone needs to start from the nuts and bolts of the content. I think you could also start from the beginning and try to make an impact.

Santiago: That's things like Auto ML is doing. They're providing tools that you can use without having to know the calculus that goes on behind the scenes. I think that it's a different approach and it's something that you're gonna see more and more of as time goes on.

Alexey: Also, to add to your analogy of knowing sorting – how many times does it happen that your sorting algorithm doesn't work? Has it ever happened to you that sorting didn’t work? (12:13)

Santiago: Never, no. By the way, I'm not talking about not understanding sorting at all – it’s a good idea to know it. I'm saying it’s a spectrum. How much you understand about sorting will definitely help you. If you know more, it might be helpful for you. That's okay. But you cannot limit people just because they don't know things like sort. You should not limit them on what they can accomplish. (12:25)

Alexey: You shouldn't guard them from the computer and say “No, don't touch the keyboard until you can show me all the properties of Timsort.” Right? (12:21)

Learning by explaining

Santiago: Absolutely. For example, I've been posting a lot of content on Twitter. The approach that usually I take is “How much jargon can I remove from this content so more people understand what's happening?” So if I'm going to talk about something – let's say I just posted a tweet last week about ensemble learning. When you read the topic online, there is so much jargon and things that you need to know in order to even understand why an ensemble works. My challenge is – how do I remove all of that and still make it accessible to more people? They might not be ready to maybe build an ensemble, but they will understand that it’s a tool that they can pick up. They understand that it's valuable. They understand the situations where they can use it. I think you're going to see more and more of that kind of content coming, because more people are going to want to use machine learning and apply it to their use cases. So I think that's a good thing. (13:00)

Alexey: Yeah, it's a good thing that you're doing on Twitter, because you have this ability to put complex things in simple terms. And I agree with everything you say. To me, sometimes I feel like you can read my mind and just tweet it out. This is really great. Because I agree with almost everything you say. This is cool. Thanks for doing this. How do you actually go about removing this jargon? Even though it's not super related to the topic today, I still think it's interesting. Complex things like ensemble learning – How do you make it accessible for people? (14:02)

Santiago: I think this goes more into writing about what I do. But just as a way to answer the question – I write down an outline of what I want to explain and then I use my wife as my guinea pig, “Can you understand what's happening here?” She usually points out terms that, to me are very clear, but have no meaning to her. That helps me a lot. I usually also ask myself the question, “Can a six year old understand what I'm trying to put down here?” You know what, sometimes you can do it. But it's always about trying a little bit harder – gain feedback from the people who read the content. What questions do they ask? Does it help them? And then incorporate that feedback in your next thread. This is usually a battle. It's usually also a spectrum of “How easy can you make something before it doesn't make sense anymore?” If you try to make it so much easier, then you're not helping anyone. But if you make it too complex, then you're leaving out everyone else. So it's usually a battle. But it's a nice battle to fight. It’s something that I enjoy for sure. (14:50)

Seven lessons I learned about starting a career in machine learning

Alexey: Speaking of Twitter – just before this conversation, I opened Twitter. I just wanted to check what you've been up to. I noticed this nice thread, which is the very topic of today's conversation. It’s about “Seven lessons I learned about starting a career in machine learning.” Do you remember what these seven lessons are? (16:11)

Santiago: I can have it in front of me right now. I remember some of them. Yeah, I think I have it right here. (16:35)

Alexey: So maybe you can walk us through these lessons a bit? I think these lessons are very useful for software engineers who want to transition today. (16:46)

Santiago: Yeah, absolutely. First of all, the context. This is trying to do a little bit of a retrospective on myself – on how I got into the field and the things that I learned. Also it’s about being focused this year on helping people get into the field. It’s just looking at the questions they ask, looking at the problems they've had, and what we can learn from that. (16:55)

Lesson 1 – Take the first step

Santiago: The first lesson applies to a bunch of different things, not only machine learning. Most people really enjoy the idea of starting something. Unfortunately, they fail to take the first step. For example, you decide that you want to make a change in your life. You want to go to the gym, you start buying supplements, and you start buying shorts and shoes and so on. That process is really exciting. But you never show up – you never go to the gym, right? So the lesson here is – don't be like that person. Don't prepare forever. You don't need that much preparation. You just need to take the first step. You just need to do something today that gets you a little bit closer to that job. I think that's the first lesson. (17:25)

Alexey: It's like buying a course about machine learning and getting excited. “Hey, I will finish this course and know so much.” And then you come across the second one. But this is even cooler, let's learn this one as well. And then there’s the third one. And there’s a cool free course, too. And then there is a book somebody recommends you. And you want to get through all of them, right? But at the end, you just collect the resources and don't do anything with them. (18:13)

Santiago: That is exactly right. Most people spend so much time trying to find the best course, trying to find the best tutorial, the best video. There is no best tutorial. There is no best course. Whatever you have in your bookmarks is plenty enough. Go through that and then decide what's going to be better for you. But just stop preparing – you just need to take the first step. (18:40)

Lesson 2 – Learning is a marathon, not a sprint

Santiago: The second lesson is “Learning is a marathon, not a sprint.” I get a lot of questions from people asking me, “Hey, can I become an expert in a few weeks” or “In a year?” or “In a month? The reality is that machine learning is no different than any other field. It's a lifelong journey. Machine learning has been selected for the last few years as “the sexiest field to be in” and stuff like that. People want to get into the field because they think it's a shortcut to success or they think they're going to be making a lot of money. That mentality – I don't see it helping. If you're coming into the field, you need to understand what you're setting yourself up for. Understand that this is a lifelong journey – it’s a field that moves really, really fast and you're going to have to keep up. You're going to have to dedicate a lot of time to become good at it. So just set the right expectations for yourself when you’re about to start in the field. (19:09)

Alexey: So, there’s no magic bullet for it, right? (20:22)

Santiago: Yeah. There is no magic and there are no shortcuts. It is hard. It's super rewarding and it's easy to start, but it's going to be a lifelong effort for sure. (20:23)

Lesson 3 – If you want to go quickly, go alone. If you want to go far, go together.

Santiago: Lesson number three, is basically a proverb that I used, which is “If you want to go quickly, go alone. If you want to go far, go together.” Here, the idea is that the people that I've seen make the most progress are always part of a community. They are always part of a group. It is really hard to make progress when you are alone. So find like-minded people that want to take this journey with. There is a huge online machine learning community – just try to be there with them. Try to join. Try to find other people that want to bounce ideas off of you and vice versa. Try to find people that are taking the same classes as you are. That will boost your odds significantly. You're gonna make a ton of progress just because of that. In my case, my teaching is one of the most powerful ways I have to learn. (20:38)

Santiago: So I come here and I'm not only writing about stuff that I know. A bunch of stuff that I've talked about on Twitter is stuff where I don't know what I'm talking about. I just read about it and the process of writing about it is the way that I learned it. That's thanks to the community that gives me feedback and challenges my ideas. That's extremely important if you're trying to get into the field.

Lesson 4 – Do something with the knowledge you gain

Santiago: Lesson number four. If you finish a course and the only thing you have to show for it is inside your head, you probably wasted your time. Here, the idea is – you have to do stuff, not just consume information. You have to produce something. If you're watching a tutorial, do something with it. If you're reading a book, stop after the first chapter and think “How can I apply what I learned?” If you don't do that, you are unfortunately going to forget it. Even if the doing means going to Twitter and talking about it – that is doing something. That's the act of taking that knowledge and applying it somehow. That is extremely, extremely important. If you're not doing stuff with the knowledge that you're acquiring, the knowledge is not going to stay for long. (22:18)

Alexey: When you were writing about these ensemble methods, you would test what you wrote on your wife. So I guess this is a great example of how you can actually apply this. When you learn something or when you’re studying something, try to teach some other person about it – talk to your wife or somebody else. And if they understand, then that’s a lot better than just reading a post or a book and not doing anything with this information. (23:13)

Santiago: Absolutely. There’s one thing that I've been doing now that Twitter supports Twitter Spaces. Basically, you get the microphone and a bunch of people join you and you can get to talk to a bunch of people. I've done Twitter Spaces to talk about a topic that I just learned, just so I can explain it to someone else. A bunch of people join and they ask me questions and test what I learned. Therefore, I have to get prepared to do that. That preparation forces me to solidify that learning – to understand it a little bit better. That's extremely powerful. (23:44)

Alexey: Is it a regular thing that you do? These Twitter Spaces? Do you do it often? (24:14)

Santiago: I've been doing it very regularly. Usually I do it once per week. Sometimes I join somebody else's Space and I talk about the stuff that I'm learning or whatever. Sometimes I do my own Space and talk about a specific topic. (24:21)

Alexey: Do you have a specific time frame when you do this? Or when you feel like doing it, you just tweet it out? (24:37)

Santiago: I was doing one every weekend but then after that, I try to do it whenever I have the time to join. (24:42)

Alexey: I guess people will have to follow you to know when you're doing that. (24:48)

Santiago: You have to stay tuned. Yeah, for sure. (24:56)

Lesson 5 – ML is not just math. Math is not scary.

Santiago: The fifth lesson on that thread is – people think about math every time machine learning comes up. To that I say, I think they're missing the point. I do not believe machine learning is more math than coding. I look back on my Master’s. A lot of people were taking the machine learning class and most of us were really scared about math, because everyone is. Unless you have a math background, everyone is scared about math. It turned out that by the end of the class, the people who didn't make it – it was because of their coding skills. They were not able to translate the ideas into code. That was actually the hardest part of the class. (25:00)

Santiago: When I work every day, I get to meet people and talk to other teammates. The ones that struggle the most are the ones that are not capable of building solutions. Yes, analysis is super important. Yes, I do believe analysis is better than code. Especially when you're studying, your ability to analyze a problem and understand what needs to happen is crucial. But at some point, you have to deliver value, and that is through code. I think math is extremely important, but it shouldn't be the thing that scares you out of the field. It's just a thing that you're gonna have to learn. But it's not that scary, I promise you. That’s the fifth lesson.

Alexey: We already have a bunch of questions about improving coding. But I think we should come back to that when we finish these lessons. (26:30)

Lesson 6 – Your ability to analyze a problem is the most important skill. Coding is secondary.

Santiago: Yeah, two more lessons to go. I already mentioned this one here – coding is secondary, your ability to analyze a problem is the most important skill you can build. This seems a little bit counterintuitive. But think about it this way. When you're studying, the skill that I want you to build is the ability to read a problem and understand – analyze – how to solve it. This is not to say that “Overall, as an engineer, coding is secondary.” As your study now, assuming that you already have knowledge about how to code, I want you to put that aside. I don't want you to focus on “grab that code from Stack Overflow.” I want you to focus on understanding the problem. That's a muscle and I want you to exercise that specific muscle. After you know what needs to be done, then you can focus on the coding part. (26:39)

Santiago: Now you can grab the code from Stack Overflow, from the book, or from the tutorial you are reading. First, understand the problems. Understand different possible solutions – how to pick a model, how to do the error analysis, all of that. I think that's very, very important to build a career or to start in a machine learning career.

Alexey: How can somebody actually pick up this skill? Is it just through work or? (28:01)

Santiago: I think it starts by you putting the code aside and not focusing on that. If you start with a problem – this is the way I've built my entire career – I find a problem and then I go online and find somebody else that solved it and see how they solved it. Some people think that that's cheating. Well, that's my entire career. If somebody else did it, I'm going to use what that person did. The lesson is putting that aside. I'm forcing myself to think through the possible solutions. It's more about consuming the content and trying to apply those ideas and less about finding a library that does the work or finding somebody else that coded it. (28:08)

Santiago: Just forcing myself to think through, “What are the ideas? Why is this solution the one that I should pick?” It's trying to just dig a little bit deeper in the books. Dig a little bit deeper in the math at the beginning, just so I can build that foundation.

Lesson 7 – You don’t need to know every detail

Santiago: Finally, lesson number seven. This is a quote. It says “You have to understand every detail of an algorithm if you want to use it.” And then I say, “I think this is bullshit advice.” I do not believe that you have to understand the nuts and bolts of every algorithm before you use it. It's nice if you do, but don't think for a minute that that's the only way to build systems. I've been using neural networks for the longest time. I do have a sense of how the gradient descent works. I cannot explain it to you right now. I would have to go and check back to actually get a better intuition. That doesn't mean that I cannot solve things using neural networks, right? (29:05)

Santiago: Trying to force people to think “Well, you're not going to be successful unless you can explain every single detail of how this works.” It goes back to our sorting example – I think that's just bullshit advice. I think that's not the way the world works. As an engineer, I've worked on many, many systems and I've used many, many things that I do not understand the nuts and bolts of how it works, even though I understand the impact that they have. That's the final lesson on that thread.

Alexey: The funny thing is – when I think about all these libraries like Scikit-Learn – the algorithms they use inside to implement, for example, logistic regression or something else, are not the same as the algorithms we study in machine learning classes. In machine learning classes, we learn something simpler, right? But then when it comes to implementation, it is a super-optimized version – completely different from what we studied. So even if we tried to learn to get all these basics of machine learning, at the end, the algorithms that these libraries use are different. Right? (30:22)

Santiago: Yeah, absolutely. I think we need a lot more pragmatism in the industry. Make a lot more of an impact. Or focusing on delivering value and a little bit less of purism. “Oh you can’t do this unless you know all of this.” It's the mentality that I just talked about. (31:02)

Alexey: It’s gatekeeping, right? (31:23)

Santiago: Yeah. I get it. I get that you've worked really, really hard to get your degrees and your fancy titles and all of your knowledge, but it's time for everyone to join us even though they don't have those. (31:24)

Alexey: If you think, again, about a business where you work. Let's say they want to predict something simple. If a user will click on this ad and then you manage to increase the click-through rate, nobody from the leadership team will care if you know math or not. As long as you actually manage to improve this click-through rate or whatever the metric is. It's more about impact, not if you know the details or not. (31:39)

Santiago: Absolutely. By the way, there are two different paths. I usually speak to those that want to work in the industry – that want to have their impact there. There is a path for researchers and that is completely different. I do not dare to speak about that because I don't know. I don't have any experience with that. But right there outside, in the industry, pragmatism goes a long way for sure. (32:13)

Alexey: We had a comment that said “Feels more like motivational speech than talking about transitioning.” So maybe we should switch. (32:40)

Santiago: There you go, yeah. (32:48)

Alexey: It is a good motivational speech. But maybe we can go to the actual stuff. One of the things I wanted to ask you. I am taking a note to talk about becoming better at coding. But first, let's cover a couple of things. (32:50)

Tools and frameworks needed to transition to machine learning

Alexey: Let's start with core tools and frameworks that you need to learn to actually transition. Let's say I am a software engineer. I know how to program. I know Java. I know SQL. I know how to use Git. I know Bash. Maybe I know Docker. All these things. And I hear about machine learning, it seems like a cool thing. So, what are the core tools and frameworks? Yes, I watched this video and I get convinced that I don't need to get deep into math. I want to start coding and get my hands dirty. What are the core tools and frameworks that I need to learn to do this? (33:10)

Santiago: Yeah, absolutely. Great question. I think, number one, you should start learning a little bit of Python. Since you already know Java, I don't think it's going to be a huge transition for you. It's going to be very simple. Not because Python is the same as Java, but in a week, you're gonna get a lot of the differences there. You're gonna be able to make some progress. That's number one. (33:47)

Santiago: Then you get certain core tools that are going to be used throughout your entire career. Those would be NumPy for scientific computing. That's a library on Pandas for data manipulation. And Matplotlib and Seaborn and Plotly. Those three, or one of those three, for charting and displaying graphics. Then you get SciKit Learn for the collection of machine learning algorithms. Those are tools that you're going to have to be using. I do not recommend just going and learning about them out of the blue. Instead, I would recommend you to go to maybe Kaggle, or maybe take a course online. We can talk about specific courses later. Take one of those courses that are going to start introducing you to some problems and to some core ideas of machine learning.

Santiago: There is a course in Kaggle which is an introduction. I don't remember the name, but if you go to Kaggle, they have tutorials there for free. One of them is an introductory course that takes you through the Titanic problem in Kaggle – one of the most famous competitions there. What's good about it is that the only requirement for you is to know Python. They're going to present a problem and tell you how to use decision trees to solve that specific problem. I think that process is extremely powerful, because you go from no machine learning background, to understanding what the problem is and why you cannot solve it with what you know right now, which is straight software engineering practices. Why you need something like a decision tree, how to build it, how to apply it, how to get results. That line there is exactly what I recommend people to start getting into the industry. First, understand why you would need this.

Santiago: Find a problem that you cannot solve by yourself. Understand how you can solve it and then start getting deeper. Later on, you can get into decision trees and understand all of the nuts and bolts behind the scenes, and all the math, and all the other cool stuff. But at the beginning, just learning how to use it – it is extremely powerful. So that's what I would do.

Problem-based learning vs Top-down learning

Alexey: This comes back to one of your tweets – or maybe it was from your course – when you compare two approaches to learning. One approach is the problem based approach, which you just talked about. You find a problem. In this case, it was some problem from Kaggle about this Titanic dataset, and you just learn how to solve this problem using a specific tool, like decision trees from SciKit Learn. (36:19)

Alexey: Then there is another approach, which I think you call “top down approach” where you start from the math. You first learn math, or linear algebra, calculus. Then when you know the math, you go to machine learning theory and you learn the theory. Then four years later, you finally come to applications, “Okay, how do I use all these four years of math to solve this Titanic problem?” Right? So in the former, you kind of save yourself some time, I think.

Santiago: Again, I don't want to get into the “Is this better than this?” If you ask me my opinion, I would rather prefer the former. If I have an electrical outlet here that I need replacing, I don't want to go to college, spend four years understanding the math behind electricity and the physics and all of that, just to change an outlet. I would rather start with the outlet and find a YouTube video that helps me go through the problem. If I'm interested, then I can go deeper a little bit and understand why touching the positive one is gonna electrocute me or whatever. Bad analogy. But you get the idea, right? (27:22)

Santiago: I really like the idea of starting with a problem, trying to throw out what I know up to that problem and understand why it doesn't work. Then grab the tools that I need to solve that problem and start digging deeper and deeper and deeper from that point on. That's an approach that worked for me very well and I've seen work for many, many people as well. So that's what I usually recommend.

Learning resources

Alexey: Maybe we can talk a bit about learning resources. You mentioned in Kaggle there is an introduction tutorial, where you can get and learn how to make decision trees. At the beginning, before we started this interview, you mentioned a couple of books as well. Maybe you can talk again about these books and mention some other courses that you would recommend. (38:23)

Santiago: Yeah. If you're a developer and you want to start quick, a course that I usually recommend is the Crash Course from Google. Google created this crash course for their employees and they published this course online. It's called “Machine Learning Crash Course” and it's free. You don't need to register. You don't need to do anything – you can just start. The only requirement for that course is that you know a little bit of Python. If you're a developer, that's a great starting point. (38:48)

Santiago: If you're not a developer, then I do have a pin on my Twitter account. If you go to my profile, the tweet that's going to be on the top, the one that says “pinned tweet”. It’s going to give you a full roadmap, starting with an introduction to Python. Even if you're not a developer, you can start with Python and work your way to more machine learning. This roadmap is focused on Coursera, which is a platform that I really, really like. You can audit all of the courses for free or you can pay for the Coursera subscription to get certificates if you want to. But it basically goes from introduction to Python to machine learning, deep learning, TensorFlow, advanced TensorFlow, and machine learning operations. There are six courses there. They're going to take a few years to go through. Every course is specializations, so it's going to take you several weeks to complete. We're talking about a roadmap that's going to expand to a year, for sure. But again, it's just a path if you want one – that's one.

Santiago: Regarding books, I do like a couple of books. One of them is deep learning – which is the “Deep Learning with Python,” Francois Chollet is the writer – the person who created Keras is the writer of that book. By the way, the second edition of the book is about to be released. I'm really looking forward to that one. The second book is this one here, which is “Hands-on machine learning with Scikit-Learn, Keras, and TensorFlow.” This is a book that you can read cover to cover. It's a book that you can start from the beginning. There is a lot of knowledge here. So if you pair this book with a course, you're going to maximize the reward. That's a great way to start.

Santiago’s favorite books

Alexey: I'm just looking at the questions and the most voted question is “What are your favorite books?” So there's two. I think you have something else on your desk, maybe you can also tell us about it. (41:09)

Santiago: I do. Those two books are the deep learning with Python and the hands on machine learning – they’re technical books. The non-technical books I like are “The Lord of the Rings.” You cannot say it is a huge book. I have it there. Obviously, Lord of the Rings. I have the Spanish version there. And something like a ‘self help’ book, I am really into Atomic Habits from James Clear. I picked this book up recently, by the way. I realized that I've done a lot of the stuff that's recommended in this book. A lot of it is super, super good. I really recommend it to anyone. (41:22)

Santiago’s course on transitioning to machine learning

Alexey: You have a course about machine learning. I think this course specifically focuses on people who are software engineers and who want to transition to machine learning, which is exactly the topic today. Maybe you can talk a bit about this course? What will people find in this course? (42:08)

Santiago: This is a course for people that want to start but they really don't know how to do it. I talk a little bit about the right approach that you should take for machine learning. I talk about specific problems, depending on where you are – specific problems that you can go and solve. I give about 10 different problems that you can go and solve. I talk about books. I talk about job opportunities – stuff like that. Stuff that you want to know. (42:30)

Santiago: Imagine that you're thinking about getting into machine learning, but you need to talk to somebody. This is me talking for 100 minutes about the career and what you should expect and how you should approach it. What books or what courses you should take to make it into the industry. I'm actually working right now on version two of the course, which is just gonna replace the first one. Since I built that first course, I've learned so much, so I'm working on the second version to replace it. Just to make that advice a little bit… Let's call it “better”. That's what it's about.

Alexey: Yeah, I remember watching this course. After watching it, I felt that you somehow got into my head, took all the thoughts I have about how engineers should approach getting into machine learning, and you put it out in such a concise and motivating manner. This is excellent. I recommend everyone who is interested in this to check this course out. (43:33)

Santiago: Yeah, appreciate it. (44:00)

Improving coding skills

Alexey: We have quite a lot of questions. One thing we promised to get back to is for people who are not necessarily great at coding – how can they improve this? One of the things you mentioned is that coding is very important and many people fail the machine learning course. It was not because of their lack of math skills, but because of their coding skills. So how can people improve their coding skills? (44:01)

Santiago: Yeah, so that is a great question. If you don't know coding, there is definitely a path for you to get good at machine learning itself, and then pick up coding as you go. There is definitely a path there. I do have less experience with that path because I'm usually focused on people that already know how to code. So it's obviously natural for me to recommend to people – if you don't know how to code, first get excited about building solutions. (44:28)

Santiago: First, get there. Don't worry about machine learning. That will come at the right time and right place. Focus on building things with your computer. Focus on building programs. Learn Python. Learn how to solve different problems. Machine learning will become a nice addition to that. By the way, this is just what I recommend. It's not necessary to do it this way specifically. I know people that started with machine learning and added coding later on – there is definitely a way to make it. But I usually recommend that people start with Python. Focus there and then come back into machine learning.

Building solutions without machine learning

Alexey: My wife is doing a course now. I don't remember the name. It's about Python. What she's doing there is, she uses Selenium to automate the job application process on LinkedIn. In LinkedIn, there is a Quick Apply button. You can apply from LinkedIn without filling in a big application form. So she wrote a bot that goes through LinkedIn every day, finds all these Easy Apply buttons and clicks on them. This is a cool project. It has no machine learning in it at all. But this is a fun thing to build. (45:27)

Santiago: Yeah, definitely. (46:05)

Alexey: You can do so many things with tools like Selenium. You can automate so many different routine things. If you're looking to improve your coding skills, maybe this could be a fun thing to do. Like writing a job application bot. (46:07)

Santiago: There are so many projects that you can build that don’t require machine learning. Actually, the first rule of machine learning is “You may not need machine learning at all to solve your problem.” Right? That's the first rule. So yeah, there is so much to do without it. (46:22)

Becoming a better engineer

Alexey: Aside from coding, we also need to follow some good practices. Good software engineering skills. How can we improve these kinds of skills? For model deployment, for production…? (46:39)

Santiago: Yeah, I know what you're focusing on right now. You mentioned model deployment. I was gonna say before that an area that's so valued for being an engineer is getting experience in algorithms and data structures in general. The computing fundamentals for that – it's very underappreciated, I'm going to say. But it's extremely helpful in your career. Remember, you're not just limited to doing one thing here, “The only thing that I'm going to do is build models.” There is way more to providing solutions than building a model. (46:57)

Santiago: That comes down to the second part, which is what you just mentioned. Machine learning system, the lifecycle goes from project scoping, where you have to take a project and understand it and decide what is the best solution – decide whether it is even machine learning that needs to be applied here. It goes from there – communication is key there – goes to the data part of the lifecycle, where you grab the data, collect the data, store the data, transform the data, do all of that. It then goes to modeling, which is usually when we talk about machine learning, that’s the “sexy” part, right? Building this model that predicts things. Then it goes to deployment, maintenance, and monitoring. This requires a lot of what we call “machine learning operations” or “How do we deploy this thing?” Then containerization comes into play, monitoring those API's and the cloud.

Santiago: If you look at the whole lifecycle, you're gonna realize that an engineer has to do a bunch of different stuff. Now, I know people that specialize in one of those buckets. They specialize in the data – data analysts, for example. There’s people that specialize in deployment, maintenance, etc. which is more like an ML Ops engineer. And there’s people that specialize in the modeling part, right? But some people have to go through the whole spectrum. Some people have to work on every single step of that lifecycle. There’s definitely a lot of opportunities and definitely a lot of skills to acquire. Anything that you can do to become a better engineer – anything that is going to help you provide value at the end of the day – that is what matters.

Alexey: Do you have any specific recommendations on how to approach that? I see two things in the process you mentioned. First, you said we formulate the business problem. Then there is the part when we do data preprocessing. Then there is the “sexy” part of modeling. Then there is the deployment part. So two out of these five steps – the data prep and model deployment – they are very heavy on engineering, right? Do you have any specific recommendations on how to become better in these particular phases when it comes to engineering? (49:23)

Santiago: Absolutely. In the model, in the deployment part, any skills that you can grab from DevOps are going to pay a lot of dividends for you. Skills like learning how to build API's - just using Flask or Fast API in Python. All of that knowledge that you’re going to be acquiring before even getting into machine learning, they are definitely going to pay off. Learning how to use Docker, or something like Docker – how to put your application, your API, inside a container. That’s a skill that’s definitely going to pay off. Learning a cloud provider, or how to use Amazon, how to use Google Cloud, or in the case of Amazon, AWS, or Azure. Those cloud providers, learning how to create lambda functions, all of that stuff is definitely going to pay off here, because it's about building systems that clients have access to. (50:00)

Santiago: All of those little things that you're putting together today, in preparation to learn machine learning, or to become a better engineer, are definitely going to pay out when you get to the market and you start trying to deliver this value. Don't waste any opportunities or don't say no to any opportunities to become a better engineer, because all of that factors in and all of that is going to help.

Alexey: Yeah, thanks. Maybe I just want to add a bit. The things we discussed when we talked about how to approach machine learning also apply here. You don't just go and read a book about the cloud. Instead, you think first about the problem and then you try to solve this problem with the cloud? Right? So you focus on the problem first. Otherwise, the cloud is such a big topic. It's not possible to learn it all. (51:21)

Santiago: Yeah, there's no such thing as “Go and learn the cloud.” (51:53)

Alexey: Yeah, exactly. (51:55)

Santiago: “Here are five steps to learn the cloud.” There is no such thing. It’s huge, right? You just have to just pick and choose, “What do I need right now in order to get this project here to the next stage?” Right? So “What do I need to learn? Oh! A lambda function.” “Oh, I need to put the lambda function behind these things.” That's the way you start building all of the puzzle pieces that are going to get you to a final solution. (51:56)

What is the difference between machine learning and data science?

Alexey: We have a question. I'm interested in your take. “In your opinion, what is the difference between machine learning and data science?” (52:19)

Santiago: That is a hard question to answer, because I don't think there is consensus in the industry. I do see personally – and this is just my personal opinion – I do see machine learning as a more hands-on practical side of the equation. And I see data science as a more theoretical field. That's just me. A lot of people will definitely disagree. A lot of companies use these titles interchangeably. So you're a data scientist and what you're doing is very hands-on. You're a machine learning person or what you do is very theoretical. But I do sort of separate those two in my head. That way that machine learning is more hands on, more “Let’s build something and put it out there.” Data science is more science, right? It's more theory. It’s more, “Let's create things that don't exist right now.” So that's the way I look at it. (52:35)

Alexey: Interesting. The way I look at this is a bit different. It's from a different angle. The way I think about this is – you have data science and machine learning is one of the tools there. But there are other tools. For example, if you're solving a problem with data science, you don't always need to go and take machine learning and use it as a tool. Maybe there is a simpler approach that you can use. Maybe you can just use that one. (53:34)

Santiago: I like that, yeah. I definitely like it that way. So you look at machine learning as a subset of data science? (54:02)

Alexey: Not a subset. It's like – you are a carpenter and you have different tools. One thing you have, I don't know what kind of tools carpenters have, say a hammer. A saw. Then maybe you have a tool set with some different hammers, this would be machine learning, right? And then there is a different set of tools that will be maybe something else. (54:08)

Santiago: I like it. I like it. A data scientist to you will be somebody that's capable of using machine learning, but is also capable of doing other stuff. He or she can use other, different tool sets, not only machine learning. Yeah, I like that. (54:35)

Alexey: I haven't seen other people actively saying this. So I'm not sure if there is a consensus. But this is how I like to think about this. (54:51)

Santiago: I've seen these concepts used all over the place for different things. Yeah. So I'm not sure there is consensus on that. (55:00)

Getting into machine learning - Reiteration

Alexey: We have a question from Ali. “I am an application developer manager. There are a lot of complications I'm trying to read. I'm trying to learn machine learning. Should I start with machine learning projects, or attend a course? Or learn math? How do I decide in which area of machine learning I can excel?” I think we covered that, but maybe we can reiterate a bit. So what do you think? (55:10)

Santiago: What I would say is – if you already got coding skills, if you already know how to develop software, there are two ways for you to start. One way is to try to find a problem really quick and try to solve it. The Kaggle tutorial is the perfect place to start. You're not gonna miss it – go to Kaggle, there's going to be a list of tutorials, you will know which one to pick. If you want a little bit more theory, before starting with a problem, I would recommend you go and do the machine learning course in Coursera from Andrew Ang. It is an amazing introduction to machine learning. I think 4 million people have taken that course so far. It’s probably one of the most popular, if not the most popular course out there. Start there, that's going to give you a ton of theory. From there, you can start jumping back and forth from problems. Any of those paths will definitely work for you. That's what I would do. (55:40)

Alexey: That's a good course. I am one of those four million. (56:31)

Santiago: Oh, yeah, for sure. (56:36)

Getting past the math

Alexey: This is how I started my career in machine learning – by watching that course. We have a lot of comments. I wasn't able to keep up with them. One of the comments I noticed about this “lizard book” is that a few people commented that “math gets quite difficult in chapter four.” How did you deal with this? (56:37)

Santiago: Let me check chapter four here real quick. Let me see what we're talking about. The lizard book, part two, chapter four – training models? Is that the one? Or part four? Well, those are in the book. In training models? So I'm not sure. Let me tell you this – I'm not a math guy. I promise you that. I am as good as math as anyone else that is not good at math. And I have been able to survive. I've been able to provide value. So I want you to put aside that “Math is gonna kill me.” I want you to focus on “What can I do today to provide value?” And I promise math is gonna come with it without you thinking that you have to go through the math. So I cannot comment on chapter four. Because, honestly, I’m not sure which one we’re discussing. (57:07)

Alexey: Maybe it’s a different one. There are a couple of different lizard books out there. (57:57)

Santiago: Maybe there is a different one. So this is the one that I have here and maybe there is a different one. Chapter 4 here is about training models. Maybe in that chapter is when he talks about gradient descent. Get the overall idea – you do not have to understand how to do gradient descent by hand. That's why we have libraries that do that for us and we don't have to implement training loops anymore by hand. That's not necessary. You don't have to tattoo that into your brain in order to do machine learning. I think that's the best recommendation I can give regarding math. (58:02)

Alexey: Yeah. What worked for me, I remember when I saw these big formulas, usually it was some linear algebra, some multiplications. For me, what helped is trying to translate these formulas into code. When I see them in the code, understand “OK, this scary thing is just a bunch of for loops. And I know how to deal with for loops, because I'm a developer.” Right? I know how to write this, even though it's like a nested – for matrix multiplication, I think you need three loops. But at the end, it's still a bunch of for loops. And we, as developers, know how to deal with for loops. So decomposing and expressing it in code really helps. Then it’s not scary anymore. (58:40)

Santiago: Yeah. What I try to do is, I try to get past the formula by trying to explain it. “What is an intuitive way to think about what's happening here?” Instead of worrying about the formula and how it's done, “How can I explain what's happening?” That helps me a lot to get past that formula. Not necessarily to understand how to do it by hand, but definitely to understand what's happening and why it works. That's what I try to do. (59:25)

Conclusion

Alexey: Yeah, thanks. There is a question about your course and about the link to this course. I will post this link a bit later. When we finish, I will post it in the description. I will also post your Twitter, Santiago. Anything else I should add in the description? (59:54)

Santiago: No, I think. Join me on Twitter, for sure. Stay tuned. I feel happy. I feel validated that a lot of people find the content helpful. By the way, by following me, you’re also helping me by providing feedback and telling me when something doesn’t make sense. That’s the way I learn. That’s the only thing that I’ll say. (1:00:10)

Alexey: Any last words that you want to say before we wrap up? (1:00:38)

Santiago: Thank you for having me here. I’m really, really excited about the talks for the next few days. Especially the one from Elena. I’m looking forward to that one. (1:00:39)

Alexey: Yeah. Elena’s video is already the most watched video on our channel. The one about “Why your machine learning projects fail.” I think her second talk will overcome the first one. I’m really looking forward to that one as well. Thanks a lot for joining us today. For sharing your knowledge with us. (1:00:49)

Alexey: I think it was very motivating, because I know how many developers feel about math. I hope that we changed the minds of some people, who will now go and start solving problems, that would be really great.

Santiago: That’s the goal. (1:01:37)

Alexey: I think that you managed to do this. I’m pretty sure that after finishing today’s talk, a few people will go and, instead of focusing on math, they’ll go on Kaggle, find this tutorial, create a decision tree and… they will stop being afraid. (1:01:39)

Santiago: Thank you. (1:02:02)

Alexey: Thanks, Santiago. And thanks everyone for watching us. If you don’t know about the conference, there is a link about it. Check the talks we have. You can register and you will get a notification about the talks. That’s all for today. See you tomorrow. (1:02:03)

Subscribe to our weekly newsletter and join our Slack.
We'll keep you informed about our events, articles, courses, and everything else happening in the Club.


DataTalks.Club. Hosted on GitHub Pages. We use cookies.