Journey from remote village to being software engineer at Microsoft

Background

I come from a small, underdeveloped, and conservative village in Karnataka, where educating daughters was questioned as they were expected to focus on household chores and marriage.

However, my parents were brave and unique. They had the dream of sending me to a good college and shielded me from that world, always inspiring me to study hard. They believed that education is a gateway to a better and more empowered world. My journey towards empowerment began when I got admission to Navodaya Vidyalaya for 6th grade.

Journey of Computer Science

After completing my 10th standard from Navodaya, I cleared the Dakshana entrance test and received a scholarship from the Dakshana Foundation, an NGO that provided free JEE coaching to deserving students from rural backgrounds. With this amazing opportunity, I was determined to go to IIT.

Having no interest in pursuing medical studies, I chose computer science (CS) as my fifth subject among the options of biology and CS. To be honest, I thoroughly enjoyed learning C++ and writing code.

Based on my JEE rank, I joined IIT Kanpur as an Electrical Engineering major. IITK offered maximum flexibility and freedom to pursue our passions. Despite the highly competitive environment, it always encouraged us to learn and achieve more. Apart from granting a degree, it transformed us and helped us grow as individuals.

One of the best aspects of IITs is the freedom to explore different departments according to one's time and interests. I opted for courses from the CSE department to pursue my interest in computer science. Trust me, it never ceased to amaze me. I pursued two minors in CSE, one in Machine Learning and another in Computer Systems.

From the beginning, I was certain about pursuing a career in software engineering. During my third-year summer, I secured an internship at Citicorp. My work involved performing Proof-of-Concept (POC), where I had to analyze various technologies and provide a report on the most suitable one for our scenario. However, I realized that I might not have the opportunity to build a new product there. So, I was determined to decline any pre-placement offer (PPO) and started practising competitive coding on weekends during the internship.

As you may guess, I started slowly. I revisited all the concepts of data structures and algorithms one by one and practised coding problems ranging from easy to hard for each concept. Each question I solved felt like an achievement that motivated me to solve more.

This feeling continues even in my current job. Whenever I build a new feature, write an API, or fix a bug, seeing it work gives me a sense of accomplishment and pushes me to do more. After rigorous coding practice, screening tests, and multiple interviews over 6-7 months, I received a job offer from Microsoft.

Technologies to Explore

Numerous technologies are being developed and researched these days. However, ML/AI has always fascinated me, and I enjoy building technologies and products that can make an impact. Full-stack development also interests me. Let's briefly discuss my interests and career prospects in these fields.

Machine Learning: The concept of ML has always amazed me. While machines cannot surpass humans in terms of creativity and innovation, they can analyze massive amounts of data in minutes compared to the months it might take for humans. ML/AI will always hold significance in the modern world where data is multidimensional. In terms of career prospects, to the best of my knowledge:

  • Companies like Microsoft offer specific roles for data scientists that involve data processing and implementation of various ML algorithms.
  • Some companies do not distinguish between software engineers and data scientists, expecting individuals to learn and work effectively in both fields.
  • If you aspire to work in pure ML, which is mostly research-oriented, both types of companies offer research-based roles where you can invent new algorithms and publish papers. However, a minimum requirement for such roles is typically a Ph.D. degree.

Full-Stack Development: As a software engineer, I love coding on front-end technologies, perhaps because I can immediately see the results. In terms of career, especially at the beginning, one is expected to be open to learning and working on both front-end and back-end. However, as you progress, you may choose to specialize in a specific field.

Tips

Based on my journey and experiences, I would like to share the following advice:

  1. Treat your mind like a ghost town, fill it with great ambitions, and feed it with inspirational stories.
  2. Don't forget to add debugging logs. I don't mean just in your code (which you'll do anyway), but in your career journey to track your progress. Keeping track and setting definite goals can motivate and help you achieve things faster.
  3. Never hesitate to seek guidance. You don't have time to explore everything on your own, so leverage processed knowledge to accelerate your learning.
  4. Don't hold back due to a perceived lack of skills or experience. Start a project with a design in mind and begin coding. We learn as we code, and trust me, it becomes easier with continuous learning and practice. The key is to keep learning because new technologies are constantly being developed. I learned entire front-end coding technologies on the job, and my learning journey doesn't end there—I aspire to become a full-stack developer and will continue learning.
  5. Maintain a "never give up" mentality. Always strive for optimal solutions, as this sets you apart from others in the long run.

Recommended References

Here are a few books that I found useful:

  1. Machine Learning — A Probabilistic Perspective: This was the first book I read on ML, and it provides a nice understanding of basic ML concepts from a mathematical perspective.
  2. CLR via C#: I read this book when I started as a developer at Microsoft. It covers the .NET framework, asynchronous programming, and other concepts related to development using C#.

Enjoy Learning! Enjoy Thinking! Enjoy Algorithms!

More from EnjoyAlgorithms

Self-paced Courses and Blogs