My journey to becoming a GSoC ’20 Student

How I got an opportunity to intern under one of the largest organizations in one of the most competitive GSoC till date.

Rahul Saxena
The Startup

--

My story of becoming a GSoC fellow under R Project for Statistical Computing

Table of Contents:

  1. Preface
  2. Flashback
  3. Reconnaissance
  4. Analysis
  5. Setting Things Right
  6. Go All Out
  7. Stay Sane
  8. Make Your Proposal Count
  9. What If I Don’t Make The Cut?
  10. Happy Pictures

Preface:

My entire GSoC journey has been a pretty enjoyable ride, full of excitement, unexpected turns and yes, expected blind turns. Through this article I only wish to share my journey with you, and not to give you any advice per se. However, if you find some parts of this voyage impressionable, you may very well adopt it.

I had been requested by many people, to share how I “cracked GSoC” and what tips I could give them to “crack” it. Although, I admit I started gunning for GSoC because of the reputation associated with it and not to mention the decent stipend it offers, but now having become part of the OSS community, I have undergone platonic shifts in my mindset. If you’re wondering why I’ve written “crack” in quotes, please find the time to go through this wonderful article by one of my college seniors (Kautilya Tripathi).

So sit back, relax and enjoy a student reminiscing his run up to the Google Summer of Code selection 😄

Flashback (An year earlier):

In my previous academic year, I had applied for a slot in one of the organizations of GSoC and on the day of the results, 6th May 2019, sitting in the airport waiting for my flight amidst the raging cyclone Fani I received my rejection mail. My mentor was kind enough to personally mail me and assure me of my competence. However, the looming feeling of disappointment stayed with me at the back of my head for quite some time.

One silver lining in this scenario was that I was intimated the single biggest factor leading up to my rejection.

Snippet of the mail that I received from my mentor

My gloominess soon faded as I decided to pursue a research internship at IIT Patna, where I met some really awesome people, made lasting friends, ate authentic Bihari food at a friend’s home and worked on an impactful project. This, however, is a story for another day.

Reconnaissance:

My past experiences and suggestions from my well wishers all pointed towards the same thing: Analysis.

It was paramount for me to quickly overcome my grief and any lingering negative emotions stemming from my rejection so that I could start to function optimally as soon as possible.

Analysis:

I remember, one fine morning of a weekend, I got up quite early in the morning and then I went for a stroll in the campus of IIT Patna. I started pondering over all the possible reasons that could have resulted in my rejection and I came up with the following list:

  1. The organization had a proficiency test to check the competence of students applying to the org and whilst strolling, I realized that I could have done much much better in that test.
  2. My interactions, code patches and test attempts were quite isolated. I mean, I was in touch with only one mentor from the org over mail. It wasn’t some public forum(like IRC, Zulip, etc.) where my efforts could be seen and recognized by other members of the org.
  3. The overall impact of my selected project on the organization was quite low. This means that, there were other major projects up for grabs that aligned much more with the vision of the company moving ahead.
  4. As a direct result of point number 3, if the number of slots to be offered to my org were to decrease for any reason, I would be the first to be shown the door.
  5. Frankly put, I chose the project because I was familiar with tech stack and domain knowledge required, however I did not particularly have any penchant for that project.

So, with all these pointers in my head, I began laying the ground-work for my selection in the next iteration of the Google Summer of Code.

Setting things right:

At IIT Patna during my summer research intern, I made it a point to talk to as many people as possible. Didn’t matter which field of computer science they were researching on, I’d go and talk to them. The simple objective this exercise served was opening up my mind and uncovering other potential shortcomings in my pitch for GSoC last year.

I sadly, didn’t learn much about GSoC from those folks, but I did learn a huge deal of stuff from them and made some life-long friends too 😄. I don’t remember who, but it was one of my friends studying at IIT Patna itself, who told me something I hadn’t really thought of before.

He told me, just remove every technical aspect from GSoC. Like, remove the tagged fields (ML, Compiler Design, Data Science, OS), remove all the tech stack (C, C++, Python, Docker, Kubernetes) and then see what are you left with.

When you strip down all the fancy layers of GSoC, you’ll see that it’s simply a program where a more experienced developer is looking for a student to complete a project. The mentor would expect “some” relevant programming proficiency from you but not much, because then there would be no need for a mentor, right?

So, the most important thing in the run up to GSoC selections is building up trust. Build trust among the members of your targeted org that you are a reliable candidate, that you do what you say you’ll do, that you ask questions which wouldn’t have popped up if you hadn’t put efforts to know the project inside-out.Because, at the end of the day, they’ll have just a PDF document(your proposal) to decide whether they want to work with you or not.

So go out there and connect with all the org members on a human level ;)

Sorting organizations by size:

So, fueled by all the pep talks from my fellow researchers at Patna and the relatively manageable workload at the research intern, I began to compile a list of all the organizations that participated last year.

My motive behind this exercise was to eliminate the possibility of losing out on a chance to become a GSoC scholar just because my organization got less number of slots (a major reason in my last year’s failure). So, I sorted all the organizations according to the slots they used that year and came up with a list that looked something like this:

With these lists in place, I decided to concentrate my efforts on only these “Large Organizations” and “Semi Large Organizations”. The reason being that these organizations in general had a good track record of coming up in every iteration of GSoC, plus in these organization a student probably won’t loose out just because his/her project was not “important” enough 😐.

Zeroing In on a field:

Up until now, apart from the studies at my home university, I had developed interest in only one field and that was “Computer Networking”. While, I studied it quite deeply and it also helped me understand a lot of phenomenon going around me it was just too theoretical for me.

To challenge this belief of mine that Networking is just theoretical stuff, I took up a research intern at IIT Patna in the field of Computer Networking, it hardly did much to convert my belief. Although, the work assigned to me was quite manageable and I was able to complete most of it, it did not have the spark I was looking for.

So, again on an evening stroll in the campus, I started thinking what is it that actually excites me, gives me the butterflies, just what is it? It was then in that evening that I started connecting all the dots. As a kid I had been very interested in how “Mergers and Acquisitions” worked and how the valuations of a company was decided and so on; and thanks to my parents I also have an above-average skill in story telling.

So, the above facts made my choice very clear. I acted on likes and inclinations and decided that I wanted to work in the field of Data Science/Business Analytics 😸

Finding myself my Senpai:

When the targeted organizations were clear (Large and Semi-Large) and the field was clear (Data Science/Business Analytics), it did not take me much time to figure out the organizations that fell at the intersection of these two requirements. The orgs that met that criterion were:

  1. Python
  2. R
  3. Red Hen Lab
  4. The Julia Language
  5. and a few others depending on specific projects.

Luckily, I had a college senior who was a GSoC scholar with “The Julia Language” last year, so I texted him for some guidance and he then provided me with a rough road-map on how to get started.

But unfortunately, as soon as I started grasping the basics of Julia, my work load increased exponentially and I was forced to put Julia in cold storage for a while :(

With that, my internship ended and I was back at my home university for the next semester. There I again started learning Julia but I couldn’t disturb my senior much, cause he was really deep into some research work and my doubts were probably amateurish at best.

The packages that make R awesome.

It was then that a thought struck me. I also have a batch-mate who was a GSoC scholar with “R Project for Statistical Computing” and I could ask him for help rather than bugging my senior. It was then that I discussed my plans of working for R in the next GSoC with Aditya and he decided to help me. I am pretty sure, then when I started learning R and pestered him with doubts he sometimes did want to punch me square in the face, but he explained every doubt with tremendous patience.

So, to do my part, I only asked doubts that I couldn’t find the answers to over the internet and which made me struggle for at least a day. All in all it was a wonderful journey where Aditya kept on pointing me to courses and kept on giving me R based challenges and I subsequently kept on honing my skills 💛.

Play to your strengths:

It was around in December, when after reviewing my efforts on a challenge that he gave me, Aditya said, “ok now I don’t think I need to teach you anything else”. It was a bitter-sweet moment for me. As it meant that I had successfully passed “Senpai’s training” but on the other hand it also meant that I was now on my own.

So, I kept on reading some books related to R, read some code-bases in R and time drifted by and then came the month of March. In the month of March, the selected organizations started releasing their list of potential projects. So, as I scanned the list of the listed R projects rco caught me eye. rco stood for “The R Code Optimizer” and as a competitive programming enthusiast it intrigued me to no end. In my days of learning C++ as part of university curriculum or to better the run time in various programming contests, code optimization was a field I had grown quite passionate for.

The project based on “rco” gave me the chance to work on code optimization in R, it was god sent opportunity and I grabbed it with both hands ;)

Go all out:

So with every variable set and everything taken care of, the last piece of the puzzle was to go all in. The projects were released on 20th of February and the student application deadline was 31st March. This was a window of a little over a month and I had to understand the code-base of R,gain some proficiency in writing R code compatible with rco and complete three tests (Easy, Medium and Hard) provided on the rco project wiki. I guess, it’s clear that I had no time to waste and my only chance was to go all out.

Dedicate time to learn about the project:

One fallacy that almost every amateur programmer suffers from, is that; they equate progress with the lines of codes written.

However, the most important phase of preparation is that don’t be fazed or perturbed by the fact that you are not writing any code as long as you are gaining an insight as to how your particular project(s) works on a fundamental level.

This is because, once you do understand the fundamentals behind your project, you’ll be able to write code that is succinct and less likely to break and that too at a pretty high pace >.<

Ask genuine doubts:

It was clearly written on the rco wiki that the students are required to complete the tests in order to communicate with the mentors. This may seem pretty harsh, but if you read between the lines, the message is quite clear: The mentors are willing to talk only to students who are serious for the project.

This is the stage where you showcase that you are a self-starter and a highly motivated student developer. If you mail a mentor on the lines of “How do I get started” or “How do I set it up” or the likes of it, you are communicating that you are someone who needs to be spoon-fed everything and mentoring you would be a hassle.

So, ask genuine doubts. Doubts that arise when you seriously work on the project. Doubts that showcase that you actually are working on the project and goes on to show that you have the potential to be a valuable asset to the organization you’re applying for.

Stay Sane:

So when I mentioned go all out, don’t go completely insane. If you look at it objectively, it’s a sprint of just over a month. Maintain a balance and always remember that you’re actually studying in a university too that has an attendance criterion and not to mention you have to pass the university exams too 😝.

Maintain a small but motivated circle of friends:

Be social in this period, but limit your social circle. If you interact with a select group of friends in this period it will keep you fresh and at the same time it will not let you waiver from your preparation strategies. So, when you do get in a schedule where you are“ coding” for a considerable amount of time and have some time to interact with your friends too, hold on to that schedule to the finish.

Limit your social obligations:

For me, the schedule was going out for a cup of coffee with a few of my friends after the classes got over in the evening and then coding till late in the night. Simple.

Make your proposal count:

Your GSoC proposal is one of the most important aspects of your GSoC selection, if not the most important. Remember what I wrote under the “Flashback(An Year Earlier)” ? There my previous mentor specifically told me that he found my proposal lacking.

Therefore this year, I gave my proposal the same weightage that I gave to actually writing code. This may seem like a drag(Shikamaru Nara is one of my favorite characters 😅) and may sound completely unnecessary, but just think about the people at those organizations. They have nothing apart from a PDF file to judge whether they want to work with you or not.

I therefore, searched extensively on the Internet for good writing practice and one advice stuck with me:

If you really want to be a great writer, then put yourself in the shoes of the reader. As a reader set extremely high expectations from the writer and note those expectations down. Then as a writer do your best to address those expectations.

So, making this advice the north star of my proposal I thought of many questions that the mentors might have for me and accordingly “answered” them in the proposal. My objective with the proposal was that whosoever may read it should not be left even with an iota of doubt as to

  • Who I was ?
  • What my project was ?
  • How I planned to complete my project ?
  • What I’ve already done in that regard ?
  • And most importantly, why me ?

I did my best to leave nothing out and answer any potential query that may arise and I came up with this proposal.

What if I don’t make the cut:

When you are preparing so long and hard for this, you definitely will inadvertently start asking yourself various negative questions and start to over-think. You may ask “what if I don’t make the cut” or “what if I’m simply wasting my time” and so on and so forth.

Let me answer these questions for you.

Learn as if you’re going to be rejected:

Let me first tell you that this school of thought (insider DWM joke here ;) )helped me put my mind at ease but I can’t guarantee the same for you.

So, when under the influence of such negative thoughts, I considered the worst case scenario. Ok, so I was not selected for GSoC under the R Project of Statistical Computing, so what? Did I learn something new while preparing for it? Did I build some level of discipline in the run up to this? Did I gain confidence because of my new skills?

And, if the answers to the above question is YES, then you don’t need to worry. Your time in preparation was well spent and promptly utilized. Now rest easy and do what you can, CODE!!

Be confident in your skills and keep on up-skilling:

Even if you were to fail, just make sure that you gave it your all; because at the end of the day you could be rejected ever after your potential mentors want you onboard, for a variety of reasons.

So, don’t ever learn something with the intention of “cracking GSoC”. Learn things to become a better programmer, to gain something and become proficient at your computer skills. Don’t ever be discouraged and always maintain the mindset where you ask yourself, “okay this is the given situation, now what can I do”. Simple.

Happy Pictures:

This was all that I had to share with you, dear reader. It was a wonderful journey for me and if you have come this far, I hope you would have come across a few pointers to take home.

You can check out the other articles that I wrote regarding R code optimizations and some personal-projects that I undertook here. If you liked what you read, consider following me on Medium and Twitter 😄 and for people feeling particularly philanthropic, consider buying me a coffee :)

Thank You and Godspeed.

P.S.: If you want to have a look at my final selected proposal, take a look here.

P.P.S.: Let’s end this post with some happy photos, shall we?

--

--