This week is my first week working as a data scientist intern at the Microsoft Bellevue office, Washington; typing this out still feels unreal. At the beginning of the week, I shared on social media about the new role and I decided to share my journey via this article.
In this article, I will be sharing a broken-down summary of the process leading up to this. I will also be sharing tips that were helpful to me and some final recommendations as well.
How it began:
As I shared in this article, I moved to the United States of America in August 2021 to begin my Master’s program in Computer Science at the University of Denver, Colorado. I had my first school quarter (a.k.a semester for most schools) from September to November 2021 and it was not very easy for me. I was adjusting to the new educational system, trying to maintain excellent grades, define my research project, carry out my teaching assistantship duties, make new friends and adapt to living in a new country with a different culture, climate, timezone, etc. I’ll call this the quarter I used to find my balance in the new system.
By thanksgiving, which is at the end of November, I was done with my first quarter of school, aced my grades, and began my holiday. This was when I officially began the internship search journey. In retrospect, this seemed a bit late, but I will give myself some grace because I had just moved across continents and needed to properly adjust to my new environment. In total, the entire journey for me took a little over three months, as I began the application process by the end of November and signed my offer by mid-March.
Here’s a timeline of my application process:
- November 2021:
- Looked through job postings, and identified potential roles, companies, and skills listed in the job descriptions.
- Spoke to friends and people in my network that work in roles similar to what I was aiming for.
- Identified what skills, as listed in the job descriptions, I was lacking or needed to improve on.
- Found resources to bridge the gap in the skills required.
- Reached out to people in my network and asked for referrals for roles in the companies they work at.
- December 2021:
- January 2022:
- Applied to more jobs, and took more coding tests and challenges.
- Had mock interview sessions to help prepare me for my interviews.
- Landed interviews at three companies, including my first round (technical) interview with Microsoft.
- February 2022:
- Applied to yet again more jobs.
- Landed interviews with four other companies.
- Had final rounds of interviews with some companies I applied to in January.
- Revamped my resume and had more mock interview sessions.
- Had my final round interview with Microsoft.
- March 2022:
- Got offers from two companies.
- Accepted the offer from Microsoft.
- Got two more interview invites but had to withdraw as I had already signed my offer.
12 tips that helped me in landing a data science internship
Here are some things I did that helped me from the application stage to increasing my call-back rate, getting interviews, and finally, receiving multiple offers from multinational tech companies.
- Speak to people in your network: Speaking to people was very helpful for me in defining what I should look out for in job postings, what I should focus on while applying and interviewing, and also getting referrals to companies. It is advised that you build your network before you actually need it; however, I do not believe that you should build relationships with people for what you think you can gain from them. I believe relationships should be mutual and could be based on shared interests or journeys. This way, you are looking for how to be of help and add value to them, as they could to you too.
When I was ready to begin applying for roles, I reached out to people that I knew. Some were from way back, like, the secondary school I attended, others were from social media, and some I had built friendships with. One good way to build and also find out who you could reach out to from your network is LinkedIn. On LinkedIn, you can search your connections for people that have worked in a particular role by the job title or in a specific company.
- Decide on your desired role and ideal companies: Go through job postings on different job boards and look at possible roles at various companies that you could apply for. Not only is the title of the role important, but also are the expectations. This can be found in the job description. You should match these against your current skills as well as your immediate, short term and long-term career goals.
Highlight companies that you like, based on whether they have the role you desire or are solving a problem you’re passionate about, or are just your dream company for some other reason. To not miss out on new openings, you can sign up for job alerts on their career websites, check your network for anyone that has experienced working with them, or reach out to their recruiters. This leads us to the next tip.
- Connect with recruiters: This is not popularly stated but it is something you can do as well. Recruiters are paid to get the right talent to work for an organization. As a candidate, you can use LinkedIn to reach out to recruiters, putting yourself out there for possible roles. Be sure to send personalized messages to each of them, outlining why you are a great candidate for their company and your desired role. Personally, I didn’t use LinkedIn premium and I sent short notes with my connection requests, but I understand that LinkedIn premium is more effective to reach out to people that are not in your direct network and is a good investment if you can.
- Look at some job descriptions and sample resumes: After deciding on the role you’d like to apply for and studying some job descriptions, it helps to look at sample resumes for that role or that match the job description. You are not meant to blindly copy someone’s resume but it could serve as a guide for you to refine your resume properly, knowing which of your skills and experience to highlight as needed.
- Brush up on your resume: Using the sample job descriptions and resumes, it’s a good step to brush up your resume, highlighting the relevant skills and experiences you have, new technologies you’ve applied, and responsibilities you’ve carried over the years.
Resumes are short summaries of your experience and skills. It’s good practice to keep it to one page, especially if you have less than three years of work experience. Major sections to include are education, work experience, skills and technologies, personal projects, and accomplishments. Links such as your LinkedIn, GitHub profile, and portfolio should be hyperlinked and clickable. Your resume should always be submitted as a pdf file or a view-only Google Doc. If you don’t have work experience yet as a student, your personal and class projects could also serve as a means of showcasing your skills and experience working with the relevant technologies.
It is also encouraged to tailor your resume to each job application because some of your skills and experience are not directly relevant to some roles, so you take them out and include the most relevant. Personally, I didn’t do this much. My resume was pretty much the same throughout with my most relevant information, my LinkedIn carries all of my experience and skills, while I carefully tailored my cover letters to the different roles. It helps to have a few people review your resume. You could ask senior colleagues, mentors, or a more advanced friend in your field, or hire the services of professional CV reviewers. If you use a template or hire a professional CV reviewer, make sure to go through and proofread the resume afterward to ensure that all the information on there is valid and accurate, that it is not generic and your personality is not lost.
- Personal projects: This takes some time and ideally should be done over the years from when you learn new technologies, apply new methods, and generally work on building your skills. However, when planning to apply for roles, it is important to finish up these personal projects, collate them neatly, and publish them to a public platform like GitHub, Kaggle, Tableau Public, a personal portfolio site, etc, with proper documentation.
- Data structures and algorithms: I know that there’s a misconception that most data scientists only have to clean data, do analysis and build models. However, it is also important for a data scientist working on products to have good programming skills; and one way that this is assessed currently is by testing how you use data structures and algorithms to solve problems. Data structures and algorithms entail using the right tools to write the most efficient program or being aware of whatever limitations of the tools you choose to use. I believe this is a skill that is learned by studying and built by practicing constantly. It does not make sense to cram questions and solutions because details could be switched up, but I have noticed that these questions follow patterns. You could focus on learning the different patterns and possible solutions for each, being able to correctly identify what each problem is really asking, and using the right data structures and algorithms to provide an optimal solution.
To improve my data structures and algorithms skills, I first took a Data structures algorithm in Python course on Udemy to build the right foundation, then kept practicing on LeetCode. This could seem boring or routine, so you could make it more fun by getting a practice partner, or setting little goals and rewarding yourself after meeting them. While practicing, although it might seem easier and more satisfying to keep doing the same or similar questions over and over again, it is more helpful to practice a diverse range of problems; making sure to cover the popular data structures like arrays, hash maps, etc., the less common ones like max heaps, as well as algorithms such as binary search tree, dynamic programming, etc. This process is similar to building muscle. You start with easy weights and gradually work your way up the difficulty and complexity ladder. I also used GeeksforGeeks to get cheat sheets and see sample problems.
- Apply to roles: At this point, you’re probably feeling like this is a lot of prep to do that is not even sending in applications. Well, I agree that it is a lot, but I think it helps you in the process. Now, to apply for roles, you could check the popular job boards like LinkedIn, Glassdoor, Google Careers, Handshake, and Indeed. There are some scam job postings so don’t let anyone pressure you to give out unnecessary private information or send money to an account. I also kept a spreadsheet of all roles I applied to with links so I could follow up properly. Here is a link to a few rows of my tracking sheet.
While applying, try to concentrate and give the right responses to any questions asked, going into as much detail as necessary. Also, I know that there are multiple varying opinions about this, but I will attach a cover letter if asked, even if it is not mandatory. I believe it is a simple way to communicate, to the hiring manager, my skills, experience, values, and personality that might have gotten lost in the brevity of my resume.
- Practice interviews: Having mock interviews was a game-changer for me. First, it helped me notice areas where I was rusty, it also helped me improve my confidence and gave me clarity. I always tried to simulate the real-life setting as much as I could. I had three mock interviews, one covered technical questions, one was behavioral, and the final covered the entire interview process.
I highly recommend trying out Tech Chat with Uduak which could cover mock interview sessions, help in getting started in your career, resume review, negotiating a good salary, tips to secure a remote job, etc. You can also simulate a live coding interview process by practicing on sites like HackerRank, LeetCode, StrataScratch, and QuantHub for Python, SQL, and Probability interview questions, and giving yourself strict time limits.
- Get feedback and apply feedback: From my mock interviews, I got feedback to always challenge assumptions and think of edge cases. I also picked up the recommendation of looking directly at my interviewers while speaking, even when I had to think and speak at the same time. These are some of the feedback I got while I went through the process and I tried to implement whatever new information I learned, technically or behavior-wise, and approached my next interview as a better candidate.
If you have applied to many jobs and have not gotten any callbacks, the problem could be your resume or portfolio. It may seem that you are not adequately representing your skills, education, and experience, or effectively pitching to the hiring manager or recruiter how you fit the role and why they should reach out to you. This is probably why you are not yet getting to the interview stage. If you get callbacks to interviews but are not able to go to the next stage afterward, it could be that you’re not interviewing right and that is where you should really focus on improving yourself. I must add that these are just one of many possible reasons for both cases. Hiring decisions are very chancy sometimes, so you should keep this in mind as well.
- Go the extra mile: When I had my first round of interviews at Microsoft, there was a thirty-minute technical interview where I had to implement a binary search. I was able to get it done but there was an edge case I was missing and I discussed this with my interviewer. After the interview, I found a way to implement the optimal solution, and I uploaded it to my GitHub and sent the link to my interviewer via email. Although one might think that this is not necessary and it’s easier to just give up after a tough interview, I believe that going the extra mile even when things might seem bleak or not going the way you expected could actually make a positive change in the final results. Another habit I tried to maintain was sending a thank you email to the interviewers, recruiter, or the scheduling team after each round of interviews I had. Gratitude is a very good habit to have, not only while interviewing but generally in life. Even though it might be their job or their responsibility normally, it helps to appreciate them for having the conversation with you.
- Take breaks if discouraged or unmotivated: Whenever I got dejected, I spoke to my loved ones who cheered me up, or sometimes I just took a break for some days or even a week, so that I could feel better and give it my all again. It’s okay if you are tired, it’s okay if you feel distressed or sad; remember to give yourself grace, take breaks if you can, analyze what you can improve on, and maybe switch up your strategy. For me, it felt like a marathon, not a sprint, so I paced myself and tried to manage burnout.
Writing about this was easier than experiencing it. I also faced rejections, no responses, ghosting, and bad interview experiences during the journey. Sometimes, I would get so frustrated and tired, and I would feel like giving up – yes, I played with the idea a few times in my head.
However, I didn’t want that to be my story. I wanted to try as hard as I could until the end, and then if nothing still worked out then, at least I’ll know that I tried and I gave my best. Thankfully, it all worked out well in the end and I hope it will work out the same for you too.
Thank you for reading my article; I hope it is helpful to you or someone else who might be going through or about to begin this process right now. I am looking forward to any questions or comments you might have – you can ask me directly on a Twitter space I’ll be co-hosting with Uduak on Saturday, June 18, 2022. I’ll be happy to help in whatever way I can.
Here is the link to the Twitter Space. Please make plans to join and set a reminder too. It is scheduled for 6.00 pm WAT (10.00 am PST) this Saturday.
Thank you for reading.
- Study notes I used to ace my data science interviews and a downloadable version on GitHub.