Hackathons are a great way to challenge yourself in many areas - they require passion, knowledge, speed, agility and teamwork. SICEF did a great job organizing the first Hackathon in the Southern Serbia, in Nis.
When my friends and I heard about it, we knew we had to participate. We filled an online form, choosing our team’s name to be “Bazinga”, and waited to see if we will be chosen to participate. A couple of weeks later, we got the news that we have been invited, and it was the time to prepare for our first Hackathon!
The Most Important thing first
The most important thing is to get your motivations straight. It may be the first prize, the learning process or having a good time that is your team’s main reason for participating, but you need to agree on it. Our main motivation was to create something. At the end of the time race, we wanted to have something that we can look back on and think - we created this in 24 hours. Sure, we also wanted to win, but it wasn’t the only thing on the list.
Why is this so important? Well, if you have a group of people working on the same goal but having different motivations, problems and conflicts will surely arise. The best way to avoid that is to agree on the common motivation before the start. And the trick to that is in getting over your ego.
We met a couple of days before the hackathon, to agree on which technologies to use. We agreed on Java Spring REST API and AngularJS front end. Those were our respective strengths. We talked about what we needed to bring there, like papers and markers for sketching, a portable 3G modem if the connection to the Internet was slow due to everyone using it… We also agreed on using Git as a version control system. We then devised a timeline - we decided how much time will be spent on different tasks.
- 4 hours - For the idea and planning
- 1 hour - For the UI design
- 14 hours - For the implementation
- 3 hours - Final polishing and planning a presentation
- 2 hours - Resting and other activities
The problem of sleeping never came up - none of us seemed to think that we needed sleep.
Sculpting the idea
The clock started ticking - and we needed an idea. This Hackathon’s goal was to make an app that would make studying easier for students. We agreed that each of 4 of us would take a paper and write down some ideas - and the time limit for that was 5 minutes. Then each of us would present his ideas to the rest, one by one, and we would discuss each idea with attention. The very important thing is to let everyone speak their mind and closely examine and consider each idea. Don’t interrupt each other as you are presenting ideas. Be positive and understanding. Focus on finding strengths and weaknesses of each idea and take note of them. This is crucial - to have a rationale behind your arguments. You can’t say - “I just don’t like your idea”. You have to be able to explain your stance. On the other hand, you don’t get to be offended if the team doesn’t like your idea. It’s not personal, and there’s no time for being petty.
Notice how Aleksandar has the Flux app running. This is a no-no for a hackathon. It makes you sleepy!
I think this was where we really shined as a team. Not having any prior experience in this kind of situation, I was worried how this team excercise would turn out. It ended being the most enjoyable and productive discussion that I had in a long time. It’s really incredible how everything kind of flows when there’s a group of people dedicated and passionate about a goal, with everyone pushing forward as hard as they can.
While we were discussing ideas we noted good ones on the blackboard. The discussion was long and opinionated, but in the end we had a solid idea that we liked. It was fairly complex, but we were psyched and believed that we could finish it in the timeframe. We started to plan it, drawing diagrams and going into details with functionalities. This was the best part - the creative process. It was so much fun and we were very enthusiastic about the whole thing.
When we had almost finished planning, and were about to start the implementation, the judges came to check up on us. We imagined they were our clients and we presented them with our idea, all happy and excited. But they didn’t seem very impressed and thought that it was missing the subject of the hackathon a bit. When they left, we found ourselves with our enthusiasm killed and drained. So we decided to ditch that idea and start working on another one.
That is a very important lesson. Be agile. Be prepared to change ideas and plans constantly. Nothing is carved in stone. Early feedback is important. Listen to your clients.
We started looking into our other ideas that we came up with while brainstorming. 5 hours had already passed, and we haven’t started coding yet. We needed something fast. Again, there was a discussion on several ideas, but none seemed to be that great. Then - we decided to give it another 15 minutes and if we didn’t come up with something better, we would choose anything, just to start working. And that’s exactly what happened. We choose one idea, some of us liked it, some of us didn’t, but we agreed on it and started working. Everyone embraced the idea and worked hard on it like it was their own. There is a valuable lesson here - there will be many situations where not everyone agrees on a decision, but you need to make a compromise and decide on one course of action. After that - you can’t go back and question it. You may not like it, but you must pursue it like it was your own opinion. Because doubt will only slow you down.
Implementation - the easy part
So, we had our new idea, which was not that great as the previous one (in our opinion), and seemed quite small in comparison. It seemed so simple, with only a handful of features, and we estimated that we can have it implemented way before the hackathon ends - because it’s just that trivial. The enthusiasm was a bit faded because we felt that this app would be much less valuable when completed than the previous one.
Nevertheless, we started to plan the implementation of the app. We were getting tired now, after 6 hours straight of thinking and heated discussions. We finished planning it rather quickly because it was such a simple idea. Not many diagrams to draw on this one. Then we got to the coding part. Everyone did their job, everyone worked hard and was dedicated, and we, of course, found out that this small idea of ours wasn’t so easy to get done after all. There were many nuances and small details that got in the way, that we didn’t predict when we estimated the time to finish it. Hours passed and we struggled with tiny problems - but they were building up, and we were more and more tired but never giving up. As time passed, we were winning the small battles one by one, and the victories accumulated. The modules were coming together like a puzzle, with the whole picture slowly emerging from the seemingly disconnected parts.
With 5 hours left and many coffees and energy drinks in our blood, we had a nicely working prototype that we needed to polish to make it presentable.
Now this was the fun part - we could look at this tiny app that we built, note all the difficulties and annoyances that we had to deal with, and see it working. It was like magic. All the stress and energy and tiredness felt justified at this moment, and it felt amazing. But we knew that this was not the end.
Although tired, we worked hard against our minds slowing down. Our brains tried to trick us into falling asleep, but couldn’t. Sleep was not so alluring because we knew we had our goal to finish, and our energy and enthusiasm were refreshed after seeing our small app working.
Near the end of the hackathon, when we almost had everything done, I took a 30min nap and woke up without an alarm, pretty refreshed. Dusan took a 2-hour nap. Aleksandar and Ivan did not sleep at all. I find this amazing - being so emerged into creating something that you don’t even need that much sleep.
This ended up being our actual timeline:
- 6 hours - For the idea and planning
- 0 hours - For the UI design - we just made it up as we went
- 12 hours - For the implementation
- 2 hours - Final polishing and planning a presentation
- 4 hours - Resting and other activities
It turned out we did a pretty solid estimate of the timeline, having in mind all the ups and downs that we went through. We underestimated resting and other activities in our initial guess. It turned out that we needed a lot of breaks in order to stay focused and not burn out. Take a walk to get some coffee. Go eat something. Chat with people. It helps in managing the tiredness!
Now, the presentation was the trickiest part. After 30 hours without sleep, we needed to do our best to present what we have done in a great way. We had to find good selling points for our app, and convince the judges and the audience that we crafted something amazing. The fatigue was so overwhelming at this point that we just wanted all this to be over. But we kept pushing. The excitement of waiting for our turn to present and listening to other teams presenting their work did activate our almost empty energy reserves, and we got ready to show everyone what we made in the last 24 hours.
The presentation went great, Ivan and Dusan really made an awesome pitch. We showed a demo of the app and incorporated the whole thing into a story-like talk. After the presentation, it was question time, and other teams had some tricky questions for us, but again, Dusan and Ivan gave great answers. Then we needed to wait for about an hour before the winners were announced. We felt pretty good about the whole thing, thinking we’re surely going to make it into the top 3.
When they started announcing the winners, it was such an exciting and tense moment. There were 10 teams, and the speaker was announcing each one, starting from the last place. Before the speaker would announce a team, my heart would start thumping - will it be us? What place is that? How many teams are left?
The speaker announced one team after another, but Bazinga was not one of them. At some point Ivan said - “Guys, we are definitely in the top 3!” because he was counting how many teams have been announced. Then after two more teams, we realized that we have won! They called our team’s name last and started congratulating us. It was an amazing moment, full of euphoria. It really felt great, having something in which you’ve put so much effort validated in this way.
The whole experience was a great adventure, and although very tiring, it felt well worth it. We had fun, worked hard, learned many things along the way, but most of all, the value of being flexible. And whatever you have planned, know that it will take a lot more time than you can imagine, so factor that in. It took us twice as much time as we have estimated to implement this very simple app.
Ivan said, “Man, I’m never doing this again!” and we all laughed.