Don't hesitate to take the roads less traveled by

Background

Hi everyone! My name is Sandesh Kumar, and I'm currently a Software Development Engineer at Amazon Web Services. I grew up in Jhansi, a district in Uttar Pradesh, and attended an ICSE board school. My favourite subjects in school were math and computer science, and I spent my free time exploring them.

It wasn't until I was in 10th grade that I learned about engineering and the Indian Institutes of Technology (IITs), but my parents, teachers, and peers encouraged me to start preparing for them. Overall, I'm excited to be working in the field of software development and to continue learning and growing in my career.

My first encounter with programming

I first encountered programming in 10th grade when I took a computer science course that included Java programming. I quickly realized that I had a strong interest in solving puzzles and writing algorithms. I have to give credit to my subject teacher for inspiring me and helping me discover my passion for computers. I ended up achieving a perfect score in the subject, which only fueled my desire to pursue a career in computer science.

After 10th grade, many people discouraged me from taking computer science as my fifth subject, claiming it would be time-consuming and distract me from preparing for the Joint Entrance Exam (JEE). However, I was so passionate about the subject that I decided to follow my heart and pursue it anyway, despite the criticism. I learned C++ programming in 11th and 12th grade, and I'm glad I made the unconventional choice to pursue my interests. I believe that if something excites you, it's worth pursuing, even if it's not the most traditional or straightforward path.

To my surprise, I was able to manage my time effectively and performed well on the JEE advanced exam. The next challenge was deciding which Indian Institute of Technology (IIT) to attend and which branch to pursue. I had the option of going to one of the newer IITs and studying computer science or going to one of the older IITs and potentially compromising on my preferred branch.

That's when I learned about the emerging field of mathematics and scientific computing, which really appealed to me because it combined my love for math with my interest in computers. This was an unconventional choice, and none of my friends, family, or teachers supported my decision to pursue a less popular branch. But I felt drawn to this field and wanted to explore it, so I made the decision to follow my interests.

Starting the Journey of IIT

During my first semester at IIT, I enrolled in a course on the C programming language. Since I had already learned C++, the material covered in this course was just a review for me. I was able to complete the 3-hour labs in less than half an hour, and I excelled in the course. My overall grade point average (GPA) was above average.

People around me started praising my success. However, this confidence led me to make a mistake: I decided to take a course on data structures and algorithms in my third semester, which was actually meant to be taken in the fifth semester. Initially, the course seemed to be going well, but as we delved into more complex algorithms, I realized that I was in over my head.

My overall grade for the semester dropped below 7, and I felt devastated. I lost all of my confidence and couldn't find anyone who would offer me the support I needed. However, I knew I had to bounce back, and not just bounce back, but come back stronger than ever.

Steps that I took to revive myself before the internship interviews

To summarize, here are the steps I took to overcome my struggles in the data structures and algorithms course:

  1. I reviewed the lecture materials, which consisted of only 20 PDFs, each containing 2-3 pages. I am grateful to my professor for presenting the content concisely.
  2. To enhance my understanding of the concepts, I opted for watching animations or visualizations instead of lengthy lectures.
  3. I created my own concise notes, which proved helpful not only during the placement season but also to this day. I still refer back to these notes regularly.
  4. Initially, I focused on solving problems on paper rather than writing out the complete code and running it in the terminal. My aim was to grasp the underlying logic behind the algorithms, rather than just engaging in competitive programming.
  5. I enrolled in courses on machine learning and data science to familiarize myself with emerging technologies.

By following these steps, I was able to rebuild my confidence and restore my belief in myself.

Internship Decision

It was common for students in my program to complete the mathematics and scientific computing course in five years, which included an additional master's degree. However, I didn't want to dedicate an extra year to pursue a master's degree, especially since its potential benefits in the job market were unclear. According to the campus placement policy, I could only apply for internships once, leaving me with two choices:

  1. Follow the conventional path of working on a project with a professor in my third year and then applying for internships in my fourth year.
  2. Complete my degree in four years and apply for internships in my third year.

After careful consideration, I ultimately opted for the second option as I didn't want to invest an entire year solely for a master's degree.

Steps I took to prepare for the Internship

  1. I decided to complete the Data Structures and Algorithms course in the third semester because I believed it would provide me with ample time to practice.
  2. The first company that visited the campus was Microsoft. While I was able to excel in the written tests, I was unprepared for the interviews. I became anxious and struggled to answer the questions within the allotted interview timeframe. I began contemplating numerous possible scenarios for each problem, and ultimately, time got the better of me.
  3. The next company to visit was Amazon, and there was approximately a 20-day gap between the exams of these two companies. I viewed this as an opportunity and focused on enhancing my problem-solving skills. I actively worked on selected problems and revisited concepts of probability and statistics, and my hard work eventually paid off—I was selected for an internship at Amazon.

During my internship period, I gained valuable experience as a full-stack developer, and based on my performance, I received a pre-placement offer from Amazon. I was ecstatic, but there was another twist.

Life after getting placed

While working at Amazon, I realized that having a master's degree could be advantageous in terms of industry hierarchy. I started contemplating the idea of pursuing a master's degree because if I were to do it in the future, it would take two years instead of one. (Converting my bachelor's degree to a master's at IIT would only require an additional year.) However, I had a pre-placement offer that I would have to decline in order to pursue the master's degree.

Once again, my family and friends were against this decision. However, this time it was a difficult choice for me as well. After reviewing my courses, I discovered that if I overloaded my 9th semester, I could complete the master's degree in just one extra semester. I made the decision to go for it. To ensure I was on the safer side, I contacted the Amazon team and requested to join in December. They agreed, and it was one of the most gratifying moments of my life.

With an additional summer at hand, I wanted to explore different areas. Once I started my job, I knew I wouldn't have the opportunity to explore various computer science domains beyond software development. Therefore, I decided to pursue a second internship, this time in the research domain of Machine Learning and Data Science. I had already completed a minor degree in Machine Learning, but securing a research intern position with an average academic performance was challenging.

Through the SFU-IIT MITACS joint program, which had only 10 available seats, I managed to secure a position. I reached out to different professors via email, expressing my dedication to machine learning and the data science domain. I got the chance to work in the field of Human-Computer Interaction (HCI) in Canada, where I gained valuable knowledge and research exposure.

Although I found myself more comfortable in a software development role than in research, I achieved what I set out to accomplish—exposure to research. I was captivated by Data Science and Machine Learning, so I chose my master's project in the Machine Learning and Finance domain. It went exceptionally well, as we developed a new training model with higher accuracy.

After completing my master's degree in nine semesters, I joined Amazon as an SDE-I. Internal transfers were seamless there, and within 7 to 8 months, I transitioned to the Amazon Web Services (AWS) team due to its growing global popularity.

Best Technologies to make a career

Almost every field in computer science is expanding rapidly. However, it is always advisable to explore different fields before making any definitive decisions. Based on my professional experience, if I were to suggest a career in computer science domains, I would recommend the following:

  1. Storage and Computing: Data collection has become an integral part of businesses across all sectors. With such a massive amount of data, the challenge of efficient storage arises. Additionally, performing analysis on this data incurs computational costs. Therefore, optimizing storage and computations will be highly demanded in the future, making it my top choice in this field.
  2. Cybersecurity: As the data collection process continues to grow, it is crucial to utilize that data while ensuring user privacy remains intact. Every year, the number of data leaks and fraud cases is increasing significantly. Thus, data security will pose one of the greatest challenges in the near future, making job opportunities in the cybersecurity field highly rewarding.

Tips and Guidance

  1. Don't dwell too much on what others are doing. Find the reason that motivates you the most to undertake a specific task. Motivation should be divided into different levels, with a larger motivation being fulfilled through the achievement of smaller motivations.
  2. Don't be afraid to choose less conventional paths. It may be challenging at first, but once you become accustomed to it, you will derive the greatest enjoyment from it.
  3. Always create concise notes and revision materials for future reference. You can't remember everything, but revisiting your notes will help you recall the path you have taken.

I want to give the overall message that “Never hesitate to take the roads less traveled by.”

Enjoy Learning! Enjoy Daring! Enjoy Algorithms!

Share Your Insights

☆ 16-week live DSA course
☆ 16-week live ML course
☆ 10-week live DSA course

More from EnjoyAlgorithms

Self-paced Courses and Blogs

Coding Interview

Machine Learning

System Design

Our Newsletter

Subscribe to get well designed content on data structure and algorithms, machine learning, system design, object orientd programming and math.