# What I Look for in a Machine Learning Engineer

I was recently asked by someone, “What do I need to do to get into Machine Learning and Finance industry?” I told them that I would think about it and get back to them. I have been in many interviews for Machine Learning Engineers and I do have a set of questions that I frequently use to get a feeling for where someone is in their career and where they are hoping to go. We are looking for people at various phases in their growth, so it is less of a concern about whether someone is some elite developer and more about whether they are inquisitive and eager to learn. I will not share the questions I use in interviews, but I will happily share the attributes I am looking for.

## Sound Engineering

Before anything else, I am looking for someone’s engineering acumen. I went to college for Chemical Engineering and I believe on our first day the professor defined engineering as problem solving under constraints. The key thing that we learned was how to take an abstract problem statement, break it down into manageable pieces, and then solve the smaller subproblems. I believe that most of engineering discplines could be boiled down to this, they just deal with different problem domains.

I believe a key differentiator between more and less experienced developers is in understanding where to break the problem down. Problems have an inherent amount of complexity. Good design can mitigate that complexity keep it from growing out of control. It is the same concept of algorithmic complexity. We analyze an algorithm and see how the runtime grows as the size of the problem increases. In the same way, we can look at an architecture and see how the complexity grows as we increase functionality and services.

The domain of Machine Learning is still relatively fresh, and the industry is still churning with new Python libraries popping out every other week. Therefore, the solutions we build for delivering Machine Learning Models must be well designed because they will likely need to evolve. Building a system that can cleanly evolve over time is a difficult engineering challenge. I am looking for people who understand the implications of decisions in the near term but also how it will affect the evolveability of the system going forward.

## Strong Machine Learning Fundamentals

Though this may seem obvious, there are some nuances I wanted to highlight. While I am fascinated by the advances we are seeing with Neural Networks and Reenforcement Learning, they should not be the first tool you reach for. I am going to ask someone about a hypothetical problem and get their feedback on how they would approach it. If the first thing they suggest is, “Oh, use a Neural Network!” red flags are going to go off. Neural Networks are powerful, but they should not be the first tool you reach for in your toolbox.

It is impressive just how far you can get with Linear Regression and Logistic Regression. These algorithms are robust, and their behavior is easily explained. It is enourmously valuable to be able to explain the behavior of a model to your non-ML colleagues in terms they can understand. You can then take things a step further and do some data exploration and try subsetting your population and having different models for the different populations. Think of it as a brute force Ensemble technique. Now, if you reach the end of Linear and Logistic Regression, I am all for trying more sophisticated techniques. You just should not start with the fanciest tool in your toolbox.

I also want someone to understand the failure modes of the model and how they impact the outcome. It is easy to get caught up in trying to tune a model for a particular metric but is that really the best thing for how it will be used in production? Machine Learning models really took off when they were applied to the field of advertising where the upside of being correct was large but the downside of being wrong was low. This was a perfect application of these tools. What happens when the downside of a wrong prediction is large? What if a wrong prediction leads to someone dying? What metric are you going to tune the model for in that scenario? I want someone who is going to ask the question, “Why do you want to predict that? How do you plan to use the prediction?” because only when you know that can you really discern the best model.

## Team Skills

The industry often calls these “Soft Skills”. I think that undervalues how critical they are. The problems we are facing now are so large and complex they cannot be completed by a single individual. If someone does not have the ability to operate well within a team, I am not interested. I do not care how much of a wizard you are. If you are one of the fabled 10X developers but you apply a negative multiplier to the rest of the team, it is going to be a net loss for us.

The first and most critical Team Skill is the ability to communicate in writing. This includes the clarity of your code, emails, chat, diagrams, all of it. If you do not have the ability to put your thoughts down into a written form, it is going to be difficult for you to pass your ideas around the team. So much of our communication now occurs through text whether it be email, code, pull requests, and chat messages. I will not automatically disqualify someone if there writing is not amazing, but it is a clear differentiator. If you have a blog where I can see your work and how you explain your thoughts, you are automatically in the top 5% of people I interview.

Next, I want to know if you can explain complex ideas. Throughout the interview I am going to be listening for what you are passionate about or have a deep understanding of. I am then going to ask you to explain that concept to me. I may already be familiar with the subject, but I want to know if you can explain it to someone who is not a domain expert. Developers who can break complex problems down into explainable pieces are a rare breed.

## Technical Skills

There is a reason this section comes last. While it is important, it is the the that least differentiates people. I care little about which stack or set of technologies you have worked with in the past. If you happen to be familiar with what we are using it is a small bonus, but it is nowhere near the most important thing. I will want to know if you have worked with the concepts though. I want to know if you have worked with Object-Oriented and Functional languages. I want to know if you have worked with Relational Databases or streaming systems. The reason for this is more to guage what training someone would need should they come on board. Finding someone who spends time learning on their own is a huge bonus because it shows curiousity and initiative, not because I expect them to work overtime to get up to speed.