The Journey from a Remote Village to IITK to being Software Engineer at Silicon Valley Startup - Pankaj

Background

Hi, I am Pankaj Kumar, a senior software back-end engineer at Isima.io, a hyper-converged data platform. Before moving forward to a life-changing experience in computer science, I would like to start with a personal life story. I am from a remote village named Gopalpur in the Siwan district of Bihar, where I completed primary and secondary education from my village government school.

The education journey started in some unique circumstances. I still remember that there was not even a single classroom in my school. We used to study under the tree in the summer and the winter season. Sometime the school’s headmaster had to request the villagers to provide some space where he can take the classes in the rainy season. Thus, a single teacher used to manage the entire school and teach all grade students together (1st to 5th Grade). However, even we were struggling to find drinkable water on the school premises.

Family’s financial condition was extremely critical, and hence I can not afford to go to JEE coaching classes. Fortunately, after completing secondary education, I came to know about Anand Kumar’s Super 30 program in Patna from a local newspaper. I somehow managed to go there and got selected for the Super30 batch. Anand’s sir unique teaching style always kept me motivated enough to go at any level of hard work. With Anand sir's guidance and consistent practice, I cracked the JEE advanced exam with a good rank. I was thrilled that my dream come true.

I had no prior knowledge of computers, but I was good at Mathematics. So based on the guidance of Super30 seniors, I picked Computer Science and Engineering department at IIT Kanpur as my major.

Motivation For Computer Science

After joining college, I was trying my hands on the computer for the first time in my life. However, there was always a pressure on whether I will be able to perform better as the grades were relative. Some of my batchmates were already 2-3 years ahead of me in terms of programming knowledge.

I got introduced to Computer Science first time with the introductory programming course in C language. In the initial days, I was struggling to understand how loops work? How iteration happens, and how do we fill 2D arrays? It was tough for me to visualize the memory allocations. But at the same time, I found it fascinating that this small box of computers helps us solve several real-life challenges. So I never got demotivated and kept fighting with the concepts so that my learning become firm and practical.

Steps that changed my life as a programmer

I want to summarise these steps point-wise:

  • Having a well-defined goal is always beneficial in the journey of learning. So I always kept track of my computer science ideas and tried to improve day by day.
  • Sometimes Data structures and Algorithms looks like an Ocean, but when we try to think of it like a concept used to store the data, learning data structure and algorithms becomes interesting. So I started learning 7–8 most used data structures in computer programming. Knowing what exactly I need to learn helped to relieve the pressure.
  • I always tried to find similarities in the concepts so that I don’t need to understand everything from scratch. So, for example, if we know the trees and want to learn graphs, we can see graphs as trees where cycles can be present. It’s like framework-type thinking.
  • I gave priority to the basic mathematical understanding behind algorithms rather than knowing advanced approaches and solving complex problems.
  • There were only 10 Labs in the entire semester course, and hence it was obvious that the pace of learning would be higher there. But I took these labs very seriously because it was the best way of learning by doing. 
  • I preferred to solve coding questions on paper first and then implement the correct code.
  • I started using debuggers and tried to understand what exactly it prints. (e.g. IntelliJ for Java). It gave me a track of values for every variable in my code, which helped me immensely.
  • I always gave priority to hands-on projects over theoretical understanding. For example, to understand full-stack development, I designed an E-Banking system with all the basic functionalities like authentication mechanism, money transfer from one account to another account, auto-debit, etc. (Obviously, all the money was virtual). Thus, I made the UI almost similar to what SBI was providing at that time. 
  • Similarly, to understand Django, I designed a job searching portal using MySQL database. To understand the complete process of program execution, I designed a compiler that supported basic functionalities of addition and multiplication.
  • Internship: In my third year’s summers, I got a decent internship opportunity with one of the most popular startups of that time, Quikr. It was a goods company where I built a system to find the trending product of that time with the help of elastic search and other tools.

Experience of Placement Session

I was not good at communication skills which affected my placement as well. I was able to clear most of the aptitude and programming rounds but could not make it in interviews. But being privileged as a Computer Science Engineer from one of the best institutes, a Bombay-based firm offered a Data Analyst position. Believe me, I was not satisfied with my performance and decided to build a career in backend development. So I decided not to join the firm. This was not an easy decision as I was under the pressure of my family’s financial condition. But still! I left the offer and started preparing for off-campus placements.

Profession Experience

After completing graduation, I joined AlgonoX, a Hyderabad-based firm, where I built an internal employee management system. After that, I switched to a B2B e-commerce firm MedleyMed where I worked as a Django developer. But fulfill my aspirations, after few months, I joined Fortanix, a cloud security firm, where I learned a lot as I managed their clients directly. I worked there for two long years.

Best Technologies to explore

Currently, I am working in the field of Backend development for Data Management. There are multiple technologies in which research and development works are happening every day. Hence, it is always necessary to explore the areas before starting a career around them. Moreover, it is always advisable to sense the future of that area in the coming ten years. Therefore, if I have to pin-point 3 of them, my suggestions would be:

  • Data Management: Every company collects data to improve its business growth, and managing data is always a critical focus area. So data scientists and data analysts are some of the best roles to start a dream career in computer science.
  • Cryptography: Crypto is a susceptible area that people will use only when it is open source. According to me, this area will grow a lot in the near future. This is one of the best fields to learn problem-solving using technology. 
  • Machine Learning and Artificial Intelligence: Industries in almost every domain have started exploring AI and ML to solve some of the most challenging problems that remained unsolved. Hence, I believe this is one of the most promising to build a successful career.

Tips for planning career in computer science

There are some standard practices which I would like to emphasise:

  • There is no harm in getting slow and do prior research before starting anything. If you would like to start something, try to learn it with end to end approach.
  • To learn tools, go through their official documentation and see how exactly they have implemented it.
  • I always prefer hands-on as it will always boost your experience.
  • Don’t run for multiple resources; instead, stick to the best one.
  • Think of solutions to problems as frameworks and try to find patterns so that you become familiar with the next set of problems.

In summary, I would like to say that: Hard work and continuous learning is always the key to success.

Enjoy Learning. Enjoy Thinking. Enjoy Algorithms!

We welcome your comments

Subscribe Our Newsletter

Get well-designed application and interview centirc content on ds-algorithms, machine learning, system design and oops. Content will be delivered weekly.

More from EnjoyAlgorithms