The first hackathon I ever went to was SacHacks in Sacramento. I quickly assembled a team of four and attempted to create a web interface for planning class schedules, ignoring the fact that none of us had ever worked with JavaScript, HTML, or CSS before. It went about as well as could be expected, and we certainly didn't win anything, but I had a lot of fun and was inspired to build and design my personal site! Also, one of my teammates taught me how to rock climb a week after the hackathon, so I'd say it was worth it.
My second hackathon was HackDavis at UC Davis, where two very good friends from class and I decided to make a heart attack monitor with a Raspberry Pi, despite none of us having ever used a Raspberry Pi before. It went about as well as could be expected, but it did give me the idea to migrate my personal site to a Raspberry Pi.
My third hackathon was at Lawrence Livermore Labs, where several other "Summer Scholars" (their fancy word for "interns") and I designed a computer vision system attached to a Raspberry Pi that could predict what the image it was looking at was. It thought I was a bassoon for some reason (rude), but I did get quoted as being a "code adrenaline junkie" in an official LLNL article.
My fourth hackathon was HackPenn, where I did something related to machine learning that I sadly cannot remember. It was virtual due to COVID, but still a lot of fun. My fifth hackathon was HackMIT, where I made a "platonic Tinder" (look, it was quarantine, and we were all lonely). The day before one of these events, I received a potted plant from the school hosting it, but I forget which one it was.
After five of these events, all of which involved a lot of code and very little sleep, I have come to the conclusion that unless something unusually amazing is occurring at the event, I am not particularly interested in going to any more hackathons.
To be clear—I love engineering competitions. I had a wonderful time at the UC Davis designathon my freshman year, and my team came in first place in the whole school! Our victory was not at all lessened by the fact that there was only one other team competing. I had a wonderful time at the Collegiate Penetration Testing Competition, which was essentially a hackathon but with actual hacking. My friends and I (legally) hacked into a server at Stanford and did some poking around. But I still do not like hackathons.
Like everybody else who programs, I sometimes procrastinate. Sometimes I do my work ahead of time but nonetheless am forced to finish something last minute because programming can be hard. I have many times been sleep-deprived and sometimes turned in mediocre code as a result. However, all that stuff is definitely stuff that I consider bad. As in, I don't want to do it again, and I am trying to arrange my life such that I have to do that as little as possible. So why on Earth do we do this voluntarily?
A major function of hackathons is to serve as a competition. This is especially true at larger ones. Sometimes companies will contact people who do well in hackathons, and I know some people who put hackathon awards on their résumés. If it is going to be effective as a competition, it has to be timed because if the programmers were given a week, people could go home, ask friends and colleagues, and it would become difficult to figure out whether or not the team really did it. Also, it would be harder for people to find time. Who is going to take a week off work to program in exchange for (admittedly sometimes very cool) swag?
But the thing is, the type of code that people can write in a day is not good code! When I turn in rushed code (which I like to think I do less often these days), it is the result of several weeks, if not months, worth of work. The rushing part takes place at the end. Nothing interesting can happen in a day! A day-long designathon makes sense because interesting things can be designed in a day. A day-long cybersecurity competition makes sense because you can penetrate a server in a day if the server is buggy (which our server was because it was a competition for beginners). But good code is not written in a day! Why on Earth are we glamorizing bad programming practices? Sure, sometimes you need to stay up all night but you are not supposed to!
The projects that people create at hackathons, even the ones that win awards, generally speaking, would not be particularly impressive if they were programmed in a week, let alone a month. I hosted the platonic Tinder site I made during HackMIT on this web server for about a week and then deleted it, because honestly, it was not that great. How could it be? I made it in a day. If hackathons took a month and the projects were scaled up appropriately, that is not a hackathon; that is just a person trying to start a side gig. There are exceptions, for example, this wonderful project supposedly came out of a hackathon, but it was a hackathon that lasted a whole week. A week-long hackathon is definitely something I would participate in, but those events typically don't take place at a single location, so the whole 'vibe' is a bit different.
I am generally in favor of hackathons as a way to start out as a programmer. My first few hackathons were beneficial because I appreciated the talks and the swag, and was able to learn a lot about programming culture. At SacHacks, they had a Tesla that people could interface with and write apps for. When you are starting out as a programmer, this stuff is interesting and helpful.
That being said, I don't really see the appeal of creating a project in a day anymore. I can't remember the last time I created something that I am proud of in less than 24 hours on little to no sleep. As much as I am still a 'code adrenaline junkie,' realistically, that sort of project just isn't that interesting. I would much rather make something genuinely worthwhile in a month.