Since a young age, I have been interested in solving problems and thinking deeply, reading from more than one book per subject and not sticking to the main coursebook, reading more and more about the subjects that fascinated me, and being curious about them and keen to explore as much as I can. The subjects that interested me particularly were mathematics and physics, though I developed a deep interest in electronics, circuits, computer science and systems, chemistry and economics later in college.
I had decided before entering IIT that:
Whatever I would pursue, I would pursue it at the highest level.
I would want to do something that would make me happy, I would love doing it, I would be good at it, and it would be lucrative (in a nutshell, it is the Japanese concept of ikigai).
I had been reading articles on many places, notably on the website https://80000hours.org/, which has very insightful stuff related to career advice and related things.
Discovering your career path is not as simple as it sounds, you have to experiment, sacrifice, risk, hit and try a lot. This is coming from me after throwing away three of my best years, around eight lakh rupees, and most importantly, the prospect of getting a fat paycheck and a secure life at an earlier age. But the happy thing is that I didn't return empty handed, and found it at last.
I explored many things - competitive coding, web development, and courses related to the areas I mentioned. Some things I liked, some I didn't. Moreover, I had applied for a research internship as well. The reasons and procedure is given here.
Many of the courses I had explored at college didn't pique my interest, probably because the content was very disorganized or poorly planned. Moreover, I had a really, really disastrous fourth semester, having overloaded my semester way beyond my capacity, and it backfired terribly. I began doubting my capacity and decision-making skills as well, for I had taken some electives and and had to withdraw from them because of not being able to manage them and scoring poorly in them. Took courses with third years, and club posts only to return empty-handed.
I then thought that I was taking things lightly and didn't know what research was - just seeing the broad picture and framing a naive picture based on pre-college things - which was too silly of me.
All this combined shook me to the core, and I badly needed a break. I went to Singapore for my research internship, as a much-needed relief. I became really unclear about my plans, as I had a peripheral know-how about both career fields, I hadn't really explored the flavours of both research and corporate, in depth.
Coming to Singapore, I was in a really confused, scattered and baffled state of mind. Everything that I was doing was going flop, and I was unable to decide what to do. I talked to my parents and 1-2 trusted seniors whom I used to talk to regarding anything, any issue or problem, any decision or step.
I eventually decided that as I had to explore, decide on my career field, and make a decision over two months, I would be doing this:
When I would be in the research lab in the university there, I would be working on the research project.
Off the university (at the accommodation), I would be practicing CP, DSA and quant puzzles, to prepare for the upcoming intern season.
This happened for about two weeks, and everything was going smoothly. I was doing questions on LeetCode, InterviewBit, Brainstellar, and at the same time, I was giving enough time to the research intern. Probably the main reason was that as I had started both the things and both were light and in the initial phases, I was liking both.
Two weeks later, our professor had to go out of the country for a research conference for about two weeks, and he gave us research papers to read along with some other texts, and a software to learn to use for the further project.
At this time, what was happening that the problems on LeetCode were getting more monotonous, harder (in terms of coding and implementation and not thinking) and boring, and seemed heavy. And I enjoyed reading research papers and exploring new concepts and areas in the field. As I had to give time to both, doing both things was getting harder, especially along with leisure time and exploring the country. I felt that I had to push myself to solve LeetCode problems, and I was unable to think and concentrate on them for a long time during long, bigger problems, while at the same time, I was able to understand 10-15 page long research papers in 2-3 readings (it took me about 2 days to read and understand a paper, and I enjoyed it).
Eventually, I decided that I liked research, and whatever was cooking inside me about a month ago after the semester results, was just crap and BS. One semester couldn't define me and hinder my abilities and passion, for form is temporary but class is permanent. I started hating LeetCode, and though I liked quantitative finance, I didn't want to go for a quant job (even though they pay really high), because of the long work hours and the toxic work culture.
So I stopped doing corporate intern prep and focussed entirely on research intern. And I was so relieved and happy.
I learnt a lot during the internship, explored how a research lab works, and got real flavours of both research and corporate prep, the tasks that have to be done in companies and the questions the companies ask usually in their tests.
I ultimately made up my mind and sat out of the OCS internship season - a bold and unconventional thing to do, for only 8 people in my year did so, out of the 1000 eligible from my year, enrolled in four-year BTech programmes and in their penultimate years. And I knew two of them apart from me - who were with me in Singapore and wanted to pursue research.
I was so relieved to be out of the rat race and enjoying my passion, along with the great feeling of following my heart. What I was doing, at least had a reason and was backed by what I did in the last two months, and I had found my calling finally.
Now that I wanted to pursue research, the main question was in which field? I mainly wanted to explore a logical and theory-backed applied field, which had a great scope, and low emphasis on blatant experiments and high emphasis on skills and concept application.
Taking a few CS course has been a rite of passage for most EE students, and I followed suit. I had planned to do a minor in CS, like most of my friends in the department. In fact, some EE students are actually CS course lovers and EE course haters. Some are CS haters and EE lovers. I was neither. And that was the problem.
I explored circuits, signals and processing, control theory, discrete maths, algorithms (broadly, theoretical computer science) through the courses I took in the two years, and communication and mobile computing as a part of my research internship. These were the areas that fascinated me and piqued my interest. But there were some areas that I had to explore, like computer architecture and embedded systems, power electronics, analog electronics and signals, and AI/ML as well. Luckily I had relevant courses in the fifth semester related to these areas.
I studied them and, fortunately, made some selections and rejections. With the help of 1-2 seniors whom I used to talk to, who also wanted to go for research.
I decided to stay away from AI/ML, because not only I found it less interesting as compared to the other areas, but also, it had a lot of crowd and competition. It would take me a lot of time and effort to make an impact and stand out, and it would be really stressful to keep at pace with the rapidly changing field. Above all, it was very boring and monotonous to work in a highly empirical field with less intuition and theory-driven work. Just doing experiments and plotting graphs.
Theoretical Computer Science and pure math were fun, but it required a great amount of effort and the results proved were really insignificant compared to the effort put in. Moreover, I wanted to build a high paying career at sometime, which was not possible in case of theoretical and pure fields. It is great as a side-research topic and a hobby, though.
Communication systems and signal processing was also fun and interesting in the beginning, but it became too mathematical and mundane in the later stages, and there was not much scope for exploration and diversification.
I explored computer architecture, and found it fun and ever-evolving. It was not too mathematical, had a perfect balance of theory and mathematics. I had a course, and enjoyed it.
Analog electronics and circuits, and VLSI design was also fun, and I enjoyed that area as well - circuits were something that came to me naturally since JEE days, and I enjoyed solving and designing complex circuits. Moreover, VLSI is a vast field, has a lot of room for exploration, and it spanned and intersected with other areas as well- like the economics of systems, physics of semiconductors, electrical engineering and modelling of ICs, and chemistry of materials in systems, and so on. It was lucrative as well, and evergreen, for you would need a computer to do computer science.
So, the two areas that really interested and intrigued me to explore deeper were VLSI and semiconductor devices, analog electronics and integrated circuits, as well as computer architecture and embedded systems. It eventually boiled down to these two areas, eliminating the rest. When you have too many choices, play by elimination rather than selection. That is what I just did.
I had very few core courses left in my degree and huge room for electives. Moreover, I got my credits extended and had an option to audit courses, so I decided to take graduate-level (700-800 numbered) courses related to both areas I mentioned. I took these courses:
Synthesis of Digital Systems
Analog (active and passive) filter design
I enjoyed both the courses and got a real flavour of both the areas, exploring them in depth. Got top grades in them as well.
But the thing is that I didn't know what to choose between them for a career.
In March, I talked to the professor who taught us the digital systems course for a project in the summer, and he signed me up, given that my performance in the midsem was quite good as per his standards. My work was about NVM cache management, along with a little bit of computer architecture. Moreover, the team and the work culture was also quite good, and I was enjoying my time there. There were regular social events and small parties, and I had also got a friend circle.
I had enjoyed memories and architecture till now, and I was happy with my project, and given the research papers, I read them in about 15 days - though slow as per my assumption and expectation, it was alright for someone who had just began his research career. Now my work was to guess and propose policies, and then try and test them using the simulation software. I was on track till then.
But reality started catching up with me as the work progressed. As we kept on testing policies on the simulator, I realized two things:
The nature of my work (actually, the research field) was highly empirical, with little room for logic and theory application.
My work was actually to implement the policies proposed by the PhD student who was guiding me, and suggest minor tweaks and corrections.
It is just like the house is designed by the architect, the parts and building material are given to you. You just have to follow the plan and build the house, effectively doing a mason's job.
Bulk of the research work was about experiments and blatant trying and shooting arrows in the dark in all possible directions, till you heard the noise of the target being hit. You can hit the target on the first try, or on the last try. There is a lot of chance. You don't know when your chance will come. It is like a lottery ticket. You just can't decide where to hit the arrow first, how to proceed. Just keep on covering all possible directions.
The thing was that every policy had to be implemented and tested on a large dataset of processes and tasks which would utilize cache and memory in different ways.
NVM cache management is like maintaining a small, curated bookshelf in a vast library. The limited shelf space must be reserved for the most frequently requested books—those that will likely be needed again soon. Each time a new book arrives, an existing one must be removed. The decision of which book to discard is not arbitrary; it is determined by patterns of access and relevance. The less requested titles are moved back to slower storage, where retrieval takes longer but space is abundant.
The bookshelves are low hanging and good-looking, but they wear down faster as well. Happens with premium quality and expensive products. They require careful management, ensuring that the load is spread across the collection to prevent premature degradation. When a transaction occurs, the record of that exchange may be written immediately, or delayed in favor of efficiency, with the understanding that there is a trade-off in consistency.
You have to manage the shelves, keep on checking which category of books are coming, which ones are commonly taken and accordingly modify the strategy. No size would fit all, and you have to make peace with it.
What I was doing was pure laborious coding and implementation, with very little thinking and original research, which I had intended to do. Throughout the summer, what I had learnt new was very little - a few things here and there about NVM caches and their drawbacks, and editing some lines in the code of a simulation software called gem5 which was used for the purpose. This was contrary to the intern I did the previous summer - though the research work didn't progress much (probably because I was in a trial and test phase in terms of career) but at least I had learnt some significant stuff related to signal processing, coding theory, communication systems and devices.
This is the norm for most CS professors at IIT Delhi (except theory group), they are good theoreticians and that is where the facade ends. They make their PhD and MS(R) students do original thinking, make BTech and some MTech students implement them and work with huge code (themselves being bad at implementation and finer details), question their work and ideas and bind and build upon them, effectively playing the role of a manager, rather a boss.
Professors are mostly nice to you, but again, that's the facade. They encourage you in your work only when you fit into their POV and make them happy and satisfied. Otherwise, you would be shown the door, and the same professor who was nice and friendly to you, backing you yesterday, would ignore and be cold to you the next day.
The new semester just started when the professor asked me to submit the progress report. I was thinking to quit the research group, but was finding it hard to do so, having made a good number of friends there. Moreover, I had found cool projects in the area of analog electronics and semiconductor devices. And in EE, there is no room for such stuff in most cases, because the work almost entirely lies in the domain of circuit building and theoretical testing and simulation. Only after that we have to do some experiments. Big room for analysis and theory application. On top of that, I had only one year left in college, and I wanted to do some cool stuff that made me happy and satisfied, having been tired of exploration and hit-and-trial. I badly wanted to do some concrete and groundbreaking work in an interesting, logical and theory-backed applied field, something that made me happy.
Submitting the progress report, I got a reply mail from the professor clearly stating that he was unsatisfied with my work, and he clearly showed me the door. I wanted to exit, but was unable to find the door which I found at last. He was expecting me to have implemented some strategies in detail, which I had done very little and mainly, I had come up with policies and techniques, grounded by some thorough analysis as well (which would definitely not work in this highly empirical area). Though I had made progress in my research work, but it was on the theoretical side and I didn't match the professor's expectations and his POV about research. Again, theoretical analysis doesn't work in a highly empirical field like this.
This was the final nail in the coffin for my CS journey, and I could clearly discover that EE is the thing for me. CS looked cool and interesting initially, but diving deeper, I found it entirely different. It is a great hobby to code and build software-related stuff and read more about embedded systems, but not for full-time research. Again, CS is a good aid for EE in many cases - they have a link of course.
CS is a great field, but it's not for me. I don't have the intuition and patience to do innumerable experiments and try shooting arrows in the darkness without any strategy and waiting for the target to click one day. But in the end, I was happy, having been given the opportunity to try.
My final piece of advice is that everyone from a circuital non-CS field should try out CS courses and domains, for it contains some really cool stuff, and CS is an ever-growing field. Who knows, you would fall in love with it and it would become your bread and butter. However, this is the time when I should draw the curtains on my CS research and exploration journey.
Time to dive into the world of circuits.
(The writer is a senior at IIT Delhi, in the Department of Electrical Engineering)