Picture of me and my teammates

Me and the team! Celebrating our success!

How did I even get to be a leader?

Before anything, I think it's important to understand what is the INIT Build program and its goal.

INIT is a non-profit student organization, they started about 10 years ago in Florida International University (FIU). Their goal is helping students in the tech world have the opportunities and knowledge to be job ready.

So, Back in late 2022, I was looking for hackathons or events to participate and learn more. I saw these big hackathon that had already passed and was like "ugh" but then I saw "Organized by INIT" and I was like what is INIT? so I click on a couple of links and end up in the facebook page, in which I see in 2 weeks they are having a data structures workshop and my eyes light up!

I go to the event, it goes amazing and I get told by an organizer that they are looking for experienced developers for a program. I sign up, go through an interview and my project gets accepted! And before you know it, I have 8 students in front of me to lead.

The goal of the INIT Build program

Basically, each team had 9 weeks to work together to build something, a project that they would then present at a conference on FIU in front of not only their peers but local companies such as UKG or Next Era Energy, which were looking to hire students for internships!

My idea was to bring 2000's Nintendo game Advance Wars to a website! At least the chess-like online multiplayer aspect of it since it's just images moving on a grid, how hard could it be am I right? Well...

Interpersonal Challenges

Meeting the team!

So my team was comprised of different students, some were in the previous iteration of the program and had experience in web development, most had experience with Java or C++, and a few had almost no experience. I had to make sure I knew their objectives and capabilities so I could not only make sure they felt fulfilled, but to ensure the success of the project.

Providing each team member with an issue/task adequate to their capabilities results in everyone working in tandem. If the experienced devs get the easy problems, what will the inexperienced ones do? Therefore, its important to make sure the task matches the person.

Teaching + Learning

So while I was teaching the team about how to use the Git CLI, npm, javascript, css, express.js, http requests, etc. I was also learning some of these things like I was accustomed to using my IDE for GitHub but most had different IDEs like Xcode or VSCode or Webstorm! I also started learning about MongoDB and how to work with my first database, then later on working with Docker, AWS, NGINX, and so on.

It was very nice being able to teach something to someone but also learn at the same time, I felt like I gave them a great example that hey, I might be an experienced web developer but your seniors are also learning and its okay to not know something.

Maintaining Motivation

Now since this was for free, it was a bit hard initially maintaining everyone motivated. Some were already excited to learn but others not so much. Nonetheless, I made sure everyone understood the importance of having a heavy project in your GitHub/resume, specially one where you worked alongside a team with disagreements, problems, meetings. All of these build up to a phenomenal experience that is a great segway for all those interview questions like "when was a time you were developing something and you had a disagreement with a teammember", most of them had never worked alongside other developers outside of class!

Technical Challenges

There were three main challenges to this project, they all took about 1-2 weeks from me and the team to solve.

Pathfinding (Dijkstra's Algorithm)

You know in chess, your pieces have specific movement, pawns only move forward, horses move in Ls, bishops only on diagonals and so on. Well in Advance Wars (AW), units have different movement types plus there is terrain on the board. In other words, to calculate where an unit can legally move is very dynamic issue. Infantry can move up to 3 spaces and can move into mountains but it costs 1 extra movement. Tanks can move 6 space but can't go into mountains and so on.

The solution to this pathfinding problem was Dijkstra's algorithm, which allows for a weighted graph. So each square in the board/grid is a node which depending on the unit, will have a different weigth. We do a Deep First Search or DFS to go through every square/node until the "weight" we've accumulated surpasses the amount of movement an unit has. Resulting in an array of all the squares where we can actually move.

This was my first time implementing such a complex algorithm, at the time it felt extremely overwhelming to me because I had no experience with it. However, I kept trying and little by little the puzzle pieces were connecting in my head!

Hosting our webapp

Since our project would be presented at a conference with local companies, we wanted people to scan a QR code and be able to

Implementing websockets on our virtual machine

End Result

I spent most of my time either helping teammates develop features they were tasked with or working with the real-meat of our app, the game! We ended up making a chess-like multiplayer game

Stay in touch with me!

Github link

GitHub

Linkedin link

Linkedin