Journey of a Newbie Programmer to GSOC Selection

Journey of a Newbie Programmer to GSOC Selection

This is not my usual tech blog where I try to break down stuff, this is a blog about my tech journey till now, where I will try to narrate a bit about how I got into programming, how I got interested in Tech, and how to I got into Google summer of code. I’ll try to do a bit of intro about me initially and then elaborate on my Gsoc journey.

The big bang

My first introduction to engineering happened when I was in 9th grade. I developed a new excitement and hobby for tech, especially watching tech channels. I even tried creating my own YouTube channel and gained 15 subscribers (all of whom were my friends). This phase sparked my interest in programming. I wanted to make websites and apps but couldn't due to a lack of awareness and not having a computer. I got my first computer in 11th grade while I was preparing for the JEE. I secured 97 percentile, but it wasn't enough to get me into an NIT with a computer science branch. In hindsight, I'm grateful for this because it fueled my desire to prove myself and achieve something significant.

The birth of Adam and Eve

I started learning Java after I failed JEE and skipped JEE Advanced (I knew I wouldn’t be able to crack it). I explored more about programming and came across DSA (damn, that binary search was too hard for me to digest at first). I practiced a lot of DSA (I still struggle with DP) and did a bit of CP too (because I knew every CP question could be solved with a hashmap, kidding). The real turning point came when I developed an interest in web development. Initially, I struggled a lot, but as I continued working on projects, things gradually became much smoother.

The great inflection point in my web dev journey was clearly when I first participated in a hackathon. Through this hackathon, I learned a lot, especially about developing backends, working with databases, and understanding the importance of clean code when a single return statement cost us the victory.

I knew about Google Summer of Code earlier, but I delved deeper into it around September 2023. I started searching for organizations and explored the codebases of about 10-12 of them. I eventually settled on Zulip. I set up the project and tried contributing to it. My first PR was not great; it’s not always that simple. I kept working and trying to understand the codebase, which was quite hard for a newbie. I spent days and nights trying to understand a single file. This wasn't just another React project by a novice programmer; it was a complex codebase with around 500,000 lines of code, and even understanding 100 lines was difficult.

The Great flood

I almost gave up on Zulip around December when not much was happening in the past 2-3 months. I accepted the fact(myth) that GSOC was not my cup of tea, and I should try other things, GSOC organisations were announced this February and these were the messages I sent to my friend (we both aspired for GSOC initially)

Yes so there was no hope till February beginning, but the hope arose when my this PR got merged on February 16.

The PR that motivated me

The Noah’s Ark

I made this PR in January, and it was stale since then. But as things started moving, I got my hope back. I went to the projects list and tried figuring out my projects. I regained my vision, but I wasn't sure because I knew this would take a lot of perseverance, patience, luck, and consistency for the next 2 months amid college, internal exams, and managing personal and hackathon projects. I worked very hard, putting in 8-10 hours a day to ensure I didn't miss any chance of hitting the bull’s eye. From just 2 PRs merged initially, in these 1 and a half months, I got 10 more PRs merged, which made me satisfied that it is going to happen this year.

Evolution theory

These are the tips that helped me a lot in my journey and might help you as well.

  1. Hunger: The hunger to do something and achieve big is very important, the hunger to get it, the hunger to be the best the hunger to defeat everyone are very important. When Virat Kohli was asked how he got so much confidence he said:

“this is the guy I’ve always been, if someone’s getting a hundred, I have to get 200, otherwise no one's gonna notice and I had that fire inside me all the time and that’s exactly what I did to come up the ranks, I scored so many runs that people could not ignore me and that is my only driving force”.

This is the reason why he excels in his field and this is what makes me idolize him and this is what inspires me also. The hunger to do something will keep you moving forward.

  1. Never give up: When my PRs started getting merged, I regretted giving up earlier. The best thing you can do is to keep trying. As James Clear said in Atomic Habits:

“Masterty requires patience”.

  1. Open source is hard: Contributing to big organizations involves working on real codebases used by millions of people, which can be quite challenging. It’s important to recognize the effort and complexity involved. Unlike programs like GSSoC or Hacktoberfest, where it's easier to make small, manageable contributions, this will require a deeper understanding of the codebase. Please approach this with humility and readiness to learn.

  2. Clean communication and confidence: Confidence in your work is important, if you can’t explain your code, then forget about it, it is not happening. Good communication with the mentors and admin is very important if you aim to crack any of these programs.

  3. Write clean code: Writing clean code is a crucial part of your journey. If you don't write clean code, open source is not for you. No one will merge poor-quality code into their codebase. This skill develops over time, but the sooner you adapt, the better your situation will be.

  4. Learn Git: Git is the most important tool you should learn to make PRs, and no you don’t know Git even if you think you know it. Doing git push origin main is not knowing git. Learn about rebasing, squashing, grep, stashing etc.

  5. Vertical learning: Do you know what a prototype chain is in JavaScript, what generics are in TypeScript, or what suspense fallback is in React? How about implementing caching in backends? Most of you might not, even if you use similar tech stacks. The reason is that, as students, we often try to learn things broadly rather than deeply. There's nothing wrong with that, but if you want to excel at something, you need vertical learning—you need to go in-depth. Learning Next.js is not hard, but understanding it deeply is. There's always a trade-off between shipping fast and going deep; you need to balance them according to your goals.

  6. Learning over everything: I am not a motivational speaker, but one thing I have realised which is required for long-term success is Learning, to be honest with whatever you are doing, because if you can’t be honest with yourself then there is no hope.

The Apocalypse

In the end, I just want to say there is more to the world than just GSOC, LFX, or MLH. There are many things you can explore and many things we can do in life. This is what I tell myself and everyone: if you fail at something, it doesn't mean you'll fail at everything. At least go and try something new.

And in the end, as Nikhil Kamath infamously said:

“At the end of it each time you don’t do well at an exam, you don’t get good marks, that girl you like doesn’t like you back, you're jealous of another friend in your class or college. I think the one thing to remember at the end of it is B********* sab marne wale hain”

Credits

  • Youtube for existing

  • Friends who motivated me for GSOC

  • Family

  • Myself :)

    Feel free to connect with me on X and LinkedIn