How I left UPSC to become a Software Engineer?

Dhawal PandyaDhawal Pandya
13 min read

If you want to make the Gods laugh, tell them your plans.

- Yiddish Proverb (3500 BC)

I could write. I used to write a lot, from big essays to small poems to short stories to a few dozen chapters of unfinished books. When I was preparing for UPSC I would write notes daily. It would range from noting down current events with appropriate depth to making subject-specific notes, that sometimes turned out bigger than the textbooks themselves.

I always loved words, and the constraint writing puts on one always fascinated me. The constraint to articulate abstract thoughts down from the foggy air to solid chucks of meaning, and then to neatly arrange them according to rules, so that when they are read, my thoughts are transplanted to other brains, as accurately as I wrote them. I just loved this.

So in my journey to become a decent software engineer, the first thing I wrote was the schedule for the first 100 days. My Gigachad friend Viral Parmar, did visit me during the change of the year and helped me design a pathway into code. He laid down the distinguishment between frontend, backend, fullstack, tester, and a few others I was too dumb to remember. He gave very logical points for me to follow through and we chose to make me a frontend developer. For that my path was HTML, CSS and JavaScript, to begin with, which I should finish within 40 days, and I should also learn something called Git (whatever that silly thing was). So the morning of 1st of January 2022, was my #DayZero of Coding.

I partook in the #100DaysOfCode, in which I started from the absolute basic HTML (the same one used to hack NASA). With no idea how the machine responded to what I wrote, I just knew that if I wrote a few somethings in certain ways, I might be able to make the machine do what I wanted it to do. I learned how to make a basic website. Now if I say that what I made was a good, pleasant site, I'd have no growth, but back then, I felt that it was the bomb. I used to use <br> to increase spaces between blocks of text. I used everything from <emp> to <marquee> to design my site, to make it proper, to make it great! All changed when learned about the existence of CSS.

Oh boy, CSS was a beast. I truly felt like a king when I got my hands on it. It took me about 2 hours to learn HTML, it must have taken about 4 days for CSS. I was enthralled by just how much I could do. I stopped using anything else but <div> s in my HTML, and worked almost entirely using CSS, just because I knew I could. I learned some tricks all beginners have to learn, like the border: 2px solid red, among a few that I still use to this day. But, it wasn't all rainbows. The sheer amount of things that are possible using CSS was astounding. But after building some muscle memory, I could feel myself learning. I started seeing myself go from not knowing anything about something in the morning, and by the time the sun set, I could reasonably use that particular tool. This feeling came more and more often, the more I wrote code.

I could feel myself falling in love with coding. In UPSC, everyone who was a lecturer, and all of my fellow audience held a certain air around them. It was always a cut-throat competition. Everyone was fighting to death for an inch of land. For some perspective, the largest stadium in the world is in my home state, which houses around 130,000 people. Now imagine all of them full to the brim with people. Now take 7 of them and stack them into a tower of stadiums. That is the number of people who fill out the forms for UPSC every year (that is 1,000,000 to 1,100,000). Right, and the number of people selected from those is less than half of what the ship RMS Lusitania had on her when she was sunk by ze Germans during World War II (that is 700 people). With the sheer number of people and the very math of probability itself against me, I had to face extreme competition all the time. So if anyone came forward to help, he was either lying or too innocent to understand the game and was not to be trusted because of that. There was not a shred of that in the coding world. It was all built up of very smart people, who freely admitted to standing on the shoulders of giants, being giants themselves offering shoulders to stand on.

The sheer force of goodwill I felt in every tutorial trying their level best to shoehorn a concept into my brain, all out of genuine love for the subject was downright mind-blowing. Whenever a complicated concept like "callbacks" or "hoisting" clicked, I felt the joy of truly learning something for its sake. Its usage to solve problems was secondary, it was beautiful by itself. That was nowhere seen by me during my UPSC journey.

As you may have noticed I had started JavaScript as well. The more I learned, the more acutely I became aware that I was never going to complete JavaScript. No one could. JavaScript was numinous, magical. I felt like the foundations of existence were written in code, and I could now read them, they were in my hand. I could write anything and the language would make it so. The joke about the code not working correctly, but still doing exactly what it was told to do was not lost on me. I too had my days of finding the . in a sea of ; . I was in absolute awe of this world. I was a starry-eyed city boy who had seen the rural sky for the first time. I even told my friend that on some days, when I was truly in the flow of coding, I felt as if the perfect code already existed, I just had to find it in the chaos.

My love for writing returned. I was not talking to dumb humans who could misconstrue what I had said, but to an entity that would do perfectly, exactly what I told it to do, and not what I thought I told it to do. This put a good incentive upon me to write concisely, but without losing any meaning. I had to write exactly, at least as exactly as I could.

Eventually, the 100-day mark came and went, and I started applying for jobs. Applying for jobs became my full-time job. Being a newbie, I was a total idiot about it. I even got calls from a lot of companies that were interested but wouldn't take me because I hadn't polished myself for them. I was uncouth, lacked the technical expertise, didn't know the correct words to use, said words I should not have used and overall was a bumbling mess. If anyone tried to help me correct my errors, I would fume at them for trying to correct me. I was either right or completely wrong. Black or white. I was subconsciously still reeling from years of being in an ultra-competitive environment. So that was the only way I could react (pun intended).

But the language one uses does change the way one thinks on a much deeper level than anyone appreciates. I could feel programming seep into my psyche. I too started softening up on people. I learned that all programs are written iteratively. There is a first draft, then a second, and it is built in layers, just like a painting. It is not like a photograph, pixel perfect, but lacking any soul, the way I was reacting originally. So what happened was, that I would make a mistake and was way less harsh upon me for it, for I could always rectify it in the next draft. It wasn't the boolean nature of UPSC that I had to deal with, it was a very soft gradient, which gently led me from ignorance to light. It always kept me humble because there was always more to learn, but I could just learn it as well. The pride I had in what I had learned never became ego either.

On the suggestion of my friend, I installed Linux on my laptop and completely embraced the life of a developer. I would never again be scared of a CLI. I did a tutorial or two for Linux Ubuntu 20.02, and was absolutely blown away by the customisation. I realised it was free software, but as my friend would keep reminding me, "Linux is free, if you don't value your time.", which kept me in optimal check.

It was truly turning out to be the best decision of my life so far. I felt genuine happiness in whatever I was creating. I kept getting better and better at coding because that's all I needed to be good at. I kept practising daily, kept building small projects, like a calculator or a to-do list, and then went on to build bigger and bigger projects. I made a portfolio site, which has gone through many many iterations since.

One day, my Gigachad friend, Viral contacted his old company and referred me to them. He spoke to them so fervently about me, they almost believed I was very very good. I must warn I was a mere HTML-CSS-JavaScript guy by then. I had dabbled in React, but without that completion of JavaScript I couldn't move on completely to React or any other framework. But my dear friend had told them I was more than proficient in Python as well as Flask and could build proper servers. I knew absolutely nothing, and my boy told them I was already a full-stack developer. What followed was so remarkable, I had never experienced such things in my life, the misfortune and the accompanying serendipity.

This conversation happened on a Friday at noon. My friend told me to learn all I could about Python and Flask in the next 3 days, as my interview was set up for Monday morning. That afternoon, my laptop just died and was not responsive, while I was still new to Linux, and while tinkering with settings must have deleted some important files. I told my friend, that I was basically screwed, as I couldn't just watch videos to learn coding I had to code things myself, otherwise the information would just evaporate. That evening he was at my home, with his laptop which he brought for me for the interview, and for learning. Mind you, he lives around 180 kilometres away, in a different state. He came because he believed in me, probably more than I did in myself. I was almost in tears. If I asked for his right arm, he would just give it to me. I felt immense responsibility on myself because of that and burned through the next three days learning Python and Flask. It was purely the grace of Gods upon me that Python is easy to learn and write, otherwise, it would have been more impossible than it already was. But I had to learn MySQL as well because we cannot have things too easy.

On the day of the interview, I had finished building a basic social media site. When I say basic, I do really mean absolutely basic. the colours were white, black and 3 different shades of grey. But it was a complete product. I used React for the Frontend and Flask for the Backend. I made a login page, sign-in page, welcome page, home page, and cards for individual posts. Also a logout button. I wrote the CRUD operations for all these things, and boy was it a flood of information for my tiny Brian!

I didn't clear the interview, obviously because I was not very good at any of those things, but what good came out of that "experience" was that I had two more things to tack onto my stack. I learned many micro things, like CORS issues, and hashing and salting for the passwords, among many other things. I was very proud of the fact that I went from knowing diddly to building an actual product using that, merely in three days. I increased my pace of learning significantly after that loss of opportunity.

I wrote so much code, while constantly reminding myself that there were far better people than me, who were writing way more code than me, and that kept me pushing things. The time was the latter part of 2022, and the whole world was falling into recession. I heard news of software companies laying off employees every day by the thousands. I was already someone from outside the field of CS. I had no degree of CS. The market was not hiring at all, and into the pool of employable people, people who had cracked interviews of Google, Facebook, etc were being dumped in every day. My feelings for coding could not keep the world at bay.

There were two ways as I saw it. Either I was erring, or the world was genuinely going crazy. I preferred the former because I could at least fix myself. I doubled down on it. Started solving Leetcode problems, and made more and more complex projects. I made a replica of John Conway's Game of Life in React, as one of my principal portfolio projects. This went on for months.

I learned React more profusely and started polishing my socials. It was hard work, but what else was I gonna do? I kept applying for companies, for many roles. I would at any given time be in either of the multiple stages of an interview. I must have applied to over 1000 companies and must have given more than 30 interviews. Mind you, even being in an interview was an experience for me. I knew nothing and grew up from that.

My love for reading and writing returned as I started writing blogs. Technical blogs, which described basic concepts of the language or any CS concept I was learning recently at that time. I wrote close to 70 articles because I just love writing that much. To my absolute surprise, I got gigs for writing articles for many companies and individuals. It took me barely an hour to write around 500 words. I had trained myself to write close to 1500 words for writing UPSC essays, so these small tasks felt like breezes to me. I didn't even charge anything for it, in the beginning. But under the guidance of my mother, I saw that whenever I didn't charge they didn't value what I had written either. But what to charge?

I read somewhere, that really good copywriters charged close to 5 ₹/word, so I stayed on 4 ₹/word. I quoted that to a company who said they would get back to me in a few hours, and during those hours I held my breath as I was certain they would politely tell me to go away. To my astonishment, they said they'd do it for a 700-word essay, and gave me three days to write it up. I finished it in the next hour, and it took all of my strength to stop me from submitting it too early. I submitted it as a "first draft" to them the next day, and they loved it. I had written 750 words, but I told them to round it off to 700. They gladly paid me ₹2800 within minutes. It was an extremely bizarre feeling.

I got a lot of such gigs. I wrote a lot of technical stuff, blogs on Python, React Authentication, and so on, but I knew that I didn't want to write about code, I wanted to write code, period. So I started saying no to newer gigs. I let it go, just around when ChatGPT came into town. What the Gods had in mind, only they knew, but I was saved from going into a dying industry.

This went on for some time, and eventually because of my Gigachad friend, another company that was a start-up in Bengaluru contacted me. After a brief discussion on a summer evening, I had been booked for an interview the following day. From the endless barrage of interviews that I had given, I was plastic to it. Interviews are a draining phenomenon, and I was very close to giving up many times. This was one of those times. The interview the next day went rather nicely. The interviewer was very cordial and sympathetic to the fact that I was self-taught, and was without a degree. A technical interview was set up the next day with another of the team members, where I learned that the first guy I spoke with was the co-founder of the company, and the tech guy I spoke with was the other co-founder, and I would be their first employee. I got a call that very evening from them saying they were happy with my interview and would hire me, and sent me the offer letter that very night.

The very next day, 19 April 2023, was my first day at a job. Like I said, I could write, and that saved my life.

0
Subscribe to my newsletter

Read articles from Dhawal Pandya directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Dhawal Pandya
Dhawal Pandya

Engineering @ Razorpay