From Failed Pre-med to Software Engineer
We're going to start with the ending to this story, and I'll fill in the details as we continue down the page. I've "professionally" been a full time software engineer since the summer of 2017. In that time, I've worked across: the largest custodial bank in the world; a robotics company that has been trying to automate material movement; a large multi-billion dollar software corporation; and a financial technology company. After the robotics firm I also started moonlighting as part time instructor for a software developer bootcamp. So how did I get here?
I grew up playing games, real life, make believe, flash games on the internet, a whole lot of classic Runescape, and a good amount of time with some of the best consoles (Gamecube, Nintendo 64, Playstation 2, and the Gameboy Advance). I'd love to say all those games inspired me to want to pursue a career in technology. Unfortunately, that's not how the story starts. My journey into technology begins with faith. Now the specifics of how faith was intermixed in my life is a whole different story I'll write later, but for now we'll focus on the premise that faith is something that was present in my life and has intersected with my career as a technologist. So with that, let's get to it.
We begin the story with summer camps. For those that know, "youth camps". At these camps, we had many classes, workshops, sermons, and devotional songs. What did all of these need? Someone to do audio and video, and I was just old enough to be given work, but not so old that I had an attitude. Somehow despite all the highly educated doctors, businessmen, and engineers who'd attend with or without their children, a middle, later high schooler was tasked with setting up the microphones, making sure everything is plugged in, setting up the video camera, and taking pictures on the floating camera. And honestly, it was kinda magical being able to plug in a handful of cables, and a couple seconds later, ohh look, the microphone works, or wow, the volume changes as I mess with knobs and sliders. Unfortunately I didn't do much more with the audio end of the operation, just go plug in everything and make sure it all works before the program starts. What I did spend a significant amount of time with was the camera. The video end was pretty boring to me at the time; I set up the tripod and let it run through the event, but photography was like learning magic.
I don't think I have the words to describe the feeling. Because up through most of elementary school, cameras in my head were those Gameboy Color sized black rectangles you put film in, and then wait forever for the photos to get processed. Now let me tell you about this beauty, the Panasonic Lumix DMC-FZ35, a digital camera with a 12.1MP sensor. My father bought it in September 2009, and I used that up until my senior year of high school when I was given a Nikon D7000 kit as a graduation gift. There was some uncle (some elder in the desi community, not a related uncle) who’s camera I used before I started using the Panasonic, but I don’t remember what it was. Pivoting back to that feeling, like I said, photography for me used to be this very slow process. You take your pictures, take the film out, wait for it to get developed, and then hopefully the shots come out the way you wanted. Now all of a sudden, I could point at the stage, or a speaker, or the audience, click, and then within seconds there was a little picture on the screen for me to check.
So how does being a pre-med tie into the story? Interestingly enough, when I was a 5th grader, I wanted to be a teacher. But like earlier, we flow back into faith. A palm reader told my father when he was younger that he would be an engineer. At the time he had no plans to go into engineering, but fast forward to his own studies, and he found himself accomplishing a Ph. D. in Electrical Engineering at the New Jersey Institute of Technology. This apparently was enough proof for him to put stake in the man's words, and have him read my palm. This man told me I'd be a doctor, and in my desire to please my parents I went with it, besides, it was still the age of desi kids "only" having the options of doctor, engineer, or failure. So I made it my goal to do so well in high school that I would get into an accelerated or guaranteed admissions program.
Fast forwarding to senior year of high school. I applied to just under half the Ivy League, rejected every time. I also applied to as many guaranteed admissions and 7-year programs as I could. More rejections. But hey, it's not as though I had no options. I aimed high and fell short, but it's not like I did not have a good selection of colleges and universities to pick from. In retrospect, I probably should've taken the option that gave me a full ride. In reality, I let faith guide my life, and listened to my parents who told me to ask, for lack of a better word, the Pope of the spiritual organization that we have been generationally involved with which school I should pick. I kept him in the loop of the schools I did and didn't get into, and sent him a spreadsheet of my options, their tuition, my scholarships, rankings, locations, etc. He picked the University of Pittsburgh, and like any good faithful, I rolled with it. Not the worst pick, Pitt has a great program for students attempting the premed track, and some phenomenal research has come out of the school.
We now find ourselves in Pittsburgh, the City of Champions. Before anything, let's not get things twisted, I'll never miss a beat to roast it, but I love the iron city. It has been almost 4 years since leaving, and those hills have still left a mark on my thighs and calves. I still cannot drive into or through a new city without immediately remembering how beautiful the land of the Yinzers looked from any angle. Going through the tunnel or over Mt. Washington and seeing downtown in all its glory. Driving in from the east, through Frick and Schenley Parks. Coming down from Fox Chapel and passing Highland Park. Unfortunately despite growing up in South Brunswick, NJ, and later a no name city an hour north of Philly, I am not built for the winters.
I spoiled the ending in my title, medical school wasn't in the cards, but I'll tell the story anyways. If there's one thing the desi community loves, it's comparing people's children (I'm sure it's not only a desi thing, but I can only speak of my experience as someone who grew up in that community). So I decided I'd pursue three majors: neuroscience; philosophy; and history & philosophy of science, that way the only kid I could be compared to would have to do four. Mistake number one. To my credit, coursework aside, I was learning a lot. I started volunteering at UPMC Shadyside, first in the infection control department, then later the emergency department. I also was able to network my way into a lab and help with research involving stroke patients, granted I probably wasn't much help as a freshman, but I learned a lot about motion capture, in addition to a basic understanding of stroke recovery and the retraining of normal movement. My grades on the flip side were not doing so hot. My first semester went by fine, but being fully honest, it was relearning a lot of the same intro level information I had to study for my AP classes in high school. Second semester it hit me, I tried to pack my schedule and ramp up my extra circulars. By the end of it I had a significant drop to my GPA, and was at risk of losing my scholarship. Looping faith back in, my Pope-equivalent had selected and taken a number of us to Yosemite in 2012 for direct training in mediation and yoga. The practices of self-reflection came in handy at the moment and I accessed my situation. My grades were falling, I was spread too thin, and I wasn't enjoying the subjects I was studying. So I pivoted, I reduced the clubs I was involved in to my fraternity and a south asian advocacy group I was on the board of; I dropped the two majors that weren't neuroscience; but I still wanted to have more than one major, so I added economics. That summer, I was taking a class at Pitt, took my introductory econ classes at community college, continued volunteering at the hospital, and shadowed my optometrist.
Sophomore year started on a high note, I got my GPA up and kept my scholarship, and even more importantly, one of my fraternity brothers helped me get a part time job. It wasn't much, I never made more than $7.25/hr, I worked the 7am shift one semester and night shift the next, but I was working in the IT department of Pitt's engineering college, and looking back at it now, it got the ball rolling towards pivoting into tech. At that point in time, I knew a little bit about PC hardware, but nothing about repairing a computer or doing any advanced troubleshooting, but I told my boss I could learn just about anything with Google (pour one out for old Google search), and that seemed to be enough for him. That job was the lowest I've been paid in my entire career, $7.25 an hour, the federal and state minimum wage, but it's one of the most fun experiences with employment that I've had. Every day felt like I was learning something new. Unfortunately in parallel, the pre-med dreams were not panning out. I was taking Human Physiology and Organic Chemistry in the fall semester. I withdrew from human phys early on, the curve was set that a 50 or higher was passing, and I got a 48 on my first midterm. I thought I'd be better at orgo, instead the highest score I ever got was 71 on my first midterm, and sub 30 scores on every exam following. I liked volunteering and research, but the coursework was not working for me. No problem, I'm four courses into Econ. I have a backup plan lined up right?
Spring semester, 2015. I'm one class away from completing a minor in Econ, and on the way to a major. I got this. Instead, I walked into my first midterm; I'm not sure what happened but something broke inside me and I could not imagine doing this the rest of my life. I didn't finish the exam and later that day withdrew from the class. Almost halfway through undergrad and I'm still nowhere close to finishing a degree. What now?
I was already studying Sanskrit at the time, and I took immense pride in my identity as a Hindu, so I thought why don't I pursue a degree in History or Religious Studies. My parents had different ideas, I could pursue a "useless" degree on my own dime, but not when they're supporting me. My mother used to be a software engineer before opting to be a stay-at-home mother, so she suggested I should study computer science. I was lucky enough that like many mothers she had some form of magical foresight, and recommended I sign up for the introductory programming class when I was scheduling for the spring semester.
Telling you I did not know what computer science or even programming was is an understatement. I'd spent the semester working with computers, in my head that's what computer science was. Boy oh boy was I in for a surprise when I walked into CS 007, our intro course to Java. Public static void main, what does this mean? Javac and java, why am I doing this? Recursion? Why is my method calling itself? When I say that intro course was my hell, I mean every word because never had I felt like more of an idiot. I was always a "techy" person, but what is this witchcraft that they're calling computer science. Within the first month I was ready to quit. Luckily a lot of my coworkers in the IT department understood programming; I would not have made it across that class without mountains of help.
I went into the summer semester continuing on with CS401, the first class that counted towards a fancy piece of paper I have saying I'm studied in Computer Science. Honestly, I was terrified. I'd finished the intro class, but outside of if/else statements and loops, programming made zero sense to me, classes and functions in specific confused the hell out of me. Luckily, seeing the information a second time around did the trick and it clicked. I was able to recreate that magic of a digital camera. I could take a concept I learned in class, turn it into an idea in my head, and use this thing called code to not only build it, but also test it. A significantly faster feedback loop than learning something in a chemistry lecture, and not being able to interact with the concept till the lab. In another fun coincidence, I was and have always been a poor test taker, but I lucked out by ending up in a field of study where my projects carried a similar weight to my exams. After that it was a grind to finish the major. But by summer 2017, I finished and passed my last class (it would've been spring 2017 if it weren't for a certain algorithms professor who loved to have power trips over students, not at all salty).
So how did I actually get a job where someone paid me to write code? A combination of networking and luck. I mentioned earlier that I was involved with a South Asian advocacy group on campus, to be more specific I served on the board through each year. My freshman year I made friends with an upperclassman on the board who convinced me to apply to join because it would look good for future medical school applications. Fast forward a couple semesters; he was also questioning his original plan to follow the pre med track, and ended up pivoting into Information Science. I was getting nowhere in my internship hunt, I was applying to programs and getting interviews, but had no luck landing any offers. My friend told me that the regional grocery chain was still hiring interns, and that he rejected his offer. The year of grinding met opportunity, and I was able to capitalize on the information. Before long I had an offer in my metaphorical hand for the summer of 2016.
That summer I doubled up my experience. The internship only ran from June to August, so I had around 4-6 weeks of time I could fill. So I petitioned my father to ask his friend if I could do an unpaid internship at his startup. It was a good experience being able to work in the two opposite environments. At the startup, there weren't firm rules and processes, the CTO had a list of things that were minor inconveniences but not worth dedicating real resources to. I was told as long as I don't cause problems, I could stay, and stay I did. I didn't enjoy trying to write C# code through a virtual machine on my personal macbook because they didn't have intern laptops, but boy oh boy did I learn how to use Visual Studio and how much heavy lifting .NET could do. Over the remaining two-thirds of my summer, I received two valuable insights, the difference between software as a profit vs cost center, and how many steps get added to decision making as an organization gets larger.
I said my "professional" career started in the summer of 2017, so how did I get hired? I'd love to say that after demonstrating that two separate companies trusted me enough to write code for them opened endless doors. In reality it was more timing and luck. Steel Hacks is a wonderful hackathon hosted through the University of Pittsburgh. I attended my first Steel Hacks in 2016, and had a blast trying to build a little web app to fetch some location data from twitter and throw it onto a map; we didn't win any prizes but it was a great experience nonetheless building and networking with the companies trying to recruit. 2017 rolled around and having enjoyed the event last year, I signed up again. Unfortunately the timing was inopportune and Carnegie Mellon's Tartan Hacks was being hosted the same weekend. Unfortunately the bulk of the sponsors of both hackathons opted to only send the campus recruiting team to Tartan Hacks, but luckily there were still a handful of tables set up at Steel Hacks.
Again, I'd love to say a genuine interest or passion for the company got me that first conversation with the recruiting team, but in reality it was much more simple than that. They had these lightweight hoodies that were pretty comfy and I wanted one. So I wrote my email down on their sheet, was handed the sweatshirt, and didn't think much more of it. Besides, we were trying to build a twitter bot to troll trolls, significantly more interesting at the moment. Lo and behold, next week I get an email asking to schedule an interview for the following week. I didn't have much experience at the time interviewing so I thought it'd be good practice. In my head I wasn't to work at a bank, I was going to move out west. I don't know what founded that confidence, I was still finishing my upper level electives, and thanks to that algorithms professor, I had to finish my degree over the summer. But nonetheless, I had confidence. Two weeks go by, and I'm sitting in the student union answering interview questions about how access modifiers work in Java, what do the static and new keywords mean, the difference between == and .equals, and other similar type questions you would ask someone studying computer science. First interview out of the way, great practice, back to applying to jobs in California. Another couple days go by and I see a new email asking to schedule an on-site interview. More practice, great. Next week rolls around and I go downtown to the 2nd tallest building in the city for my final rounds. First up I go to a conference room with one of their engineers and get handed a stapled stack of papers with algorithm questions on each page. Luckily I'd read a lot of similar questions in Cracking The Coding Interview, unluckily, I didn't actually practice them. No worries, I felt pretty strong in my knowledge of data structures and what are algorithms if not an application of the underlying data structure. Test done, onto the next round. Now I found myself in a room with an intern candidate and a senior engineer candidate where we were given a case study, and told to collaborate to form a solution. All three of us got offers so I guess we did pretty well. Oops, spoilers, a couple weeks later I received an offer, and honestly I only had two, with it being the more competitive, so I took it and committed myself to some more time in the steel city.
Summer 2017, the start of my "professional" career. Technically also the end of my degree because I was taking my last upper level elective in the evenings after work. I was hired into a technology leadership program so I had some autonomy in what I'd be working on. I reached out to some older relatives for advice and these were the two that stood out: if I want to make more money then switch jobs often, and that Hadoop was widely used for big data projects in banks. At the time, I was pretty interested in data science and its application to massive volumes of data, so I joined a team that was working on it. To their credit, my manager was incredibly supportive, but three weeks into the team I was bored out of my mind. Luckily the leadership program I was in would have me switch teams after half a year, so I spent my free time helping the recruiting team with campus events, later interviewing interns and new graduating seniors for the batch after mine. I also spent my free time aggressively networking with managers and attending tech meetups in the city. I wasn't sure where to take my career, I didn't know if I actually didn't like working in data, or if it was the specific role I was in. So I used my great decision making skills to yolo an application to Georgia Tech's Online Masters of Computer Science program after hearing two of my batchmates and one of the hiring managers were pursuing it part time. Some more luck later and I was accepted. Over time my primary interest shifted to cloud computing, and conveniently, the hiring manager who was also working towards the masters and was making the pitch to engineering leadership to form a team to capacity and load test our private cloud infrastructure. I have a new team, I'm rolling. Unfortunately for me, they quit the company the day I was supposed to join their team and start working under them. Fortunately I was able to find a new team to work in, albeit still working in big data, this time in the flavor of HP Vertica. To my benefit, most of my work was working on a Python and AngularJS (not 2+) application that interfaced with the backing big data database. This managed to light a new spark in me, I didn't enjoy what I was doing where I generated reports from our large datasets, but developing web applications hit that same spot that Java clicking for the first time did. After that project wrapped up, I was moved over to an adjacent project doing something similar with Java, Spring, Angular, Mongo, and some flavor of SQL storing large datasets. Looking back at them, both projects probably could've been implemented with PowerBI, but we know how much banks love building their own internal tools. That rotation flew by, and I found myself looking at two options as it approached its end: join the project as a permanent team member, or try pivoting my way onto the team that built and maintained our cloud compute platform. I chose to pivot and some convincing the hiring manager later, I joined the team. From a learning point of view, it was a phenomenal experience. I got to see how we managed to build a bespoke system that tried to do everything Kubernetes could do for us without deploying Kubernetes in our data centers. Logging, service discovery, orchestration and scheduling, secrets management, and so on. Conceptually all of it was super cool, we built a system to take your containerized application, run it, and scale it. Workwise though, I found it kinda boring, spending a whole lot more time looking at screens than writing code. I wish I could've spent more time on the later because the experience of writing in Go was 2nd to none after a whole lot of Python, Java, and Javascript.
As the boredom increased, I found myself deep diving into interviewing and networking. Should I have focused on the masters? Probably, but if it hasn't been made clear yet, good decision making is not a strong suit. For what it's worth, the experience of practicing leetcode problems and doing all that whiteboarding at some brand name technology firms is what cemented my data structures and algorithms. So how did I make my way from a big bank to a smedium robotics firm? Luck and timing. There was a meetup happening at a bar down the street from my apartment, and I hit it off with my soon to be new manager over a mutual interest in the Go programming language.
On my two year mark I left the bank, and the following week I found myself working with industrial trucks. We had a Django monolith with a front end written in Pug (formerly Jade) that we wanted to break into Twisted/Klein microservices and build a new UI in Vue. I was hired to both be a full stack engineer and occasionally wear some other hats. My first year there was a fantastic experience, being able to capitalize on my prior experience and gain new skills. I was able to learn from more senior engineers how they carved functionality out of the monolith into dedicated services. Also, shoutout to Protobufs and RabbitMQ, after only using HTTP requests to communicate with other services, the event driven nature of messaging quickly became a powerful tool in my belt. Being the only member of the team who was comfortable with both the frontend and backend, I was able to work very closely with our UX team, helping conduct user interviews, and giving feedback on designs. I had the opportunity to leverage my prior cloud experience to assist our efforts in moving from the large VM we shipped for our monolith to a containerized system that our services could run on. My prior experience with campus recruiting came in handy as well, where I started taking an active role in our interviewing efforts. And coolest of all, we built multi-ton trucks that could drive themselves in factories and warehouses. Safety was built into the culture of the company, and I got to put on steel toe boots, walk over to the other building, and work with the QA team as we tested new features before shipping to customers.
What about graduate school? Well, I was really enjoying the work I was doing, I was learning a lot, and I was getting paid to do it. Meanwhile, the last class I took had me learning network security on a version of Ubuntu that had long been end-of lifed. I was also paying for school out of my pocket this time, so my parents' threats of being a low value individual without a graduate degree was just that, threats with no follow through. And with that, I withdrew from the program. To its credit though, learning how to represent a SQL query as relational algebra or calculus and deep diving into B/B+ trees was pretty neat.
I just said a lot of great things about the company, so what got me to leave? A combination of change and questionable decision making on my end. The company grew a lot during my time there, with the growth, the culture changed, and by the time I left we were nearly triple the size of when I started. Throughout the period of doubling and on the way to tripling, I was moved between a handful of teams as we shifted to building more SaaS products and internal tools to support them. Most of the teams were great, but my last one was what did it. Around my two year mark, I found myself only working on frontend, and I wasn't happy. I brought this up with my most recent manager, and was told that as far as they were concerned I was a junior front end engineer, and I could either keep doing that or look for a new job. So I did both. Ohh I forgot to mention, during my time at the company, the pandemic happened, and I decided to move from Pittsburgh to Austin, Texas. When I was back in the burgh for some team events, I let it slip to one of my teammates that I'd started taking interviews. Word got back to my manager, they called me into a meeting, and I was told they weren't comfortable giving me new work because they didn't know how long I'd be around for, so I can either commit to the team or leave. A couple weeks later I quit with no job lined up.
Not gonna lie, looking back it was a low point in my confidence. It didn't help that most of my relatives told me I was crazy for quitting a good paying job instead of sticking it through. I spent two weeks letting myself mope, before going into full time interview mode. Luck was on my side this time as it was still the pandemic and just about everyone was trying to hire software engineers. I had no shortage of recruiters reaching out to me, so I took the opportunity to aggressively interview and workout that muscle. Unfortunately I was also living off my savings so I only had so much of a runway.
About a month into funemployment, I reconnected with an acquaintance of mine who was a part time instructor at a coding bootcamp, he connected me to their hiring team, and I started moonlighting as a teacher. Downside was that I was at the mercy of the scheduler and who they wanted to assign to teach each month, but overall, it was a great experience teaching. Nothing helps you understand information quite as well as having to convey it to someone else who does not have the same domain knowledge as you. I also learned just how different a skill it is to teach something in a lecture and lab exercise vs trying to convey the same information in written form through a study guide. It's kinda easy to forget how complicated something like SQL or even Python could appear to someone who's never seen it before, let alone trying to explain something like Docker and containers.
Teaching ended up being a handy tool in my belt because I'm almost positive that it's what helped me land my next role. I interviewed at this company for another role earlier on the team that owned a managed Kubernetes service they offered, but I was ghosted after an interview with the hiring manager. To my luck, a different recruiter from the consulting services wing of the firm saw my resume, liked it, and reached out. A couple interviews later and I found myself as a consultant for a multi billion dollar tech firm. I specifically worked with clients in the public sector. Not the most glamorous tech stack, Java, Spring, and React, but it was a highly rewarding experience being able to build products to address inefficiencies in their operations, improving their developer experience by reducing duplicate efforts into reusable packages, and training our clients to be better engineers. Unfortunately full time consulting was not a lifestyle that I fit well with, and I found myself needing a change.
So here we are at present day. I pivoted back to a company in the financial sector, working in the intersection of lending and insurance. I'm working on a product and codebase that's probably old enough to legally drink in the States. A whole new kind of learning. How did I get here? Well I told a whole story about it but I'm not really sure what the secret trick is. I want to say I worked hard but that's not all that unique, it involved a lot of luck and being in the right place at the right time. I'm not really sure how to recreate it but for me at least, constantly learning and hoping played out well.