Ask HN: Engineers from non-CS background, how did you pivot into ML/AI?
I am a EE, hardware engineer with about a decade of experience in PCB electronics and systems engineering experience which includes a brief stint at a FAANG that also happens to be an E-tailer. I have been "dabbling" in Python for about a year now and just recently started with DL using PyTorch and find it quite interesting. To be clear I don't write code at work, atleast not until now. I intend to utilize any free resources (MOOCs) to teach myself the latest techniques in DL for CV. What I am not clear is the next logical step.A part of me wants to Boostrap a SAAS using Python stack to build something that I can market using the traditional channels(PH,Show HN,Reddit,answer SO questions) and show it to potential employers but am not sure if I will even get to the interview stage with a resume but that doesn't look anything like a programmer with a tradional CS background and work experience to boot. Sorry about the long and winding question, but what should I do to get noticed by recruiters at FAANG and non-FAANG to stand apart from the CS crowd?
141 comments
[ 2.9 ms ] story [ 211 ms ] threadThe usual answer here is look for suitable business / r&d cases within your own EE industrial domain and use ML/AI as any other tool instead of as a black box or a magic wand. Good luck.
I cant seem to get past HR. My resume has that I'm a Chem Engineer BS, Industrial MS, 7 years in engineering, 2 years of Electrical Engineering.
The first page of my resume is my 10 years of non-career programming experience. Built a Dishwasher(embedded C++), full stack app(RN JS, Mysql PHP laravel), and smaller projects.
I cannot get past HR.
Every real life programmer I show my work to, knows I'm capable. Heck even some got me in touch with HR. Nothing came of it.
This must be part or most of the problem. Cut your resume down to 1 page, if possible. Include a meaningful cover letter catered to the opportunity and specific company youre applying to. Shove the last ten years stuff into the very end, and start that first page with your software knowledge and related projects. Ping me someday here if this ends up getting your foot in the door.
You're mostly on track with your plan to build something. You do need to demonstrate that you have the skill set, but building one giant thing isn't the answer. There's so much that goes into building a giant thing, that I can't accurately access your ML skills.
Ideally I like to see a lot of small things over a reasonable amount of time. Someone with a solid GitHub showing 6-12 months of paper implementations, weekend geez-wiz hacks and various other projects would go right to the top of my call back list.
Hope that helps, good luck with the job search.
I'd suggest you look for an opportunity to apply ML/CV/AI in your industry (deep learning for PCB inspection maybe?). Show the possibilities, get some research funding, do a pilot program or similar. Lead and drag your company (kicking and screaming if need be) into the 21st century.
Then you will have ML/AI on your resume, and recruiters will come looking for you.
Also, you may not realize but we’ve been using ML techniques for decades in communications. Gradient descent is used to optimize equalizers; maximum likelihood estimation(and equalizer optimization) used for phase estimation in high order QAM. Plenty of other examples. So you probably are already familiar with much of the basic tool kit. I had a wannabe startup founder in ML tell me that there’s no way I could possibly understand the stuff if I didn’t have PhD in that area in CS (I am physics). I just smiled and nodded.
Although I went right after my undergrad, there are several in my cohort who were in industry for as long (or in one case much much longer) than you have before starting their PhD.
There are certainly ways to merge your hardware experience with learning. Either applying AI to hardware design, or applying hardware design to speed up or otherwise improve learning, lots of research going on in both areas.
BTW, I think the you may have a bit of an advantage because of the math background you presumably have with a BSEE (linear algerbra & differential equations).
I'm an iOS engineer without a STEM background, and I've been contacted by Amazon recruiters for entry-level ML/AI positions. I thought it was weird, but they said they've hired a few people with iOS backgrounds and no prior ML/AI experience who are now excellent ML engineers. I backed out because I knew I would fail the interview process at this point, but it's something for me to think about for the future.
There are tons of youtube videos and books (Cracking, Dynamic Programming for Interviews, etc). Definitely do research into questions that will be asked.
Linkedin, Cloudera, Redhat, Quora, Robinhood, Asana, Salesforce, Dropbox
From your question, it sounds like you want to be a software engineer rather than an ML/AI engineer -- is that a fair assessment?
I know ML/AI is all the rage. I just feel that targeting it so heavily is a bit shortsighted.
Maybe that is too simplistic but I can't help after my 1 semester ML course think that most of the ML problems people are solving aren't really suited at all. Like SWE see this cool hammer and now everything is a nail. Maybe I should read up on startups using it successfully for anything but I haven't seen many of those on the frontpage.
Patience. Spending that extra time (it helps if you really enjoy it or can program yourself to really enjoy it).
https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_6700... for inspiration.
To answer the question though: I'm not sure what you produce other than maybe blog or publish some analysis using your data skills. And maybe: https://github.com/MaximAbramchuck/awesome-interview-questio...
(source: non-CS engineer at amazon who watched the amazon videos internally before they were made public. I'm not a data scientist yet but sometimes, esp. when people talk about the challenges of AGI, I think about transitioning.)
I am not an expert, but from what I've heard/seen, being really solid on the fundamentals of regression and feature modeling (and not being afraid to read and apply ArXiv papers) are all key. And eagerness and statistics go a long way and are valuable to companies.
Non-FAANGs may be less picky but the competition in the field is too great at the moment (due to MOOCs/Bootcamps increasing supply), and even with an excellent portfolio it may be impossible to stand out. (in my case, despite my data science "fame" most recruiters tossed my resume out immediately during my job hunt a year ago; the only interviews I got were by going above the recruiters. And that was for data science, not even ML/AI)
Even after working as a Data Scientist for over a year, I've received practically no recruiter spam.
ML is unfortunately better done in a big company due to data but also a b*Ch due to tremendous friction within org to get things done.
Another key strategy is to commit yourself to build an end 2end ML application, structure your learning around it. I found this a tremendous technique to turbo charge my learning.
I am a Director of Data Science and Software Engineering for a mid sized firm (~1000 employees and $150-200MM revenue). I started with a Finance degree then shifted into an analysis position at a FAANG (lots of excel, SQL, learning how to query big data). This eventually led to learning more about tech (python, AWS cloud stack, messaging queues) and after 8 years in the industry giving me enough experience to manage teams of data scientists, software engineers and data analysts.
Although it is so important to know all the software engineering stack, many companies will benefit from simple business intelligence and data analyst roles. I guess my recommendation is to also keep an open mind in looking for these types of roles in the market (data analyst, business intelligence engineer), because given your desire to learn and existing background, its clear you can make a big impact in those companies as well. And it will be much less competitive than traditional CS crowd.
Some food for thought
A lot of companies that say “data scientist” when they really mean “spreadsheet analyst” are places to avoid if you have career aspirations in ML. In the worst cases it can be a bait and switch (very common) to get overqualified people to babysit rudimentary analytics. Especially avoid places that might do this to pad their staff for any type of acqui-hire or investor signalling reasons, because your career goals will not be acknowledged.
In the best cases, it can be some befuddled IT manager who vaguely thinks they need “AI” but really they don’t have projects that would actually benefit from it. They might be sympathetic to your dissatisfaction in the reality of the job, but will have little power to do anything about it.
Somewhere inbetween is another very frustrating case: situations where the business or product clearly can materially benefit from “real” machine learning, and from the perspective of making customers happy & making money it’s a no brainer to invest time to research implementations, but risk averse management, often with no ability to gain an understanding of the benefits of investing in machine learning, or who want to act as credit / politics gate-keepers for an existing system, puts the brakes on it and retasks you on things that just waste your talent.
I can’t reccomend Kaggle enough for those who are looking to prove their abilities in the field.
This is a very tough track but uf you have software development experience it should be easier to get a role in ML or Data Science.
Lots of good advice about acquiring skills, I don't have much to add beyond that. I'll just mention that before you jump into the advanced stuff, please understand the terminology and basics very strongly. I've interviewed over twenty people for roles in ML the last year and many (despite having ML on their resume or even some experience in it) could not even explain the difference between training/inference, the meaning of validation, etc. The field is so hot right now that many unqualified folks are trying to get in, often by faking more experience than they really have. In response, I've created a simple 'fizzbuzz' test just so I can quickly screen people.
Or put another way: are there plenty of problems where ML/AI are valid tools or are they largely cool tech looking for problems to fit into?
https://www.youtube.com/watch?v=7Pq-S557XQU
I think the advice about getting in as a hardware engineer is solid. At my workplace, there's a ton of need for people working on specialized hardware for DL, and for people working on the software that works with it (optimizing compilers, etc).
If you are looking to break into the software side of DL, the first two thirds of the Deep Learning book [1] contains all the math you need to know to pass the interviews. Then, it's just a matter of getting interviews; I found that I needed professional experience deploying DL/ML to do that. I got that by doing side projects at work. For instance, we had a long standing operations research problem, and I spent some free time at work implementing a RL algorithm to solve it. I didn't get too far, but I was able to talk coherently about the papers involved and about how I planned to conduct the project, which went a long way.
[1]: https://www.deeplearningbook.org/
Are you implying that, once prepared well enough, the contents of the interviews are simpler than getting actually noticed in the pile of applicants ?
Much easier to quiz the applicant how they would solve a problem, or to discuss a previous project or paper they've published (or are interested in). Some people will find that much easier than whiteboard coding, others will hate it.
It really depends where you apply and if you want an applied or research role. Some places won't touch you unless you've got a publication in somewhere like CVPR. Others will go _hard_ on the stats questions. Other places want to see a strong Kaggle rank or some personal projects. It's really useful to have a portfolio here.
Does this mean you'll be good at the job? No. Is this very wasteful? Yes.
Getting interviews, on the other hand, requires you to read the recruiter's mind, and can vary depending on what the recruiter had for breakfast, or if they fought with their significant other that morning. It's much less formulaic.
ML-SWE: SWE with ML focus - building architecture around models, feature engineering, distributed training, etc. Relatively limited ML knowledge needed (IMO). The math won't be helpful for this role. Much more important to have SWE background. If you want this, keep building your programming knowledge (Python) and read books. Would focus on understanding the popular frameworks PyTorch and TensorFlow b/c your work will likely interface with those.
Research engineer: Mostly for MS/PHD background. Farther away from the product and closer to actual research. This doesn't sound like what you want to do.
Data Scientist: ML is a subset of the knowledge needed. Applied statistics as important, if not more so. Doesn't sound like you want this.
A path forward:
(1) Program a lot. On what? Anything at all, b/c you need programming skill to work as a SWE.
(2) If you want to do ML-SWE, program with an eye towards ML applications. Maybe do a simple cloud project that leverages ML - Google Cloud makes this particularly easy for classification tasks. Focus on breadth here, not depth. No sane person outside of academia can keep up with state-of-the-art and truly understand it. Far too much material, so focus on fundamentals.
(3) Work towards your strengths. You aren't some hotshot kid out of college proclaiming to be an AI guru. That would be silly and no competent recruiter would believe it. You know hardware - and AI (neural networks) leverages a lot of hardware. Why not focus on the hardware side of AI? Demonstrate your knowledge of how/why TensorFlow is so effective across distributed hardware, or how CUDA accelerates NN computation, or why TPU claims vs. Nvidia may be up to interpretation, etc. This should be a natural transition given your background.
TLDR; Know what you really want to do. Your background is valuable. Play to your strengths. Don't ring the bell.