ML engineer as second career: should I be a software engineer first?

I am contemplating a second career as a machine learning engineer. But some sites (e.g. Springboard – I don’t have a way to validate) mention that solid software engineering skills are prerequisite. So I’m on the crossroads between ML engineer or software engineer roles. I am currently holding neither role until now.

ML experience: very new… just been scouring through courses

SE experience: I have built some apps throughout university (none of which are real-world) and develop some apps in the first career. So I do have some sense of developing applications, where to go when I have issues. But it’s not to the point that I have a strong grounding of design patterns, CI/CD, etc. Given a project, I would usually look up all these things and figure out on the spot (is it bad practice?)

However, which to choose between these two:

  1. Defer my machine learning [wanna-be] career for a solid software engineering career first, and then during that career pick up ML/DL skills along the way? or:
  2. Instead do a ML->SE combo: after learning material for ML/DL knowledge, immediately implement whatever I have learned into working software and serve them as portfolio, and then apply as a ML engineer?

In your experience being a machine learning engineer (or any related roles), were you interviewed regarding algorithms/data structures (CS 101) as well? Or are they merely interview-specific material that I could just pick up any day I want to?

I ask these because currently, I am picking between readying my ML/DL chops first via and later projects, or going to Leetcode and chew some algo books first… I fortunately have no time constraint, other than a ghost telling me to quick up before I lose my money over time.

Looking forward to hear from you. Forgive any silly wording here, if any. Thanks…


Disclaimer: I’ve never held a datascience position, but I participated in interviews for some of Andrew Ng’s ML startups.

There are two main challenges to overcome when applying to any job:

  1. Getting an interview
  2. Excelling at the interview

Getting the Interview

Here is a recent analysis of the credentials of Data Scientists in Singapore:

This analysis suggests that without a Masters or PhD that your resume (and mine too!) will frequently be screened out by many of the companies we might apply to. Only 6% of Data Scientists had either a MOOC or Bootcamp as their primary qualification.

In order to get an interview for a data science role we will have to stand out in some way. I’ve thought a lot about how I might try to stand out and have come up with the following options:

  1. Competitive programming
  2. Stellar open source contributions
  3. Traditional networking

OpenAI mentions that their Fellowship program is interested in top performers in both Kaggle and Leetcode competitions. Excelling at these competitions is often a good way to stand out and demonstrate a level of competency. The downside here is that there are so many smart and hardworking people trying to win the same competition as you! It’s a very competitive environment and can require a lot of time before you start to make headway on the leaderboards.

A second way to stand out might be to become a very active contributor to an important data science project. Numpy, Pandas, PyTorch and TensorFlow all come to mind. A few years ago a friend of mine became a very active contributor to the Lucene open source project. When ElasticSearch needed a Lucene specialist, their technical staff was already familiar with my friend from having worked with him on Lucene. He got the job without even having to go through a technical interview! The downside here is that making substantial contributions to any open source project requires a lot of time and domain expertise that you might not have yet.

Finally traditional networking is an approach that works in any field. If a friend of yours works at a company you’re interested in, they can often get your resume past an HR screen or an automated screening process. However, networking isn’t as simple as just connecting with random people on LinkedIn. You basically have to make friends and demonstrate a level of competency to them in order for them to stick their neck out for you. Ironically some of the best ways of doing this would be to participate in Kaggle competitions with someone or work on an open source project with them!

In short, you and I have an uphill battle when it comes to getting these jobs and since we lack traditional credentials that might get our foot in the door. As a result, we have to be more creative in how we capture an employer’s attention.

Excelling at the Interview

If we do manage to get the interview, it’s important to really impress the people interviewing us in order to secure a position.

For the positions I interviewed for, there was one machine learning question (eg. questions about backprop) and one Leetcode style programming question. I suspect later rounds of interviews would have had more questions, but still been split 50-50.

I don’t have much advice on the ML portion of interviews, but this thread may offer some insight:

For the Leetcode portion of the interview, the best way to get better at these questions is just to do a lot of them. If you’re looking for a practical introduction to this material, I would recommend The Algorithm Design Manual by Steven Skiena. It is, in my opinion, the most accessible and succinct introduction to algorithm design.

My Approach

Like you I have a lot of time on my hands so I am working through Kaggle competitions until I achieve a Gold Medal in at least one competition. I have been working on this goal since January and recently achieved my first Bronze medal. I am fairly confident that I can achieve a gold medal by the end of the year.

Once I achieve a Gold Medal I’m hoping to shift back to a focus on algorithm questions in preparation for interviews. I will use HackerRank to practice questions.