Everyone seems to be talking about Machine Learning. But what is Machine Learning, and do you really need a PhD in Math to master it? LA coding bootcamp Codesmith has recently added a machine learning unit to their core program, and will soon launch an entire Machine Learning Bootcamp. We asked Codesmith’s Director of Machine Learning, Weylin Wagnon, where to spot machine learning in everyday products, why knowledge of machine learning is useful for software developers, and what the job market is like for developers with machine learning skills.
What’s your experience in machine learning?
I run a cryptocurrency mining farm, where we manage mining for our clients who want to invest in cryptocurrency. It’s very complicated to set up and do at scale, so we streamline the machine learning process.
What is machine learning?
In general, machine learning is equal parts math, statistics, computer science, and voodoo. Machine learning is very different from the traditional software engineering or programming paradigm. In computer science, you provide a set of rules and input data to make some kind of output. In machine learning, you switch that around. You input data and input the answer you want to see, and the machine figures out the rules required to get that answer. It is a little bit magical, it’s pretty challenging, but with a clear approach to understanding machine learning, it is possible to do extraordinary things with these tools.
How is machine learning different from artificial intelligence?
The standard general purpose computer is not intelligent. Artificial intelligence gives the machine some automated behavior that we consider “smart.” Machine learning is a subset of Artificial Intelligence and requires learning from previous data. As humans, we use our previous memories to influence our future behavior; machines can learn from previous data to do the same thing. Overall, AI doesn’t imply data alone, whereas machine learning is all about data.
Where do we see Machine Learning in the real world? Can you give us some examples?
Anything that is currently tedious to do for people but requires some kind of creative decision making is a target for machine learning software. Most of the cutting edge machine learning projects are coming from large companies that have huge data sets. For example:
How can machine learning be useful for a software developer?
Machine learning exists in an application ecosystem (like an API). So even if a developer doesn’t want to touch the whole backend of an application, they are still going to have to interact with some of these systems. Having at least an understanding of the concepts behind machine learning can be valuable in the long run when designing systems.
Any exposure to machine learning is a really good mark on your resume. Having interacted with such machine intelligence systems shows that you have a strong competency with current and future technologies.
Why has Codesmith decided to add Machine Learning to the curriculum?
Google I/O’s last conference (and every main stage) was fully focused on AI and machine learning at all times – it’s a significant trend.
You need to be able to work with large amounts of data, be a smart programmer, understand neural networks, and have machine learning skills if you want to build the next generation of tech products. And if you don’t, you’ll be left behind over the next 10 to 15 years. It’s hard to observe the future of jobs and not be scared of how machine learning is taking over; I think the best way to stem that tide is to get into the field yourself.
Tell us about the new machine learning unit at Codesmith and how you came up with the course.
We are now offering an entire unit within Codesmith’s core software engineering residency, plus a six-week stand-alone course for alumni and experienced coders. I just finished teaching the unit. It’s not a complete course, but it does give students all the tools they need to go forward in machine learning. We ran a beta-version of our six-week course for alumni, got a lot of feedback, and are iterating right now for our public course. It’s exciting to push software engineers on the right path. Machine learning is something that will be hard to avoid in the future so it’s really valuable to get into the space right now.
I spent a long time researching before writing the curriculum. I paired up with Kush Kumar, part of the USC Machine Learning Department, who is a stellar expert in the field. Combining his expertise with my teaching background, we forged the content together.
Can you really teach machine learning at a coding bootcamp? How do you fit such a vast topic into a short course?
We teach machine learning in the last quarter at Codesmith, so that students have the most experience and can gain the most from it. As we go through Codesmith, the pace of students’ comprehension accelerates, so they get used to picking up new information fast.
The core Codesmith unit is focused on teaching students about general machine learning ideas, providing a framework to think about machine learning, and defining terms that we’ll see a lot. We are focused on coding best practices first. Then, we’re fitting machine learning into the curriculum as a new tool and a new library, and not as a fundamentally alien concept.
We do a deep dive into re-engineering some machine learning algorithms so we can see it’s not just magic. But on this level, you don’t have to engineer everything yourself. We teach libraries like Pandas to enact a lot of complex behavior very quickly. The program is mainly project focused as we go through, and we also practice pair programming.
Students also learn some DevOps, neural networks, and Tensorflow. By the end of the unit, they’ll have covered the vast majority of the machine learning field and will be able to autonomously create projects.
What is the job demand like for machine learning skills?
In LA, job listings mentioning machine learning often offer salaries 10% to 30% higher than regular software engineering roles. The goal of our program is not to produce data scientists, data analysts, or data engineers – we’re aiming to graduate engineers who can build advanced programming products and meet the needs of a “machine learning software engineer” job listing. Companies are getting very competitive as the demand for machine learning engineers grows faster than the supply. The main source of machine learning talent comes from master’s degree or PhD programs, so it’s a challenge for companies to find enough engineers to rapidly prototype machine learning products. In addition to being in great demand, machine learning skills are a great accent to any software engineering role.
Is there anything you’ve had to leave out of the Codesmith machine learning curriculum?
We don’t cover neural network libraries in our Codesmith unit, but we can provide resources for students who are interested in learning more, and we highly encourage alumni to take the full machine learning course.
We always hear that you don’t have to be a math whiz to be a good programmer, but do you need math skills to do machine learning?
In the machine learning unit, we don’t focus a lot on math. People get the idea that machine learning is only about math because of Andrew Ng’s popular Machine Learning course from Stanford, which is all focused on the calculus derivation of different algorithms, and how to implement them. But that knowledge is not required to build machine learning projects – most of it is already wrapped up in libraries. So your math ability doesn’t impact your ability to implement machine learning systems.
However, at some point in your career, you may want to develop new machine learning processes, and then that math and algorithms research will help you. But in general, it’s not as big of a requirement as people think.
What’s an example of the sort of machine learning projects that students would work on at Codesmith?
At Codesmith, we mainly focus on portfolio projects. Having a significant portfolio of work is so important to getting hired in machine learning. Students work on projects which involve making graphs that convey information, getting insights from data, and then presenting the insights in a way that’s understandable for less technical people.
Who is teaching this new unit? How will you train your instructors to teach this new machine learning unit? Or will you hire new instructors?
So far I’ve been the sole instructor along with our advisory member Kushaan. I am hoping to continue contributing as long as I am able, plus we have some super talented engineers who have been studying machine learning on their own and have attended all of our machine learning courses. We like to take a multifaceted approach – we have really talented teachers, engineers, and people with math backgrounds, and it’s through all of us working together that we can make it work. It’s a community approach.
How often does the Codesmith team update or add new units to the curriculum like this?
We reevaluate the curriculum after every graduating class and talk about whether topics are still relevant, and whether we can improve. We add content often, like new lectures, or individual focuses, but rarely whole units. So this is exciting!
Can students in both LA and NYC campuses learn machine learning?
So far, we’ve only taught machine learning at the LA campus. Our first NYC cohort starts in two weeks, and we hope to also offer machine learning there eventually. Stay tuned for our separate machine learning course, which we are hoping to launch in the near future.
Are there resources or meetups you recommend for machine learning beginners?
The best machine learning resource for beginners is a YouTube channel called Welch Labs. He’s a fantastic teacher and makes the subject really dynamic. You can learn about the field and the core concepts behind it, without requiring advanced math.
There are also plenty of online courses and interactive online portals. I don’t particularly like those, but some people benefit from them as an introduction to concepts. Those online courses can make you feel like you’ve accomplished and learned a lot, but you have no autonomy, and having to define a task for yourself afterward can be really challenging. I think an interactive course where you build projects is the best option.