We all know how important practicing is for learning crafts and honing skills. You become a better chef by cooking more often, a great painter by drawing and a skilled programmer by writing more code.
What software engineers do -put simply- is solving real world problems using technology. To be a better engineer is to get better at solving problems.
One of the ways you can apply what you've learned is through participating in coding competitions (and there are a lot, annually).
Google for example organizes many competitions every year like Kick Start which is in 8 days, Code Jam that starts in 14 days, Google Summer of Code during summer (applications open next month, keep updated) and finally Hash Code, I will be sharing with you my first experience with this last one.
What is Google Hash Code?
Google Hash Code is a programming competition between teams (2 to 4 people a team) from all across the globe (over 97 countries).
You are given a problem to solve in 5 hours "modeled off a real Google engineering challenge" as Google says.
- 1st place: 4000$ USD
- 2nd place: 2000$ USD
- 3rd place: 1000$ USD
Along with some Google products to the top rankings.
Who can join?
You must be at least 16 years old to participate in the contest, and at least 18 years old to be eligible for the final round.
A friend of mine approached me a month before the registrations to participate with him and a friend of his in Hash Code, I had completely forgotten about it at that time, I got so excited and immediately accepted to roll on with them.
Sadly enough, final exams were a week after Hash Code but I regret not giving preparation for the competition enough time nevertheless. The only thing we did to prepare was meeting up a week before the competition to practice past problems (they're easily found in Hash Code's website).
As we tried to come up with solutions to last year's qualification round problem we got very overwhelmed by it, we knew it would be a challenge obviously, but did not expect anything near this difficulty. Still after 4 hours of brainstorming and discussing possible approaches, we did not move an inch and it was depressing, so we just called it a day and went back to studying for school.
Fast forward to the competition day (a week later), it started on 6:30 PM (if I remember correctly) here in Algeria. We met up at my room, installed our setups and prepared everything needed to kickstart and waited for the problem statement excitedly.
We downloaded the PDF and started reading through the 10 pages (it was even longer than last year's which were 5) and it took as around 35 minutes to "absorb" it. Each one of us started thinking through some possible solutions and how to implement them for an hour-ish long. What was weird and funny though is that we all found ourselves forgetting the problem statement mid-way and that costed us a lot of time perhaps due to the many variables, circumstances and conditions to take into account but surely for our lack of practice.
We discovered that one of the test cases given through an example is one of the problems' inputs, so we copied the results of the example's output and submitted it, 1002 points received for that. But guess what, time was already up haha, the scoreboard was frozen, so our score was 0.
So basically, we yet again did nothing, not even a single implementation of the ideas we had.
So why am I telling you this?
I shared my experience with you to emphasize that you do not have to be good at something to try it out, everyone starts somewhere.
If you stumble upon any programming competition, join it immediately without any second thought, figure things along the way and enjoy yourself!
Don't question whether you know the technology X or have the skill Y, join to learn from the experience and have fun!
One thing I sure took away with me is feeling extremely stupid, and I am happy with that feeling because it is humbling, it is a good reminder that there is still a long way to go.
That is what I love most about this field especially, learning never ends, it is part of the journey. You will always remain a student!
Don't feel intimidated by competitions.
The worst thing that could happen is to get a score of 0 (like yours truly did), learn about this type of competitions, and come better prepared next time (like I sure will)! Now that doesn't sound so bad after all now does it?
Don't ask yourself too many questions about it. Just join!
You have too much to lose if you don't.
You most probably will meet new people, get exposed to different technologies, learn a thing or two and on top of that, have fun!
Thank you for reading!
That was it ladies and gentlemen, I hope you enjoyed the article!
Follow my blog and my Twitter for more!
Have a nice one!