It’s fine if the title says “Contributing to GSoC and open-source improves your coding skill”, right?
Also known as the First Fortnight of GSoc Coding Period.
Imagine you’re playing a RPG game(no, not Dark Souls). You start at Level 1 (or zilch) with some basic stats like ‘Agility’, ‘Strength’, ‘Health’, et cetera.
You roam around the starting area (lets call it the Beginner Town). Of course you level up a few times. Perhaps you clobber and kill everything in your vicinity and feel like the king of the world?
Then the beginner protection ends and you confidently venture to a new area (say Purgatory Fields) on the map.
And…you get slaughtered.
Now, add a skill called ‘Coding’, replace Beginner Town with “all the code done till now” and Purgatory Fields with “Google Summer of Code” and you pretty much sum up my experience from the application period onwards.
Essentially, all the coding I’ve done before the GSoC application period consisted of finishing assignments for my courses, copy-pasting code from tutorials and making random small projects.
Code that’s written once, used a half a dozen times at max and then never compiled again.
Contributing to open-source and especially, contributing to a performance-minder project however, is a whole different ball game altogether. The first PR (snippet of code that I wanted to contribute to the project) I made to AstroLib.jl was greeted with a 275 word welcoming paragraph by my mentor Mosè Giordano. And though the situation has become much better, Mosè still easily rebounds all my attempts to write a PR that requires no review or changes (one day though, I will reach that goal!).
Take the most recent PR I made. This was the benchmark of my effort, no external help.
A few quick sentences and nudges from him and a decent interval of time to modify my code later —
The best way I can describe him, is by comparing him to a grand old mage, who can instantly pull out the exact spell required from the dusty tomes (read documentation and experience) to fix what ails your code.
Coming back to the main topic (what was it again?), over the past few weeks I’ve felt a marked improvement in my coding skills. I don’t think about just writing the code that gets the job done anymore. I now actually consider (and use the tools for) the readability of the code, how stable it is and where the performance bottlenecks are, how much memory is being allocated to it, et cetera.
Well, all that and the new habit of judging any person who doesn’t write tests for his/her code (screams in horror), means that I’m definitely improving as a coder.
So yeah, the beginner protection is over and I have to give way more attention to a lot of things about my code now. It’s a bit difficult at times, to be honest.
But the funny part is, I’ve found that working like this is actually fun. I understand my code better now, how it interacts with itself and which are the portions of it that can be improved. It’s an exhilarating feeling.
And this is just the starting days, who knows how much I’ll get to know by the end? (provided I clear all the three evaluations of course)