My First Ever Hackathon Experience in Kargo Excellerate

Irfan Maulana Nasution
10 min readAug 24, 2022

--

Intro

Hackathon is an event or competition where participants are expected to bring a solution, usually digital, for a particular problem brought by the competition in a short time. Participants will solve the problem in groups. The detail of what you will work on can range from only coding the frontend and backend given details of a solution to idea-design-code for the given problem. No specific tech stack is usually required so that you can choose yourself. Depending on the hackathon, you might be required to use a particular language, framework, or API.

Last week I just finished my first ever hackathon. Prior to this hackathon, I had no idea what a hackathon was, and many blogs helped me. I do feel the need to share my experience too! By the way, this will be a long writing since I think that the detail does help when I read people’s blogs. So, I’ll focus on giving the detail that might be important and not concentrate on making this writing short.

Kargo Excellerate hackathon poseter
Kargo Excellerate poster. source: https://www.instagram.com/wearekargo/

Before The Hackathon Day

Before I finally accepted as a participant, there is a step that I took so that i can be here. This chapter, I will describe what is that it took.

Motivation

Ok, I’ll tell the story really from the start. Where did I find this competition? So, one night my brother said to me that there was this competition in his company where the prize was pretty interesting. I, who just recently shifted from data to the software field, feel that I still have a lot to learn in software engineering. On the other hand, I have never joined a hackathon before. Initially, I doubted myself because there would be many experienced/professional contestants after contemplating the benefit of entering this competition. I found it’s just a “win no lost” situation. The only possible loss would be time if I didn’t learn anything valuable here. So, “I should give it a shot,” I thought. I then decided to register, do my best, and let the universe determine the result. But what benefit did I consider that makes me want to join this? Here are some of them :

  • Project Portfolio (Remember that I don’t have much software experience. so it will be beneficial for my career)
  • Monetary Prize (wow ;))
  • Soft skills & Hard skills
  • Competition Experience (which I don’t have much)

Elimination

So after I registered on 1 August, I received an email for the elimination stage on 2 August, and the deadline is 7 August. By the way, I haven’t coded much after my last internship (which ended several months ago). So, I decided to have a coding practice first for several days and just did the hackerrank elimination on 6 August. At this stage, I was given a hackerrank problem to solve in under 120 minutes. I think the time given is enough. Because I finished it around 105 minutes and can recheck my answer after. The problem consists of ten multiple choice questions on data structure and complexity, two coding problems I predict are easy in hackerrank, and two coding problems I predict are medium in hackerrank. On 8 August, I received an email that told me I had passed the elimination and the detail about the main event (the hackathon). I fill out a form to obtain merchandise and confirm whether I will join online or offline.

The Hackathon Day

Hackathon consist not only the “Hack” but also the other part. Here I will tell what I and My team have been through chronologically

Before The “Hack” : Team Building + Preparation

Two days before the hackathon on 11 August, the committee invited me to a group of 10 on Whatsapp. We introduced ourselves, our experience, and our tech stack. On the first day the group created, we decided on our role and the tech stack we would use. We decided to have a strategy meeting on 12 August night. Here we talked about the strategy we will use, information that might be useful, detail of the tech stack to be prepared, preparing the GitHub repository, and also talked with each other. BTW my team consists of :

  • Irfan as Backend
  • Damar as Backend
  • Syafiq as Frontend
  • Bintang as Frontend
  • Ichsan as Frontend

After the meeting, I prepare the tech stack (programming tools) I will use in the hackathon, including Django, Django-rest-framework, Heroku (for deployment), react, REST API, postman, etc. It turns out that reviewing my tech stack isn’t as fast as I thought it would be, and I had to sleep for only 3 hours to be confident enough that I have at least the basics to at least do something tomorrow. It’s 13 August 05.30, and I decide to have a quick 30-minute sleep before preparing to leave. The event will start at 08.30 and google map predicts that the trip will take 45–75 minutes so at least I have to go at 07.15. But just in case (since the location is pretty far and is in Jakarta), I go 30 min early and leave at around 06.45. After all, my team and the judge’s first impression does matter. It wouldn’t give me a plus point if I arrive early, but it will leave a mark if I come late. So there I go, aaannndddd turn out there is no traffic AT ALL, and I arrived at 7.30, which is probably too early. I was the 2nd person to fill the absent. I went inside and took the drink they had prepared. I could use this time to continue my tech stack review, which hadn’t finished last night (or exactly that morning).

For the next hour, I continued reviewing while greeting my teammate or someone I knew who also joined the competition. During this one hour, I found out there were so many participants from my almamater, but sadly there is none from my year. One hour passed, and the MC opened the event, explaining the competition’s details. After that, we were directed by our PIC to the room prepared for our group.

Group + PIC photo. In frame from top left to down right : Ichsan, Syafiq, Irfan, Bintang, Feri (PIC), Damar

The “Hack”

We entered the room, set our laptops, and started to prepare ourselves and our tools. In the room, we are facilitated with tools we might need like white board, an external monitor (TV to be precise), wifi, enough power socket, and of course a table. We started the work by re-reading the problem to understand the problem better. At the same time, Ka Damar began to scribble on the whiteboard prepared in the room. He created the big picture of the database and the API we need to make. Before I realized what Ka Damar was doing. I also did something similar in my notepad. After that, We match what I created and what Ka Damar created. We also discussed our coding convention, the general idea of the API implementation, the general idea of the database implementation, documentation, and other backend things. On the other side, the frontend group is also discussing frontend things. I didn’t catch what they were talking about, but one of them is the style they will use and how the design will be. After the backend and frontend finished with each group discussion. We discussed which feature will be prioritized, anything the other role requires from the other role group, etc. After we understand the requirement, we are confident that this is doable at first. We joke around to lower the tension. It seems like one of us will use the prize money to get married. Everything went smoothly. And at noon, the committee call us to have lunch. We went out happily and confidently, joked around in the lift, and enjoyed our food.

Scribble of the database and API requirement

The food is delicious, the drink is fresh, and life is excellent. But of course, life isn’t rainbow and butterfly :). After our lunch, we continue our work, and the chaos starts. Ka damar is stuck in his part and has to read and try a lot of resources. In contrast, my part went well, but not for long. After I finished my first part. I make sure that part works well after around 60–90 minutes of coding it. I tested it using postman software (which I haven’t reviewed how to use) and failed. The API I created didn’t respond well. I’m pretty sure I tested it correctly, but it failed. I panic and try to ask the frontend to just try it instead. Because last night I created a similar API and used it from the frontend without testing in the postman. So why not give it a shot? Ka Syafiq responded to my request and tested it out. And… it failed. Ok, I’m F-ed. I tried to fix it in panic. It turned out that Ka Syafiq made a mistake in the request. [Breath in, breath out] I relax. Ka Syafiq tried it again. And it failed again :). Ok, now I’m F-ed. I panic while watching Ka Syafiq checking the error response. It is a CORS-something error. “Okay, I know. I read this last night.” I convince myself. I go back to my laptop. I know where exactly to fix it. Google a bit. And fix it. I pushed, and it’s deployed. I told Ka Syafiq to try it again. After several minutes of nervous waiting, the test finally finished. And it failed again :). I collect myself and think of an alternative implementation that would work. While Ka Syafiq checked what is the problem. It turns out there is a mistake in the body format, and it succeeds after a minor fix. I jump and celebrate my little success. Because if it failed, we might not be able to fulfill the minimum requirement because of the time required to find an alternative implementation. So there I go and continue other features.

But of course that’s not the end. After the API successfully works, the backend continues with other features. And the frontend also continues with their part and integrates what can be integrated. The time was tight, and we worked faster. The backend finally finished with its work. But after pushing, there is a little mistake that needs a little fixed. We fix it hoping the main task is completed, and we can go for the bonus task. WHEN SUDDENLY, hell break loose. There is an error here and there. The kind of error that we don’t know where it came from and just try every method to fix. Time is almost up; It’s around one hour before the deadline. The backend gets back to fixing. And the frontend continues integrating. Around the last 30-min, some of the frontend members had already finished their part. We made sure whether PowerPoint would be needed for the presentation. And the answer was yes. So some of the frontends start the PowerPoint. Anything so that we can have something to present. The backend is still trying to fix the backend to ensure it can be at least working and presentable later. In the last 15-minute, the backend finally finished. The frontend was unable to complete 1–2 requirements because of the lateness of the backend. Since the frontend cant integrates some of the features, they just clean the UI up to make it presentable even if it didn’t work. And boom, it’s 17.00. Time is up, hand in the air. The atmosphere leaving the room isn’t the same as the last time we left the room. Everyone is done and just reassuring each other that “it’s ok,” “we do our best,” “at least it’s kinda finished,” “it’s no one fault,” etc. We clean up and head to the first floor to gather for the presentation session.

After The “Hack” : Presentation

On the first floor, we sit together and relax ourself. Try not to overthink what we can’t change any more. We still have the presentation. Seeing this, I thought, “maybe if we can get a good score in hard skills, maybe we can push it in the soft skill?”. So I told my teammate that we could still fight this presentation. I propose to my teammate to be the main presenter hoping that my team can win the audience’s heart and the jury since I have experience in public speaking from toastmaster ❤ (yes, I’m promoting toastmaster guys ;)). We discuss our strong side, like how we clear up the problem before we code, how we communicate, etc. Because we believe that the code is not the only important thing here, we go with a list of what we thought was a plus point of our team works. And of course, we also prepare a list of our code’s strong points.

“Anyone nervous can raise their hand?” I open our presentation. “Yes, please raise your hand. Anyone scared with the result?” “Ok, you can take your hand down now” “Take that,” I say. “Take that bad emotion. Seriously, bad emotions often teach us a lesson. And that is also our team’s common goal in this competition. We have our own goals, but one common goal between the 5 of us is to learn something. And today, we definitely learned something.” And the presentation continues with the introduction and the main part of the presentation. We successfully delivered our point even though we took longer than the allowed time for the presentation. After our presentation, the MC first appreciated us by jokingly saying, “Irfan, come and take over the MC already,” she said. It continues with the jury’s appreciation for our presentation and our project. After that, several questions come. The team member who is responsible in the field of the questions answered. Closing our presentation, we walk back to our seats. Then we have a little celebration for our success presentation.

Conclusion

Ultimately, it can’t be denied that we are a bit regretful we can’t finish all the requirements and the bonus requirement. But it’s been fun and nerve-wracking. We appreciate each other, have dinner and go on our way. The announcement of the result will come out in two weeks.

I definitely learn a lot here. I learn that not all competition feels like an exam. I learn what a hackathon is. I always believe teamwork, communication, bond, and understanding are essential, but this competition has reinforced that belief. I never really joined a competition during my university years, and I kind of regret it. I definitely would recommend students to try it because this one is fun.

And much appreciation for Kargo, who organize this event. I enjoyed the time I spent here. I enjoy networking here, the food, the facilities, the challenge given, the welcoming from the committee, etc. And I really amazed by the proffesionalism and punctuality of the event. The speed of the response in every stage from register to elimination, elimination deadline to acceptance email, etc.

--

--

Irfan Maulana Nasution

Your everyday software engineer. Ex average student. Always striving to be excelent and what im working on. And this is where I share my thoughts and experience