Why students in college should participate in Google Summer of Code (GSoC)

0

Hi everyone,

Today’s post is targeting students in college. The main idea is to sell you the idea of participating in the Google Summer of Code program that Google host every year since 2005. Oh and by the way, this is just free publicity, the program does not provide any money to me in order to get a post out of me! I love the program, after all, I’m an alumni!

What is Google Summer of Code (GSoC)

For starters, as a student, you must ask yourself, why would I want to participate in something I’m not even aware of, right ? Well indeed, that’s a good question. So, in a few words, it is an open source program hosted by Google during the summer break to provide the chance for students to truly experience software development and get a few bucks of out it.

A vast number of open source organizations are providing one (1) to many project ideas that a student could pick up, develop it during the summer and deliver before the end of the program. When you’re assigned to a project, you’re given a mentor who shall be there for you. By being there for you, I mean they will review the code you will deliver through a pull request and answer your questions whenever you have some. Usually, organizations will have a way to communicate instantly with the core maintainer such as a Slack channel.

Finally, it’s a remote position. When you given a project, you’re going to work in your home country and chances are that your mentor is located in an other one. In this day and age, this kind of situation isn’t problematic. I mean, a lot of companies out there have distributed team members where they aren’t even on the same time zone, but they still make it work!

Why participate? Is this a real job experience?

Again, very good questions coming from students! So, no, this isn’t a real job experience. Albeit it isn’t a real job experience, you gain so much from the program that it doesn’t matter. You get the chance to work with something that will either be completely new and thus, gain experience and new skills at the end of the program or, you can pick up a project in a technology stack that you’re accustomed with and simply add an original project to your portfolio.

Oh, and also, you get a referral to apply at Google, if you manage to complete your summer project successfully! It only works once, but you can use that referral up to 3 different positions within the company!

How does one apply to the program?

You don’t have to be in computer science or in software engineering to participate, although, it helps to have experience in software development. You need to demonstrate that you able to complete the project and also, that you’re passionate by software development.

Each organization can have their own personal pipeline to assess the individual skills of the people applying to their summer projects, and that’s necessary due to the sheer number of students applying every year and that number since to grow exponentially every summer! Some organization could ask to interview you online when the competition is fierce for top notch projects, some could ask for a basic code fix in their code, it all depends on the context! It basically comes to select a project and writing a presentation of yourself to showcase

  • Who you are
  • Why you’re interested by the project
  • Why would you be the perfect individual to take on this project
  • A brief summary of your industry experience related to the project
  • What you expect to be able to do in the summer
  • Your summer timeline for the project
  • How much can I expect to make through the summer?

Closing words

So, I hope this little incentive piqued your interest and pushes you to apply this year! By the way, you do not have to take on the most difficult project, take one that resonates with you because that’s where you’ll be able to shine. Oh and before I forget to mention it, students can expect to get up to 5500$ US during their summer!

Learn more on their website.

P.S If you want to learn more about the project I did while I was a student, I welcome you to go on my blog post on the topic and my Github repository where the code is located.

Kevin

Advertisements

3 Tips & tricks for Kickass Developers in 2019

0

Hi,

For those looking for new ways to kick off 2019 with a bang with your .NET skills, keep on reading 🙂

1. Leverage more LINQ in your C# code

Lately, functional programming has been a really hot and trending topic. C# is becoming more of a functional programming language to stay on par with the industry trends and one of the feature that it provides to developers since .NET 3.5 (2007). It’s been then for over a decade and truly makes your code more readable.

With LINQ, you can express directly your intent when iterating through your collection instead of using a looping construct. When looking at a Where statement, immediately developers will understand that your statement is meant to filter data as opposed to writing the equivalent code in a loop, you need to look inside the loop to understand what’s going on.

2. Document your code as you type it

Something I’ve witness so much in 2018 was the lack of documentation in code. And let me tell you, 3 to 6 months after writing your own code, if you don’t maintain it for a while and it is poorly documented or even, not documented at all because you think you will remember, that’s wrong.

Writing documentation for your code shows deep understanding of your product and respect for next people in charge of maintaining the code and adding more features to it. When you need to do a knowledge transfer, it’ll be a breeze because the documentation is already there to back everything you have built from the ground up. More to the fact, if only you touch that code, you will be thankful for helpful documentation whenever a bug hits the system and you’re responsible to go through those lines and figure out where that nasty logical bug is hiding and finding a way to get rid of it.

3. Write your methods side-effects free when possible

Your code should not have the need to create side-effect. From a certain point of view, your code should strive to always generate the same output with the same input. What does that mean? It means that let’s say you create a method to increment a counter every time you click on a button in a user interface, you have in fact a mutable state that’s based on user input. So from the first time I click on button to the 100th time I click on it, I shall never have the same output since the state keeps being updated.

I’m not saying to never write mutable code. That’s not what I’m trying to share as a tip. Mutability is unavoidable, but it can be contained and isolated. Most of your code can be pure, as in stateless. You can make sure to have readonly fields and properties. You can also provide APIs that give you solely readonly collections that you can’t update. Instead of updating a meaningless field in your class that’s used only in a single method of said class, simply make it a local variable of a method and update it there. From the client’s perspective, if your method has within itself mutability, but the same input generates the same output, you’re golden 🙂

 

Kevin out.