Hackathon: A First-Timer Experience
Hey, everyone! Ray here back with another update at my Hashnode!
It's been a while since I last posted anything here as I was mostly preoccupied with internship matters. Now that I'm on my semester break, I have a few writings planned out to make full use of my free time.
For this post, I would like to share with you guys a detailed look into arguably one of the wildest roller-coaster rides of my entire student life: my first-time experience in joining a hackathon!
What is Hackathon?
A hackathon is an event, usually hosted by a tech company or organisation, where programmers get together for a short period to collaborate on a project and solve problems. The participants work rapidly and often work without sleep to achieve their tasks, as the events generally only last 24 hours or take place over a weekend.
I personally first came to know about the existence of hackathons back when I was a first year in my first semester. There was this huge fuss over this hackathon competition called A.I.ckathon which was organised by Universiti Malaya. Our faculty students and lecturers became part of the organising committee. It was a huge competition on a nationwide scale, and it was held in Johor. I remember my peers managed to win first runner-up and got RM5,000 prize money as a result. Keep in mind, these people are my peers, first years!
I personally always felt somewhat intimidated at the prospect of hackathons in general. The competition seems exclusive and is out of my league. Given my skill sets then, I deemed myself to be unworthy and unqualified to even participate in it, let alone to win. It takes a lot of guts, expertise and perseverance to be able to code for 24-48 hours straight. Juggling between sleep deprivation and stress. It doesn't even help the fact that the imposter-syndrome-ishpart of me is making me feel less confident in my ability.
Why Now?
So, why did I decide to join the hackathon now?
A few reasons:
1. Training for Final Year Project (FYP)
In case you don't know, I'll be taking my final year project (FYP) starting next semester alongside my dear friend Faidz Hazirah a.k.a. my partner in the Dell Virtual Hack2Hire hackathon. We had a history of working together on group assignments since we were in our first year. But because we went into separate internship programmes for the past 6 months, I figured the two of us need to rendezvous on the new skills we learnt and have a little warm-up session before our FYP commences. We thought that the hackathon would be a good exposure for us to test our teamwork and problem-solving skills. After all, team dynamics are extremely important for FYP and you will see how it plays a crucial role in our hackathon journey.
2. Test New Skills
During the course of my 6-month internship at Infront, I was given the golden opportunity to learn and apply the Django framework extensively by directly working with actual projects (one internal, the other external). This skill in particular proves beneficial for not only FYP but also my journey to becoming a full-stack developer. Nevertheless, it occurred to me that rather than directly putting this newly acquired skill to the test during my FYP, why not do so earlier by joining a hackathon?
3. Final Chance
Since I'm doing my FYP soon, that also means that I'm left with only 2 semesters for my undergraduate study. Writing that honestly makes me feel so old. But what that means is that I won't have much chance to involve myself in a hackathon once I start my FYP. I desperately want to tick that box off the bucket list before I graduate. It's now or never.
How It Began
The story began sometime at the end of last year when a friend of mine from UNIMY tweeted that he got a job offer from Dell Technologies Malaysia after joining their Hack2Hire programme.
We came a long way since our foundation days in PASUM as both of us were programming tutors then. So of course, I was so proud of his achievement. Seeing a friend of mine being able to secure a job at one of the very few well-known Silicon Valley companies having branches here in Malaysia motivates me to join one in the future, in hopes of securing one for myself.
At the time, I didn't know when the next Hack2Hire programme will be organised. I thought it will be months to a year before they hold another one of these hackathons. Little did I know that it was way sooner than expected.
Earlier this year, I was browsing through my SiswaMail student mail as part of my daily routine. That was going my eyes stumbled upon one email, in particular, sent by my faculty's internship coordinator:
Words cannot express how excited I was when I saw the email! I immediately approached my friend Faidz and asked her if she was busy during the competition dates. After all, we're nearing the end of our internship which is packed with final report and logbook submissions as well as project handover and knowledge transfer.
After deliberations, both of us confirmed that we can make it for the competition dates and will be registering as a pair under the team name Raidz, a compilation of both of our nicknames (Ray + Idz). There was an option in the registration form for us to allow other team members to join our team to have a full 4-member team. However, as explained previously, we decided to challenge ourselves by registering as a 2-member team instead. Incredibly bold move considering that it's our first hackathon ever!
The Prep
A few weeks after we submitted our registration and a week before D-day, we attended the briefing, Q&A and problem statement release session via Zoom by the organiser. I remember asking for clarification from Dell on whether the two of us qualify for the grand prize which is the permanent job offer should we win (bold of me then to assume that I have a chance of winning but hey, no harm in asking am I right?). Thankfully, because our last semester ends around Jan/Feb 2022 which is within the 1 year time period that they are willing to consider, we qualified for the permanent job offer.
The organiser also stressed that we must not prepare any coded prototypes beforehand and that it's imperative for us to turn on our webcams and share our screen throughout the duration of the competition to ensure that we are the ones coding the prototypes on the spot and not copy it elsewhere.
Unfortunately, I don't think I'm allowed to share the problem statement for the hackathon here. But basically, we need to develop an event management system for Dell's induction program for newly-hired fresh graduates known as IT Development Programs (ITDP).
Right after the briefing, I set up a Discord server as well as Trello for our prep discussions and task management. The latter in particular proved most useful and was one of the key highlights and advantages that our team has over others (will explain further during the presentation part). Both of us had past experiences in using Trello for our group assignments, so we were no strangers to how it works.
We had a total of 7 near-consecutive meetings after the briefing and before competition day, mainly to discuss the modules/components that we want to implement, the database structure or ERD, the front-end design ideas as well as teaching Faidz some Django basics for her to integrate her front-end design to the project. We also took the liberty of drafting all the possible questions to direct to our mentors (each team will be assigned at least 1 mentor/coach to help you out). Because there are only two of us in the team, we split our roles through the ends of the stack. Faidz will be in charge of front-end design and development while I'll be in charge of back-end i.e. database design and server-side functions configuration.
I cannot emphasise how important it is to have preliminary meetings with your teammate(s) before the actual competition. Even though you cannot code anything in advance, that doesn't mean that you cannot test out your ideas. We only have < 24 hours to code a working prototype, so any form of preparation will make a night and day difference in terms of your performance during D-day.
D-Day 1
Morning
Fast-forward to competition day, and to say that I was nervous is a huge understatement. I can barely sleep the night before out of sheer anxiety. I remember during our final prep meeting the night before, Faidz expressed her concerns that we might screw things up. I told her upfront that we will screw things up regardless, it's just a matter of how fast we solve them. Especially when we are newbies.
The day started with a roll-call at 8:30 AM, before leading to a briefing on the flow and tentative for both days of the competition (Day 1 is coding, Day 2 is presentation).
Around a quarter to 10:00 AM, everyone splits into their designated break rooms. I had a surge of confidence and was ready to start everything as swiftly as possible. After all, the initial setup of the project has to be done fast so that we can start progressing on the modules.
However, that's where we began to face our first set of hurdles.
When our mentors start coming in, we introduced ourselves and outlined our plans for the project by showing him our Trello. They were shocked that there were only two of us in the team, even more, when they knew we were first-timers. Upon hearing our plans, one of our mentors called Mufhim immediately expressed his concerns that we need to strategise properly to make sure that we can complete the working prototype in time since we are severely lacking in manpower.
Soon after, more and more mentors begin to join the break room. Some of these people represent the personas or stakeholders involved in the problem statement. We are supposed to elicit requirements and confirm the functionalities that we planned with them. The list of questions that we prepared beforehand helps a lot in ensuring we have a checklist of things to validate.
It was during this phase that things began heading south for our team. One of the unexpected difficulties that I faced was trying to juggle between communicating our thoughts and ideas with the mentors and stakeholders and at the same time focusing on your codes. It takes a lot of skill to multitask. I remember screwing up my GitLab setup due to the state of confusion I was in.
For your information, you can't simply ignore your mentors or stakeholders as they also serve as judges for the competition, especially for the grand prize which is the permanent job offer. They will observe and monitor everything, from the way you communicate your ideas and respond to questions to teamwork. The grand prize is awarded individually. In other words, you could be in the top 3 teams but still not qualify for the job or internship offer if you fail to exhibit a good impression to the judges throughout the competition, and vice versa.
It doesn't help the fact that both Faidz and I began having internet connection issues around this time. I sort off expected this earlier on since I'm fully relying on my mobile data connection as an internet source (I don't have WiFi at my place). I even warned Faidz to stand by in case my internet goes haywire. But, what I didn't expect was that Faidz would face the same issue as well. This hindered the requirements-gathering process as we occasionally got disconnected and thrown out of the Zoom call. It was honestly embarrassing as the mentors and stakeholders had to wait for us to come back and there was a constant back-and-forth between us saying "Hello, can you hear me?" and repeating the questions again and again. I had to apologise for disabling my webcam and screen-sharing due to poor internet connections, which was a huge no-no. Nevertheless, I was grateful that the stakeholders were willing to emphatise in our situation albeit it gave a bad impression on the team.
Then, shit hits the fan. While working on the front end, Faidz's laptop suddenly crashed. This was certainly unpredictable and I was honestly at loss for words. Faidz went MIA for quite some time before coming back using her backup laptop (her sister's). I asked her if she was all right and whether she can recover the work she has done. There was a bit of work that was lost but fortunately for us, much of the progress can be recovered from our GitLab repo and Google Drive (all hail version control systems!). However, the series of unfortunate events that led to this moment caused us to be severely unmotivated. We were behind schedule and I remember feeling like giving up halfway. The mood of the team became sombre (and mind you, our mentors are still in the break room watching everything that happened).
Afternoon
After making a bit of progress in the aftermath of the morning disaster, we decided to have a 30-minute lunch and prayer break. During this time, I contacted an ex-colleague of mine during my internship who happened to stay at the same condo as mine and asked him if I can temporarily stay at his place and use his WiFi. To my relief, he was fine with it and I immediately brought along my MacBook and all the essentials to his place upstairs.
When we came back at 1:45 PM, things finally began to improve thanks to my colleague's fast internet connection. I was able to turn on my webcam and share my screen with ease. At least we have one issue solved, I thought to myself. Even though Faidz still struggles with her internet, we can breathe a sigh of relief knowing that one of us can share our screens.
The afternoon session was generally quiet at first since I explicitly told my mentor Mufhim that we would want to focus on coding and that we will contact him personally should we need any assistance.
However, that was when the unexpected 'interview' sessions began.
While focusing on my codes, suddenly one of the mentors/judges unmuted himself and asked us upfront why we were making little to no progress based on what I'm currently showing him on my screen. He explained how he's been observing us since morning and yet hours later, it seems like we haven't done much headway in terms of our prototype development and that at this rate, we might not make it to the end. I told him truthfully that it was mostly due to the issues we faced previously which significantly delayed our progress, and reassured him that we are picking up speed as we speak. It was partially my fault as well as I was only sharing the home/landing page that we did (I chose to share selective windows instead of the whole screen), even though we're already proceeding to develop other modules.
Somewhat satisfied with the answer, he then pointed out how throughout the day, it was mostly me doing all the talking, pinpointing how Faidz is being unreasonably quiet and uncommunicative. Knowing that Faidz is still shell-shocked and recovering from her laptop issue, I defended her on her behalf by again explaining what happened and how in normal circumstances, she is far more talkative. I also apologised for being too dominant in the team and that I should give the chance to Faidz to speak for herself.
I thought that my answers ruined everything and that was the end of it for my hopes of getting the job offer. To my huge surprise, the interviewer laughed and explained how he wasn't reprimanding me. Rather, he praised me for being able to confidently and actively communicate our progress and the problems faced. On the issue of being dominant, he gave his advice on how it depends on the situation I'm in, and how the circumstances we were facing entail me to step up on behalf of the team which is commendable.
Hearing what he said made me so relieved and reassured. Soon after, we focused back on our tasks at hand. Just when I thought we were done with the impromptu interview sessions, the competition had another surprise in store for us.
Out of nowhere, we heard a guy entering our break room and asking us on how we were doing. To our surprise, it was the head judge himself! He immediately asked us to demo what we've done so far. At that moment, part of me just wanted to jump off a cliff honestly. I did as instructed, praying that everything we've done so far worked. Thankfully, the event registration module that we finished worked flawlessly. He was especially impressed by the front-end design that Faidz made which closely resembles Dell's existing website and how much we're able to achieve given the fact that we're among the smallest team there is. Considering that there are only two of us in the team, he advised us to focus on one use case that covers all the personas, mainly the event management functionality. Before leaving us, he teased us by saying that he expects to be surprised further during our presentation the next day.
Knowing that the head judge himself was impressed with our progress gave us just the right surge of motivation. We took full advantage of that adrenaline rush to complete more functionalities and fix several bugs/errors.
As we were about to wrap up for the day at 5:00 PM, we had gotten to know our turn for tomorrow's presentation. We were extremely glad to know that we'll be presenting later in the afternoon, giving us slightly more time to prepare for our presentation.
Our mentor Mufhim also came over at the last minute to check on our progress. We showed him what we've done so far and told him what happened during the afternoon. Echoing the head judge's comments, he praised our UI and even gave us some useful tips and advice for us to consider ahead of our presentation tomorrow. He even suggested that Faidz will lead the demo of the prototype during the presentation as a way to 'redeem' herself and prove her soft skills, while I will handle the Q&A session.
Night
I told Faidz that we'll meet up again at 9:00 PM sharp. I remember feeling so exhausted and went to sleep for 2 hours before our meeting. When we were both ready and freshened up, I went through what we achieved during the day and the remaining deliverables to be completed during the night. We had to re-strategise a bit by dropping certain modules and replacing them with new ones, following the pieces of advice given by both Mufhim and the head judge as well as feedback obtained from the stakeholders. This part of the hackathon tests your flexibility and adaptability to changes. Not everything that we planned was a step in the right direction. Hence, you have to ensure that you leave enough room in your planning in case there are changes to be made.
We spent the whole night, from 9:00 PM until 7:00 AM straight doing nothing but code, code and code. I'm an all-nighter myself, but even that doesn't prepare me for the sheer levels of fatigue that I experienced that night. There were times when I almost dozed off, but I forced myself to carry on knowing the finishing line is near. I lost count of how many times Faidz and I exchanged yawns. On top of completing all the necessary functionalities, we also had to juggle with prepping for our presentation slides. It was stressful for sure, having to work while being sleep-deprived as you'll experience brain fog. I can recall times when I forgot what I wanted to do in the middle of coding. But, it is certainly far more manageable since it's just the two of us (no interference from others) and our internet connections proved more reliable late at night. More importantly, it proved to be worth the effort as we managed to complete all the required features by dawn!
D-Day 2
Morning
After Subuh, the two of us immediately went asleep, albeit for 2 hours only as we need to wake up at 9:00 AM to witness the other teams' presentations. Only 10 minutes is allocated for presentation and demo, while another 5 minutes is reserved for Q&A. The judges were extremely strict with the timing. Once the 10 minutes is over, you will be cut off immediately. In terms of the questions asked by the judges, they are mostly tailored and grilled towards the functionalities implemented. We also noticed how certain groups spent too much time on the PowerPoint presentations rather than their prototype demonstrations.
Keeping these observations in mind, we met up in our break room and outlined the flow of our presentation. I will lead the PowerPoint presentation, followed by Faidz taking over the demonstration. Finally, the Q&A will be handled by the two of us.
Mufhim was also kind enough to contact Faidz and give some final pointers for our presentation. Among his advice were:
-
Make sure we don't spend more than 2 mins on the PowerPoint presentation to allocate as much time as possible for the prototype demonstration.
-
Try to avoid switching between screen-sharing to not waste time. Have someone on standby to lead the demo while the other commentates.
-
Do at least 3 practice runs! Make sure you're familiar enough that you don't need to think about what to say.
We did exactly as he advised. After doing several rehearsals, we managed to keep our presentation well within the 10-minute mark. We felt quite confident after knowing the flow and what needs to be said.
Fast-forward to 1:15 PM, and the two of us finally went into the main room while patiently waiting for our turn. There was a huge timer on the screen, counting down to the next presentation slot at 1:30 PM. I remember wishing Faidz good luck via WhatsApp a few minutes before.
Once the time is up, the emcee welcomed us and asked us to start whenever we are ready. I shared my screen, asking if everyone can see it and whether I can start. Once we were given the green light, with the utterance of bismillah;
Houston, we have lift-off!
And that, my friends, was honestly the longest 15 minutes of my life! Everything went smoothly and way better than expected! From the presentation to the demonstration and finally the Q&A. I was able to answer all of the judges' questions, which centred mostly on the functionalities as predicted. They were also impressed as I walked through our planning stages using Trello, something other groups didn't do. Both our mentors even praised us for our performance.
Pro-tip during presentation/pitching session: If the judges grilled you as to why your prototype is missing certain features (trust me, you will as it's difficult to build a full-fledged prototype even with a team of four, let alone a duo like us), just tell them upfront that you don't have enough time (no bullsh*tting), but don't just stop there. Instead, outline clearly how in an ideal situation, the ways you intend to scale or improve some of the features. For instance, one of the judges questioned the lack of a dashboard feature for one of our personas. I answered him by saying we couldn't implement the feature on time, however, I explained to him what are the plans we had for the said feature should there be no time constraint.
You can tell from our reactions in the WhatsApp conversation below on the aftermath just how relieved and grateful we both were:
It was during this time that part of me legit thought that we might have a shot at winning!
Closing Ceremony
Following the excitement I got post-presentation, I can hardly contain my anxiety ahead of the closing ceremony. Despite being sleep-deprived, I wasn't even able to take a nap due to my eagerness and impatience.
When the clock stroke 5:30 PM, I immediately went into the main room. We first had a photo-taking (or should I say screenshot) session with all the participants, mentors and judges.
Then, the time has come. The moment that all of us are waiting for. At that time, there was a hodgepodge of feelings happening within me. On one hand, I'm praying that we'll nab a spot among the top 3 teams. On the other hand, part of me is concerned that I'm putting my hopes up too high and just leading my way to disappointment. After all, Surely, they won't award the win to a bunch of newbies, right? I mean, what are the odds?
At first, they announced the third place. From there, I knew it was either we make it or we don't.
Then, much to everyone's surprise, we actually won! Not only did we win, but we also tied as champion; a first in the competition's history. At that time, I can only afford to gasp and smile in shock. I was so fatigued that I can hardly process everything that was happening.
But that's not all. Deep down, we were all waiting for the grand prize: the permanent job and internship offer. When the head judge began calling out names, Faidz's was the first to be announced. I unmuted myself and cheered her up. As the head judge went through the list of names, I await anxiously. Finally, when my name was announced, I breathe a sigh of relief. I covered and shook my face in total disbelief. I remember the head judge giving a remark saying everyone was waiting to see my reaction.
Conclusion
It took me days to finally absorb everything that happened. I'm still sort of trying to grapple with the truth to this very moment. The idea that I won a hackathon on the first try, with merely a team of two and got a job offer at a prestigious company such as Dell felt like a distant dream. Try and tell that to the first-year version of myself and he would think that you're a big fat liar.
This was undeniably a hallmark of my student life. A personal milestone. Looking back, what I'm most proud of is not the win and the job offer, contrary to everyone's opinion. Instead, it's the fact that I witnessed stunning growth in myself. From that pessimistic, self-doubting freshman who believes he was incapable of anything but mediocrity, to who I am today. That is what I'm most proud of.
Several takeaways to share with everyone, especially my juniors:
-
Never be afraid to try something new! Making that leap of faith can be tough at first but trust me you'll be damn thankful to your past self once you did so. Your student life days are numbered, so make the most out of it by getting out of your comfort zones and exploring new things. In most cases, ask yourself: what's there to lose?
-
Great things take time. I didn't get to where I am today by miracle means. It is a culmination of years of hard work and trial and error. As cliche as it sounds, be consistent, be patient and never give up. Trust me, your hard work will pay off in the end!
-
Team dynamics is key! If I was asked to single out 1 main factor that contributes to our success, it would be the sense of camaraderie that I had with Faidz. The high-octane environment of the hackathon will test your team's synergy. How you manage crises along the way is dependent on teamwork. So if you intend to join a hackathon in the future (which you should), team up with those whom you can work well with.
-
Start networking! If you are observant enough, you will notice that my journey towards this achievement wouldn't have been possible without the help of my friends. Building trust and connection is key. It might not be so apparent now, but it will bring it to fruition in the future. As the adage goes:
If you want to go fast, go alone. If you want to go far, go with others.