Thursday, June 20, 2013

Dos and Don'ts for winning a Hack Day (and how I won it)

One of my greatest accomplishments this year is wining the Hackday at Netflix!!!!

Even thinking of the idea of winning at first sounded a bit too good to be true, since (a) I had worked at the company for just two months at that point (b) it was the first time I was participating in Hackathon or Hack day type of event.

As many people in software industry, I had heard a lot about Hackathons different companies held in Silicon Valley and seen some pictures of many folks staying overnight to finish the most ambitious 24 hour projects ever! So now that I finally moved to Silicon Valley and heard about the initiative my employer was organizing, I couldn't pass on it (although two months is not enough time to learn about the internals of such a large company as Netflix). I devoted a day to this event, learned a lot, met new people, worked on a great idea, and won the Hack day!

Here is the list of dos and don'ts from my limited, yet successful experience.  
  1. Come up with idea
    • Brainstorm about things you'd like to see added to the product, it really doesn't have to be specific to your project. Rather think as a customer of your own product, what would you like to see? What is the missing feature?
    • Another approach is too think from your viewpoint as an engineer, what is it that requires tedious effort? How to make your life easier? Is it maybe your build system? bug filing? IT ticket opening? Chances are others experience the same problems and would be very happy to see your hack implemented 
    • Talk to others in your company and team, most people have really interesting ideas. Due to competing priorities not all ideas will get implemented, but it will help evolve initial idea
  2. Present your idea and get feedback
    • Don't waste too much time on building 20 page Powerpoint presentation. The best way would be to show a prototype, if it's a UI project use Gimp, Paint, or my favorite tool Balsamiq Mockups
    • Send your idea to your peers, to any distribution list that is related to hacking, maybe someone else will join you. 
  3. Keep it simple
    • You have only 24 hours to implement your idea and very short amount of time to present it, so be careful not to be to aggressive with the concept
    • It's for the best, and increases the chances to win, if idea is straightforward, and many people including the judges of the competition can relate to it. So keep it simple.
  4. Join a team
    • If you don't have a killer idea, and you see a team that has one, join it!
    • Or better yet work with people you haven't worked with before. It will give you a chance to meet new people and likely work in a team with diverse skills (and maximize your chances to win). I belonged into this category in Spring '13.
    • Divide work and stick to deadline. For example, plan to finish implementing web services by 8PM, binding it to UI by 10PM, and adding new feature until the sunrise next morning. Don't start working on features until web services are written, as you may run out of time.
    • Be flexible and prepared to let parts of the concept off, the time is short and pressure is on
  5. Learn something new
    • Volunteer to write a piece of project that requires a skill you haven't used recently
    • Or skills you haven't used at all (no extremes although, it's not a good idea to commit to writing objective C component if all you code in is PHP)
  6. Have fun!
    • The last the the most important point. Enjoy what you are doing and don't make winning your biggest goal
    • Give a fun and interesting presentation.

Happy Hacking!