Saturday, June 21, 2014

What on earth is a Hackathon?

It's Saturday morning now, and I've finally recovered from lack of sleep while participating in the quarterly Hack-a-thon that CareerBuilder hosts. First off I have to say, I work for an AWESOME company and am so thankful they basically let me take two days off from my day to day job to participate with the Site Technology team!

Since many of you reading are my friends and family that probably have no earthly idea what a Hack-a-thon is, let me quickly explain (or you can watch the Hackathon video from last quarter - highly recommended)

If you're choosing to punish yourself and read through my description, here goes! A Hack-a-thon is very popular in the Software Engineering community and is basically a concept where Engineers come together to "hack" (code, program, engineer) on something. Sometimes they take place over the course of a 24 hour period such as CareerBuilder's, or they can also take place over the course of a weekend. Hack-a-thon's can also take place within individual companies (especially popular in Silicon Valley), or any other type of event hosted by a college, organization, or technical community where people can come from all over to participate. CareerBuilder holds a Hack-a-thon once a quarter where from 9 am Thursday until 9 am Friday they give the full Engineering staff 24 hours to work on anything they want to and CareerBuilder provides tons of food, drinks, and games to help power people through. While some people choose to work on fun projects, we also get ton's of great ideas for our products from these events (I'd like to say my idea will hopefully be used as a new feature!)

So enough on that - as many of you know I'm an IT Recruiter at CareerBuilder. I sit with the developers and I know how to write a little code, so they let me participate. I thought I would take the time to share my experience of the 27 or so hours starting at 9 am Thursday all the way through presentations which lasted until Noon on Friday. I won't document hour by hour, but I'll share some of the cool things (you can also check out my Twitter feed for more cb_Shaun or check out the handle #cbhackathon)

I had a good idea for one of our product lines, but obviously did not have the technical "know how" to actually implement it. Thankfully two of our Engineers were nice enough to let me work with them; one of them sits in the Norcross office with me and we also partnered with one of our Engineers based in France.



8:30 AM Thursday - Joseph and I had to make the most of our time working with Clement (who is like 5 or 6 hours ahead of us in France) so the first thing we did was jump on a quick video conference to discuss our game plan of implementing this solution. I quickly learned how much I DO NOT KNOW :)   I knew that there would be a lot of code I would not be able to help with, but I think I hoped there would be more I could research early on to be able to help with. Before we got too far along though, it was time for breakfast!


After breakfast, I spent my morning hours working on a brief PowerPoint for our presentation for Friday. Joseph and Clement were busy researching how to implement the idea and putting together the backbone of our feature. Learning Point #1 - As a Software Developer, you first spend a lot of time researching other people's ideas and solutions, and then you actually begin to code. I guess I always thought they learn the programming languages and then instantly know how to begin typing out the code. In actuality, a lot of their job is research and then learning how to use their knowledge to implement.

11 AM - First game of the day - Viking Chess out on the lawn. If you've never heard of Viking Chess, which I hadn't either, you can read up here. I didn't sign up prior so I wasn't able to actually play, but I did enjoy a few beer's and some sunshine out on the lawn behind our building.


As I mentioned, Joseph and Clement had a lot of work to do getting the backbone in place that was WAY above my level of knowledge or understanding, so most of the morning/afternoon went by in a fairly uneventful manner for me. I tried to look over Joseph's shoulder and he at least explained what he was working on. They have "rev up" stations around the floor where you can get candy, snacks, energy drinks, etc and they provided us a buffet lunch at 1pm. I also got a few games of Ping Pong in although I'm embarrassed to admit I've still yet to win a single game! Learning Point #2 - Jesse, one of the Managers that is a top Ping Pong player at CB, finally taught me a little about how to spin the ball and different attacks to beat different players - hopefully soon I'll finally get a Win!

4:15 PM - A good chunk of the business day is gone, and I've yet to get to contribute to the actual coding, BUT we are finally starting to come along. Joseph and Clement have come a long way, and we have one piece of the ultimate project done, we are successfully texting (I can't share our ultimate idea as I hope it is a feature we will actually implement)


5:00 PM - The day has flown by and I'm sure many of our Engineers brain's are fried by now! We got stuck on several occasions, but thankfully Clement & Joseph are very smart and kept things moving along. Now it's time for the Happy Hour and some more evening games! CareerBuilder brings in Peachtree Growlers and catered food, and we get a few hours to relax & have some fun!


6:00 - 8:00 PM - Evening games on the lawn. Yes I'm sure many of you reading this (including my brother that actually sent me a text saying so) think the day is all fun and games :)  For me, quite a bit of it was because the technical aspects were over my head. However, for many of our Engineers, they've been at it for 8 hours now and need a break to refresh! My work was still yet to come a little later in the night.

The evening games included Water Balloon launchers, Angry Bird launchers, some video games, and a human size hamster balll track.



My first time I was horrible at the Hamster wheel, but I got the hang of it the second run down the track. The biggest surprise for all of us - it's a TOUGH workout! Run down the track once or twice in that thing and you are absolutely worn out. All in all it a lot of fun, but now it's time to head back inside.

8:00 PM - We are finally at the stage that I can begin to contribute! This is what I've been waiting all day for (and really what I've been waiting for ever since March when I witnessed my first Hack-a-thon) and I'm ready to start coding. Joseph was able to assign me a few tasks that I could start researching in order to learn how to do; the first being how to normalize a number.


What does that mean you ask? Basically we needed a number to be in the following format +1XXXXXXXXXX. However, we might receive numbers in any number of different formats including (123) 456-7890 or 123-456-7890 - you get the idea. So I had to figure out how to take in the number provided, remove any special characters that might exist, check to ensure it was a 10 digit number, and then add a "+1" before it. Here is a screen shot of the ultimate code I came up with, written in PHP:


I also learned the basics behind how to use the Twilio API and was successfully able to send myself a text message via running the code from my desktop! Learning Point #3 - Just about any code you need to write exists somewhere, you just have to know what to search for and how to implement it.

10:30 PM - Starting to get a little quiet around the office as not everyone stays the full 24 hours, and a lot of people have gone home. At this point, we've started working on the User Interface (how it will appear to our user) and this is the type of stuff I can actually help with! Joseph found some good examples to work off of, and he gave me the task of figuring out how to use it. Naturally it takes me a little longer as I try to research and understand the code, but HTML & CSS are the two languages I feel most comfortable in at this point.

2:30 AM - I've been at it for close to six hours now, although I have taken some breaks for the occasional nerf dart war, midnight pizza, and another game of ping pong. I've finally got a working prototype of how this should look for our end user. It doesn't actually handle the data yet, but provides the needed code for Joseph and Clement to work with. It's probably something our Engineers can figure out in like 30 minutes, but I'm feeling pretty proud at this point!



5:30 AM - Let me give a quick recap at this point. We've been at it for about 21 hours now (At least Joseph has :) More like 9 1/2 hours of actual coding for me). I've probably had 6,000+ calories between breakfast, lunch, candy, dinner, late night pizza, etc. I've had I don't know how many cups of coffee & energy drinks, and several beers. I'm now officially exhausted & hardly keeping my eyes open, but we are definitely coming along with our idea! Joseph is an absolute beast powering through to this point & Clement did a ton for us earlier on. Since he's hours ahead of us, he did take some time to sleep through the middle of the night our time. Learning Point #4 - The Energy Drink industry is kept in business in large part due to Software Engineers


6:30 AM - We have a working prototype at this point. There are a few things we'd like to clean up and make look better, but Joseph and I are both exhausted! We agree on a two hour nap and back at it at 8:30 am. We know we aren't the first to present, so we'd have a little time to clean things up. I find a nice huge bean bag chair near my desk and semi-sleep for about two hours.

9:00 AM - I enjoyed my nice two hours of light sleep although I was right outside of the office of the CTO & CEO and they had an early morning conference call, so that was going on from 7:30ish on. At 8:30 I got up, cleaned up a little and brushed my teeth, and headed upstairs to the Alabama Conference room for breakfast and to get ready for presentations to begin. There were a total of around 35 presentations (each given 5 minutes or less to present) and we were around number 21. Clement was able to do some last minute clean up and everything looks great!


12:00 PM Friday - Presentations are done! I feel our presentation went really well and I'm anxious to see how everyone votes! Everyone is given three votes and you can vote for what you feel are the top three ideas (or just your favorite), and you are allowed to vote for your idea. Some people vote on the silly games, but all in all I think some of the top ideas definitely won out. Unfortunately our project was not in the top 3, but I do think we finished in the top third of overall projects. My highlight was the CTO voted on our project and even told me I should get to raise my hand twice for it! Since I'm a recruiter and not a programmer, I think everyone was pretty impressed with my idea overall and the implementation I was able to help out with. All member's on the top 3 winning team's each win a brand new iPad Air! Hopefully I can win one in a future event :)


12:30 PM - Finally headed home to get some much needed sleep! It was a fantastic experience and I'll anxiously await the next event in September. I learned a ton, had a lot of fun, and got to work with and see the work of some very talented Software Engineers!


No comments:

Post a Comment