Hackathon Reflections
Tags: python, algorithms, programming
Published: 2023-01-31 20:31:30

Recently I was fortunate enough to take part in a hackathon. I don't normally physically go out among other coders a lot, so this was a pretty new experience for me. Despite my initial nervousness, I had a blast learning and coding with other like-minded folks.

In this post, I'll share some of what went on during the event and some lessons I wish I'd had known beforehand.

## What happened?
A bunch of things, actually. There were three main objectives during the day, among others:

1. Main Challenge
2. Technical Challenges
3. Seminars

I'll start by talking about the main challenge. This one was the big one - the one with all the prizes (3D printers and gaming keyboards 😲).

In order to be eligible to win, you had to create a project that was centered around the theme (this year it was `code.change()`). You created it with your team throughout the day, and it was judged right before the close of the event. I'll share what my team came up with in a moment.

The second focus of the day was technical challenges. These were all problems that somewhat reminded me of [Advent of Code](https://adventofcode.com/) or even [LeetCode](https://leetcode.com/problemset/all/)'s collection. They were all technical-related problems that required a strong understanding of algorithms and problem-solving.

The prize for coming top spot in the point system for this challenge? An Arduino robot kit.

The third aspect of the event was the seminars. I appreciated this segment, and this hackathon in general, because they invited beginners as well as experienced programmers. You could pick and choose which seminars to attend, with topics varying widely from basic Python programming to Robotics to querying APIs with JavaScript.

This was definitely a good option to learn some cool stuff - I attended a talk given by a UI/UX designer from a large banking corporation about making good-looking websites. Cool! 😁

Prizes from this segment? Raffle tickets were given out at each talk to win various tech gadgets, along with an Oculus VR Headset. 🤯

They also gave us free lunch and dinner, so that definitely made it worth going! 🤣

## Reflections on the Event
After arriving early in the day, I took half an hour trying to get on the WiFi. **Always get there much earlier than you think you should.** You can always sit in the parking lot and wait.

The doors opened at 7:30, and the event started at 8. Luckily for me, I got there at 7:25 _and_ there was a delay in starting. You're a programmer. You should know that we're always late starting things!

I didn't have a team, so I got one assigned after the opening remarks. Luckily for me, everyone on the team was reasonably chill and we all got along pretty well.

No one really had any idea about what to do, so we just pushed it off in the classic "that's future me's problem" and buckled down on the technical challenges before splitting up and going to pretty much every seminar we could.

Both choices paid off, as by lunch we were in the lead on the technical by about 3 times the score of the runner-up. We had also amassed a great deal of knowledge that we used to complete more technical questions. Done and done.

During the afternoon, panic started to set in. Having no other ideas, we began to work on a [Python program](https://github.com/jD2R/gen-z-translator) that translated Gen-Z slang to "boomer talk".

Our method? A simple find-and-replace. Did it work out? Not really, but enough so that we had a bit of confidence. Our project was definitely a fan favorite, but in the end the judges didn't seem to like it that much. We didn't place at all for the main challenge, which was disappointing to say the least - having spent so much of our time trying to work out dumb bugs. 

I blame it on the fact that all the judges were boomers themselves, but that remains to be verified.

> As an interesting side note, this program turned out to be a source of inspiration to someone who noticed it on GitHub. Obviously dissatisfied with our method, they built an [AI model](https://github.com/atomisadev/ztranslate) using TensorFlow and ChatGPT data. 
It's much cooler than ours was and I encourage you to check it out if you have time.

However, the story doesn't end badly for Team 56. At the end of the day, we were officially declared the winners of the technical challenge - even after a controversial three-way tie. 
I don't think the two other teams will ever forgive us, but I don't care. We were in the lead for longer.

## What I Learned
I think I learned quite a bit. Sure, the seminars were fantastic and I _finally_ learned how to interact with APIs, but I think I learned more about teamwork and time management.

Teamwork? It's difficult. No denying that.

My only other hackathon was one I attended last summer. My team won first prize, but I felt slightly unhelpful as it had really been one guy spearheading the entire operation.

Though it's sometimes easy to sit back and let the other guy do it, it's much better to insert yourself and offer to help. The worst they could do is turn you down, which is what you were going to be doing anyway.

It's often said that the best way to problem solve is by splitting up big tasks into little ones. This is totally true. By inserting yourself, you're lessening the load on the first guy - and that helps both of you in the long run.

I know for a fact that by the sixth or seventh hour of straight coding, all of us were getting tired. **Take breaks. Eat something.** My solution was to knock back half a case of Coke over the course of the event, which I dearly regretted the next day.

Don't be afraid to walk away. Sometimes I was tempted to go sit in the back of a seminar and just take a little nap (which I didn't, mind you), but looking back it might have been a good idea. I needed a break. 

Our team, right before dinner, left the main hacking room and booked it to a quiet hallway where we could focus. Y'know the funny thing? **We did twice as much work there.** Breaks. You know you need 'em.

Another lesson I saw come into play was that of perserverance. Many of the other teams didn't complete all of the technical challenges because they got _super_ hard at one point. The guys on our team would pass the problem around, give some insight or a way we thought we could approach it, and then implement a solution.

We finished all but one. And while other teams spent their time watching YouTube and playing Pokémon, we won a robot kit and a free trip on-stage in front of the rest of them. Talk about a flex.

The last important lesson was that of talking to other people. I've been reading [a lot](https://www.amazon.com/Complete-Software-Developers-Career-Guide/dp/0999081411) about networking recently, and simply talking with other teams gave us an advantage. 

- One of our solutions came from another team that we traded solutions with. 
- We got inspiration for our project by walking around and asking other people what they were making.
- And of course, there was a healthy dose of trash talk going around. It's all part of the game.

It's even more fun to walk around and see how other teams react when you tell them that you're the ones who are blowing everyone else out of the water on the technical challenges. You get treated like a literal celebrity. 😎

## Conclusion
This took me 45 minutes to write. It probably took you 10 minutes to read. I sure hope that in those 10 minutes you learned something, or can agree or elaborate on a point I made.

I think a hackathon is something that we should all do. You might not win, but I can promise you you'll have a seriously good time.

Good luck as you continue your learning journey! 👍⚡