From Dealer to Developer: My First Hackathon
Dealing with Development
Hackathons.
We've all heard the term, but if you're anything like me you never thought you might be good enough to participate in them . You'd be wrong though. Everyone has a unique perspective to offer and can make a meaningful contribution on a project. So with the goal of finding my first full time position within a company as a software engineer I came across the Mintbean Hiring Hackathon. It immediately caught my eye. So much advice on the internet tells you to study Data Structures and Algorithms and to grind Leetcode until you can invert Trees in your sleep. It was nice to hear that there was a community dedicated to showcasing developers and the skills that they have worked long to cultivate.
The Mintbean Hackathon project was to build a game with a standard deck of 52 playing cards.
Me: TL;DR I was a poker dealer in LA, I got laid off and became a web developer.
I know decks of cards well. I've been a dealer in the L.A. poker scene for the past 3 years. The job can be fun, but nighttime work and years of bad sleep take its toll. Missing birthdays, never having weekends off, working on holidays. I was missing these moments with my family and although I'm grateful that I was able to sustain my family by dealing cards I always longed for something more.
Through some truly cosmic irony, I had accepted my old position as a casino dealer just the day before I had heard about the hackathon and was set to start the day the hackathon was set to commence. In a stroke of good luck, there was some processing errors with my paperwork and I was unable to officially begin my employment so I had time to work on the Hackathon project.
So here I was. Almost a year and a half after being laid off from the casino because of the pandemic, participating in a hiring hackathon and once again looking towards a deck of cards to help me provide for my family.
The Squad: TL;DR - My fellow 100Devs Members : Ash and Mario
I don't have a ton of experience working in a team but I knew I didn't want to go through this alone. For all of my studying I knew I still had limitations and a second set of eyes is always welcome. Especially when you set out with the goal of making a multiplayer game in react. If you're learning React, you might understand how a little bit of knowledge is dangerous. You might know just enough to make it really difficult to do "simple things". I went to the 100Devs community, which is one of the most helpful communities out there in case you're looking for support, and I found many people interested in building a project.
I don't believe in gatekeeping so I invited anyone with the time, to come build their project out in the open with me since we were limited to teams of 3. I fully intended to build the project regardless of if I found teammates or not but I was fortunate to not find one but two excellent teammates , @TelescpeThieves and @AshtarCodes.
We delegated work, we set up a repo and we met over the weekend for the first time to work together on our first group project. Mario was going to tackle our backend setup and Ash and I would handle the front end. All of us being JavaScript developers, it might come as no surprise that we used Express and React to build this out.
Dreams and Realities: TL;DR- React is hard , and tech debt is real.
We started off with a pretty ambitious project idea. Mostly thanks to the requirements that Mintbean started out with, which were actively changing as we went along (luckily for us since they made it so we could actually hit the reqs.) Our idea was to make blackjack, with a betting system , and add multiplayer functionality so people could join different tables. Here's the thing though. None of us knew how web sockets work. We all had loose understandings of react, and more importantly, we had never tried to do it all at once cohesively. Working solo vs working on a team is a world of difference. Github allows this process to become "easier" ... but more on that later.
Now I mentioned that React is hard, and a little knowledge is dangerous. A more specific description of React is that it is easy to pick up, but extremely hard to do well. State management, data flows, rendering elements, fetching API data, all of these things are integral to what make react work and yet we all only had a basic understanding of what it was all supposed to be doing. As the deadline crept closer we started shaving down the dreams and multiplayer was scrapped. The tech interest was too high on our tech debt and we couldn't make the payments. One feature that was pretty difficult for us to integrate was the basic draw functionality. I wrote an algorithm to parse through the card data that we were getting from the DeckOfCards API that we were utilizing. But displaying the cards in the write order was a bit of a pain. Especially since at that point we hadn't yet scrapped the multiplayer. Ash and I ended up hardcoding some components to display the individual cards as opposed to putting them in state and iterating through them as we had initially started with.
In the end though we came to a solution we were happy with. And if any of you have any idea of how to deal with aces (which can be 1 or 11) I'm all open to suggestions because that was a particularly difficult pain point. Yeah. React is hard.
The Accomplishments: TL;DR - It's Alive!
We got it working ! To an extent. As you might imagine there are bugs present and we know how to break it (which is pretty easy with react). But we got it working. In less than a week. Really it was only two days of concentrated effort and a bit more where we architected the application. For the amount of work that we did , I am super happy with the end product. You can practice losing your money from the safety of your own home and that is in large part to the determination, grit, and dare I say moxie of a few developers from LA, Miami, and New York City.
One of my favorite parts of the project was watching the card flip over for the first time and the AI automatically hit to the correct number. It felt like a dream fulfilled. I always wanted to be a developer, I took a job as a dealer to fulfill my duties as a provider but I was never fully happy. Watching it all come full circle made me really appreciate that moment the dealer hit a 5 on a 16 and beat my natural 20. The casino always wins but today I feel like I won something by participating in this hackathon. So that's it . The hackathon is over but the work has just begun. The three of us will work together on another project and hopefully another hackathon. I had a lot of fun even with lots of little moments of frustration.
If I can leave you all with a few words of encouragement. Go out there and build something. You're better than you think you are. You are NOT an 'aspiring' developer. You are just a developer. I want to see what you build and I hope to see you at the next Hackathon.
-Alex
P.S. Take some time to learn github so you don't merge over someone's work. Uhh... I might be speaking from experience.