From Day 0 to getting a Pre-Placement Offer at Microsoft IDC

In this article, I’ll explain the strategy I followed to make sure that I was able to put in my best effort during my internship, and how that consequently enabled me to get a pre-placement offer.

Rohan Krishna Ullas
Level Up Coding

--

Photo by Matthew Manuel on Unsplash

In August 2020, I got the result that I was selected for an internship as a software developer intern at Microsoft for the summer of 2021. After spending a few days rejoicing at this wonderful opportunity, I set to work. I knew that I would need to improve my technical and behavioral skills before I started as an intern. Luckily for me, the ongoing pandemic led to flexible class hours and assignments dates, this allowed me to devote considerable time to my own study track.

I’ll split this article into 2 parts — in the first part I’ll explain my preparation strategy before the internship, and in the second part, I’ll cover my suggestions on how to ace your internship.

PART 1: My Preparation Strategy

Firstly, I analyzed all the tech skills I lacked and made a plan to learn them. I realized that I wasn’t very proficient with git, vscode features(knowing and being able to use your text editor/IDE’s features is a great skill to have), debugging skills, system design( both high level and low level), cloud computing essentials, and others.

I analyzed the skills I definitely needed to have before starting my internship by reading and getting to know more about the responsibilities that would be given to an intern/junior software developer. Reading articles on internship experiences helped me to learn more about this, and I hope that this article, in turn, helps out somebody✌.

I recommend searching for internship journey articles on Medium and videos on the same from Youtube. This video on acing your internship by Rachit Jain is gold✨

Up until then, I was mostly focused on building my problem-solving skills and learning CS fundamentals and had only done a few ML-related projects(nowhere near ready to be deployed). So, I focused on learning these skills while working on building some cool new projects. Fixing bugs allowed me to be better at debugging, pushing code to Github and making PRs allowed to learn git, and … you get the idea. I focused on completing each project while trying to ensure that I’m following the best practices and giving importance to aspects like security, scalability, reusability, etc. Of course, making sure of all this meant more time to read and implement these concepts, along with more bugs to fix.

However, this is what I wanted to experience in fact, getting stuck and feeling clueless is something you should expect to happen often initially, and I wanted to get used to that notion, and then, instead of feeling frustrated and tired(as I used to before), think calmly and come up with a strategic fix for the problem.

In fact, I think that being able to identify and access the root cause of the bug/issue, and to think strategically on how to fix it, without obsessing over it, is way more productive than staring at the screen trying random approaches for 5 hours straight.

Another thing I focused on was to be flexible enough to learn whatever tech stack I get to work on during my internship. While we all may have some language or tech stack that we really love and are great at, it's not often the case that you always get assigned similar work. Hence, I tried to do projects across different domains using different tech stacks, even though this required more time and had a higher learning curve, the excitement of learning and building something you didn’t know how to build before is worth all the work and effort I feel.

During my internship, I worked on a web development project using Typescript, React, and GraphQL. I totally freaked out at first, since I was a beginner in web development and a complete noob to Javascript.

Great! How in the heck am I supposed to work on my project when I didn't even know the basics of Javascript, I thought.

I was given around 2 weeks to ramp up on the tech stack and provided with the necessary materials to study from. My mentor and manager were really supportive and encouraging, so this coupled with a flexible growth mindset enabled me to complete the learnings and get started within sufficient time.

While being technically proficient to do your job is important, being a proper fit for the company culture is also equally important. In general, almost all software companies follow similar conventions as to how to behave with compassion and empathy. While passing the HR interview meant that I would potentially be able to fit into the culture well, I wanted to make sure that I would be able to sync well with my team and not have any unknown bias within myself that I didn't know about.

Up until then, all of the projects I worked on were individual efforts, and I had never worked as a part of a team to build a product. One of the disadvantages to this was that I never had to discuss with anyone else about each design/technical decision I took. So, when an opportunity for a hackathon came up, I quickly called some of my friends and formed a team to get started.

This venture allowed me to learn a lot about how to work as a team. I realized when to speak up and when to listen. I realized that to make the best decision, it's important to listen to the whole team’s viewpoints and ideas, and to collectively figure out shortcomings if any.

PART 2: How to Ace your internship

Ok fine, enough with me, now I’ll summarize some points that I feel are important to convert your internship to a Full-Time Offer.

Photo by SpaceX on Unsplash

1. Be willing to go the extra mile

You must be willing to take ownership of your project and give your best to deliver the best user experience. While it’s important to work hard, make sure that you can deliver results. You should always try to keep your manager and mentor in the loop of the work you’re doing and of the progress you’re making. Keeping a schedule of project milestones sorted by priority and regularly checking up on them helps a lot. I personally like to take notes of work to complete in my notebook, but you can use any other productivity tool you find comfortable.

2. Don’t be afraid to ask for help

Your manager and team want to help you succeed and hence never hesitate to ask them for help if you get stuck. However, always make sure that you have done your research and tried to fix the issue beforehand( if they always fix your problems for you, then how will you learn?). Try to frame your questions in this format if applicable to your situation.

“ I am trying to do X, but facing issue Y, I tried to use Z approach to solve it but it didn’t work. I think A/B/C might be the cause of this. Could you help me out here? “

This shows that you’ve put in the effort and tried to solve it yourself.

3. Be willing to learn more and do more

This might be the most important point of them all. Always be enthusiastic to learn more and do more. Hey, you’re working with professional software engineers, so use this chance to learn from their years of experience and wisdom. During my internship, I must have asked a gazillion questions from multitudes of domains( related to work ofc ;) ) to my mentor and manager. Sometimes project requirements change after you start working on it, and while it can mean more hours of work, if it makes a difference then make sure you go for it since this allows you to deliver a better result. Make sure you don’t stick only to technical learnings, try to get a good understanding of company policies, organization structure, etc.

4. Be ready to help others

Be humble and helpful to others.

When I joined, all interns formed a discord group to discuss and solve any non-project related issues they faced, ranging from how to restart your assigned VM to how to write project documents. The entire community was super helpful and constantly supported each other.

Imbibing this nature within yourself is important since this allows you to be more accessible, easier to work with, and overall, a better team player.

5. Engage in meetings and give your feedback

It's very common to feel imposter syndrome and feel out of place when you start your first development job, all your teammates will be working on super-advanced stuff, and in meetings, you're most likely to be dumbstruck about what they're talking about. If you don't feel so, then great, else if you do, don't worry it's common and all part of the learning curve. This feeling consequently causes you to stay quiet during meetings fearing that you'll say some dumb thing and everyone will think less of you.

Nope. They won't. In fact, they know that you are new to all this and that you don’t probably don’t know these things. However, your interest to learn and ask questions will be highly appreciated. So, try to engage in meetings and if time permits ask questions about stuff you got confused with when they were explaining/presenting. If time doesn't permit, then he/she will most likely ask you to sync up after the call so that he/she can explain. Sounds too good to be true? Well, it's real.

Well, this sums up some points that I think are essential to perform well in your internship. I hope this proves useful to you and makes a difference😄

Feel free to reach out to me on LinkedIn.

Till then, Plus Ultra!!

--

--

Caught in an endless loop of building and breaking stuff 😄 SDE-1 @ Microsoft