Over the past 8 months, I've been interviewing at various companies like Wadhwani Institute for Artificial Intelligence, Google's DeepMind, Microsoft, Ola, Fractal Analytics, and a few others primarily for the roles-Data Scientist, Software Engineer & Research Engineer. In the process, not only did I get an opportunity to interact with many great minds, but also had a peek at myself along with a sense of what people really look for when interviewing someone. I believe that if I'd had this knowledge before, I could have avoided many mistakes and have prepared in a much better manner, which is what the motivation behind this post is, to be able to help someone bag their dream place of work.
After all, if we're going to spend (at least) 2/3rd of our day working, it better be worth it
This post arose from a discussion with one of my juniors on the lack of really fulfilling job opportunities offered through campus placements for people working in AI. Also, when I was preparing, I noticed people using a lot of resources but as per my experience over the past months, I realised that one can do away with a few minimal ones for most roles in AI, all of which I'm going to mention at the end of the post. I begin with How to get noticed a.k.a. the interview. Then I provide a List of companies and start-ups to apply
, which is followed by How to ace that interview
. Based on whatever experience I've had, I add a section on What we should strive to work for. I conclude with Minimal Resources you need for preparation
NOTE: For people who are sitting for campus placements, there are two things I'd like to add. Firstly, most of what I'm going to say (except for the last one maybe) is not going to be relevant to you for placements. But, and this is my second point, as I mentioned before, opportunities on campus are mostly in software engineering roles having no intersection with AI. So, this post is specifically meant for people who want to work on solving interesting problems using AI. Also, I want to add that I haven't cleared all of these interviews but I guess that's the essence of failure-it's the greatest teacher! The things that I mention here may not all be useful but these are things that I did and there's no way for me to know what might have ended up making my case stronger.
1. How to get noticed a.k.a. the interview
To be honest, this step is the most important one. What makes off-campus placements so tough and exhausting is getting the recruiter to actually go through your profile among the plethora of applications that they get. Having a contact inside the organisation place a referral for you would make it quite easy, but, in general, this part can be sub-divided into three keys steps:
a) Do the regulatory preparation and do that well: So, with regulatory preparation, I mean -a LinkedIn profile, a Github profile, a portfolio website and a well-polished CV. Firstly, your CV should be really neat and concise. Follow this guide by Udacity for cleaning up your CV-Resume Revamp
. It has everything that I intend to say and I've been using it as a reference guide myself. As for the CV template, some of the in-built formats on Overleaf are quite nice. I personally use deedy-resum
As it can be seen, a lot of content can be fit into one page. However, if you really do need more than that, then the format linked above would not work directly. Instead, you can find a modified multi-page format of the same here. The next most important thing to mention is your Github profile. A lot of people underestimate the potential of this, just because unlike LinkedIn, it doesn't have a "Who Viewed Your Profile" option. People DO go through your Github because that's the only way they have to validate what you have mentioned in your CV, given that there's a lot of noise today with people associating all kinds of buzzwords with their profile. Especially for data science, open-source has a big role to play too with majority of the tools, implementations of various algorithms, lists of learning resources, all being open-sourced. I discuss the benefits of getting involved in Open-Source and how one can start from scratch in an earlier post here
. The bare minimum for now should be:
- Create a Github account if you don't already have one.
- Create a repository for each of the projects that you have done.
- Add documentation with clear instructions on how to run the code
- Add documentation for each file mentioning the role of each function, the meaning of each parameter, proper formatting (e.g. PEP8 for Python) along with a script to automate the previous step (Optional).
Moving on, the third step is what most people lack, which is having a portfolio website demonstrating their experience and personal projects. Making a portfolio indicates that you are really serious about getting into the field and adds a lot of points to the authenticity factor. Also, you generally have space constraints on your CV and tend to miss out on a lot of details. You can use your portfolio to really delve deep into the details if you want to and it's highly recommended to include some sort of visualisation or demonstration of the project/idea. It's really easy to create one too as there are a lot of free platforms with drag-and-drop features making the process really painless. I personally use Weebly which is a widely used tool. It's better to have a reference to begin with. There are a lot of awesome ones out there but I referred to Deshraj Yadav's personal website to begin with making mine:
Finally, a lot of recruiters and start-ups have nowadays started using LinkedIn as their go-to platform for hiring. A lot of good jobs get posted there. Apart from recruiters, the people working at influential positions are quite active there as well. So, if you can grab their attention, you have a good chance of getting in too. Apart from that, maintaining a clean profile is necessary for people to have the will to connect with you. An important part of LinkedIn is their search tool and for you to show up, you must have the relevant keywords interspersed over your profile. It took me a lot of iterations and re-evaluations to finally have a decent one. Also, you should definitely ask people with or under whom you've worked with to endorse you for your skills and add a recommendation talking about their experience of working with you. All of this increases your chance of actually getting noticed. I'll again point towards Udacity's guide for LinkedIn and Github profiles.
All this might seem like a lot, but remember that you don't need to do it in a single day or even a week or a month. It's a process, it never ends. Setting up everything at first would definitely take some effort but once it's there and you keep updating it regularly as events around you keep happening, you'll not only find it to be quite easy, but also you'll be able to talk about yourself anywhere anytime without having to explicitly prepare for it because you become so aware about yourself.
a) Stay authentic: I've seen a lot of people do this mistake of presenting themselves as per different job profiles. According to me, it's always better to first decide what actually interests you, what would you be happy doing and then search for relevant opportunities; not the other way round. The fact that the demand for AI talent surpasses the supply for the same gives you this opportunity. Spending time on your regulatory preparation mentioned above would give you an all-around perspective on yourself and help make this decision easier. Also, you won't need to prepare answers to various kinds of questions that you get asked during an interview. Most of them would come out naturally as you'd be talking about something you really care about.
b) Networking: Once you're done with a), figured out b), Networking is what will actually help you get there. If you don't talk to people, you miss out on hearing about many opportunities that you might have a good shot at. It's important to keep connecting with new people each day, if not physically, then on LinkedIn, so that upon compounding it after many days, you have a large and strong network. Networking is NOT messaging people to place a referral for you. When I was starting off, I did this mistake way too often until I stumbled upon this excellent article by Mark Meloon, where he talks about the importance of building a real connection with people by offering our help first. Another important step in networking is to get your content out. For example, if you're good at something, blog about it and share that blog on Facebook and LinkedIn. Not only does this help others, it helps you as well. Once you have a good enough network, your visibility increases multi-fold. You never know how one person from your network liking or commenting on your posts, may help you reach out to a much broader audience including people who might be looking for someone of your expertise.
2. List of companies and start-ups to apply
I'm presenting this list in alphabetical order to avoid the misinterpretation of any specific preference. However, I do place a on the ones that I'd personally recommend. This recommendation is based on either of the following: mission statement, people, personal interaction or scope of learning. More than 1 "*" is purely based on the 2nd and 3rd factors.
- Adobe Research
- Aiaioo Labs
- *AllinCall-(Founded by IIT Bombay alumni)
is an Enterprise AI Speech Analytics company. We are working on some of the hardest problems in deep learning space in speech and text domain. They are looking to hire people. If you are interested in working for a startup which pushes cutting-edge deep learning into production, send an mail to firstname.lastname@example.org.
- *Facebook AI Research: AI Residency Program
- *Fractal Analytics (also acquired: Cuddle.ai, **Qure.ai)
- **Google (Brain / DeepMind / X): AI Residency Program
- Goldman Sachs
- **HyperVerge-Founded by IIT Madras alumni who are working on developing AI solutions for real-world problems with clients across the world. The founders comprise of the people who initiated the famous Computer Vision group at IIT Madras.
- IBM Research
- *Intel AI labs (Reinforcement Learning)
- **Jasmine.ai-Founded by an IIT Madras alumni who has also done a PhD from the University of Michigan, they are working on conversational intelligence. Also, they are nicely funded. Looking for people to join their Bangalore office asap.
- JP Morgan
- *Microsoft Research:
- - 1 or 2-year fellowship at the India lab.
- - AI Residency Program
- Next Education
- *Niramai-Former employees of Xerox Research working on early detection of breast cancer using thermal imaging.
- Predible Health
- Samsung Research
- *Suki-AI-powered voice assistant for doctors. Recently, it raised a lot of funding as well and might be opening an office in India soon too.
- *Swayatt Robotics-Working on developing self-driving car for India.
- **Wadhwani AI-Funded by billionaires Dr. Romesh Wadhwani and Sunil Wadhwani, they aim to become the first organisation working towards AI for Social Good.
- *Uber AI Labs & Advanced Technologies Group: AI Residency Program
- *Umbo CV-Security using Computer Vision
- Uncanny Vision
3. How to ace that interview
Your interview begins the moment you have entered the room and a lot of things can happen between that moment and the time when you're asked to introduce yourself-your body language and the fact that you're smiling while greeting them plays a big role, especially when you're interviewing for a start-up as culture-fit is something that they extremely care about. You need to understand that as much as the interviewer is a stranger to you, you're a stranger to him/her too. So, they're probably just as nervous as you are.
It's important to view the interview as more of a conversation between yourself and the interviewer. Both of you are looking for a mutual fit-you are looking for an awesome place to work at and the interviewer is looking for an awesome person (like you) to work with. So, make sure that you're feeling good about yourself and that you take the charge of making the initial moments of your conversation pleasant for them. And the easiest way I know how to make that happen is to smile.
There are mostly two types of interviews-one, where the interviewer has come with come prepared set of questions and is going to just ask you just that irrespective of your profile and the second, where the interview is based on your CV. I'll start with the second one.
This kind of interview generally begins with a "Can you tell me a bit about yourself?". At this point, 2 things are a big NO-talking about your GPA in college and talking about your projects in detail. An ideal statement should be about a minute or two long, should give a good idea on what have you been doing till now, and it's not restricted to academics. You can talk about your hobbies like reading books, playing sports, meditation, etc-basically, anything that contributes to defining you. The interviewer will then take something that you talk about here as a cue for his next question, and then the technical part of the interview begins. The motive of this kind of interview is to really check whether whatever you have written on your CV is true or not:
Anyone who has actually solved the problem would be able to answer at multiple levels. They'll be able to go down into the brass tracks or else they'd get stuck.
- Elon Musk
There would be a lot of questions on what could be done differently or if "X" was used instead of "Y", what would have happened. At this point, it's important to know the kind of trade-offs that is usually made during implementation, for e.g. if the interviewer says that using a more complex model would have given better results, then you might say that you actually had less data to work with and that would have lead to overfitting. In one of the interviews, I was given a case-study to work on and it involved designing algorithms for a real-world use case. I've noticed that once I've been given the green flag to talk about a project, the interviewers really like it when I talk about it in the following flow:
Problem > 1 or 2 previous approaches > Our approach > Result > Intuition
The other kind of interview is really just to test your basic knowledge. Don't expect those questions to be too hard. But they would definitely scratch every bit of the basics that you should be having, mainly based around Linear Algebra, Probability, Statistics, Optimisation, Machine Learning and/or Deep Learning. The resources mentioned in the Minimal Resources you need for preparation section should suffice, but make sure that you don't miss out one bit among them. The catch here is the amount of time you take to answer those questions. Since these cover the basics, they expect that you should be answering them almost instantly. So, do your preparation accordingly.
Throughout the process, it's important to be confident and honest about what you know and what you don't know. If there's a question that you're certain you have no idea about, say it upfront rather than making "Aah", "Um" sounds. If some concept is really important but you are struggling with answering it, the interviewer would generally (depending on how you did in the initial parts) be happy to give you a hint or guide you towards the right solution. It's a big plus if you manage to pick their hints and arrive at the correct solution. Try to not get nervous and the best way to avoid that is by, again, smiling.
Now we come to the conclusion of the interview where the interviewer would ask you if you have any questions for them. It's really easy to think that your interview is done and just say that you have nothing to ask. I know many people who got rejected just because of failing at this last question. As I mentioned before, it's not only you who is being interviewed. You are also looking for a mutual fit with the company itself. So, it's quite obvious that if you really want to join a place, you must have many questions regarding the work culture there or what kind of role are they seeing you in. It can be as simple as being curious about the person interviewing you. There's always something to learn from everything around you and you should make sure that you leave the interviewer with the impression that you're truly interested in being a part of their team. A final question that I've started asking all my interviewers, is for a feedback on what they might want me to improve on. This has helped me tremendously and I still remember every feedback that I've gotten which I've incorporated into my daily life.
That's it. Based on my experience, if you're just honest about yourself, are competent, truly care about the company you're interviewing for and have the right mindset, you should have ticked all the right boxes and should be getting a congratulatory mail soon
4. What we should strive to work for
We live in an era full of opportunities and that applies to anything that you love. You just need to strive to become the best at it and you will find a way to monetise it. As Gary Vaynerchuk
(just follow him already) says:
This is a great time to be working in AI and if you're truly passionate about it, you have so much that you can do with AI. You can empower so many people that have always been under-represented. We keep nagging about the problems surrounding us, but there's been never such a time where common people like us can actually do something about those problems, rather than just complaining. Jeffrey Hammerbacher (Founder, Cloudera) had famously said:
The best minds of my generation are thinking about how to make people click ads. That sucks.
We can do so much with AI than we can ever imagine. There are many extremely challenging problems out there which require incredibly smart people like you to put your head down on and solve. You can make many lives better. Time to let go of what is "cool", or what would "look good". THINK and CHOOSE wisely.
5. Minimal resources you need for preparation
Any Data Science interview comprises of questions mostly of a subset of the following four categories: Computer Science, Math, Statistics and Machine Learning.
- Algorithms and Data Structure:
- NPTEL IIT Delhi lectures
on YouTube (Corresponding Theory)
- Chapters 3, 4, 5 & 7 of the book Operating System Concepts.
- Operating Systems on GeeksForGeeks
- Object-Oriented Programming: You are questioned on how you'd design a system, e.g. a railway ticket booking system. So, you need to discuss with the interviewer as to what are his/her requirements, what kind of classes do you need to make, what kind of variables/methods should each class have, how can inheritance be used (e.g. both Engineer and Scientist classes could derive from the Employee class), etc. So, that comes from practise. You can have a look here for understanding basic terminology.
Math & Stats
If you're not familiar with the math behind Deep Learning, then you should consider going over my last post for resources to understand them. However, if you are comfortable, I've found that the chapters 2, 3 and 4 of the Deep Learning Book
are enough to prepare/revise for theoretical questions during such interviews. I've been preparing summaries for a few chapters which you can refer to where I've tried to even explain a few concepts that I found challenging to understand at first, in case you are not willing to go through the entire chapters. And if you've already done a course on probability, you should be comfortable answering a few numerical as well. For stats, covering these topics should be enough.
Now, the range of questions here can vary depending on the type of position you are applying for. If it's a more traditional Machine Learning based interview where they want to check your basic knowledge in ML, you can complete any one of the following courses:
- Machine Learning by Andrew Ng-CS 229
- Machine Learning course by Caltech Professor Yaser Abu-Mostafa
Important topics are: Supervised Learning (Classification, Regression, SVM, Decision Tree, Random Forests, Logistic Regression, Multi-layer Perceptron, Parameter Estimation, Bayes' Decision Rule), Unsupervised Learning (K-means Clustering, Gaussian Mixture Models), Dimensionality Reduction (PCA).
Now, if you're applying for a more advanced position, there's a high chance that you might be questioned on Deep Learning. In that case, you should be very comfortable with Convolutional Neural Networks (CNNs) and/or (depending upon what you've worked on) Recurrent Neural Networks (RNNs) and their variants. And by being comfortable, you must know what is the fundamental idea behind Deep Learning, how CNNs/RNNs actually worked, what kind of architectures have been proposed and what has been the motivation behind those architectural changes. Now, there's no shortcut for this. Either you understand them or you put enough time to understand them. For CNNs, the recommended resource is Stanford's CS 231N and CS 224N for RNNs. I found this Neural Network class by Hugo Larochelle to be really enlightening too. Refer this for a quick refresher too. Udacity coming to the aid here too. By now, you should have figured out that Udacity is a really important place for an ML practitioner. There are not a lot of places working on Reinforcement Learning (RL) in India and I too am not experienced in RL as of now. So, that's one thing to add to this post sometime in the future.
Getting placed off-campus is a long journey of self-realisation. I realise that this has been another long post and I'm again extremely grateful to you for valuing my thoughts. I hope that this post finds a way of being useful to you and that it helped you in some way to prepare for your next Data Science interview better. If it did, I request you to really think about what I talk about in What we should strive to work for.
You want to have a future where you're expecting things to be better, not one where you're expecting things to be worse.
The article was originally published here