22 September 2020
Teams that Hack Together are Better Together
I am too old to work all weekend! It was 48 hours of junk food, ignoring my family, staring at screens, thinking through complex problems, and just enough sleep to keep working. Competing in the 2020 Spawnfest, a 48 hour Beam development competition, was exhausting and yet extremely rewarding.
This is my second time contributing to a project created for a development contest. I was able to pair all weekend with Gaslight’s VP of Development, Tim Mecklem, and Gaslight’s resident Elixir expert, Zack Kayser. As we conceptualized, built, refined, and documented I realized there were more benefits to the contest than just trying to win a prize.
Solving Our Own Problem
A year ago we created a geo-location multiplayer racing game for Phoenix Phrenzy. We wanted to create a fun game to play with our families, where we could learn about geolocation technology, and test the limits of a real-time updating application.
At Gaslight we love to develop in Elixir. We especially love the dynamic real-time capabilities of the Phoenix framework and LiveView. For Spawnfest this year, we decided to solve a very practical problem we found when working on several client projects. While there are many chart and graph libraries available for JavaScript, there was a need for an elixir chart library that could be hooked up to LiveView. As a designer, I wanted a few more dynamic controls over the chart styling. And from that need, Uncharted was born.
Creativity Through Constraints
Constraints and limitations often drive creativity. I seem to learn and grow the most when I am unable to do things I do well with my normal routine. As a front-end developer, CSS is how I style everything. However, when using other component libraries I hate having to override styles that are in my project. That is why it was important for me to set all the base styles with SVG with the goal of allowing developers to remove those styles if desired. This dramatically stretches my ability to write SVGs from scratch.
Time was the most challenging constraint we encountered as a team. The lack of this precious resource forced us to be focused and stay within the bounds of limited scope. I also think it was fruitful as a team to timebox our tasks in order to ensure time for some necessities like documentation.
Leaning on Teammates
Fortunately, the three of us already developed a good amount of trust in each other. I believe that having to depend on each other with such a strict time frame strengthened that trust as a team. We started the event by pairing together, setting some standards, and defining the architecture As the event continued, we broke off and started building separate pieces based on that work. Once we started documenting, our shared understanding was strong enough that we were able to fully divide and conquer independently. We also furthered our understanding of each other’s strengths, like Tim is the absolute best pairing DJ and Zack is the king of documentation.
Finding the Joy in Development
Tim said it best when he posted in our internal chat, “Software development is an art, and as such has a flow that is hard to find but easy to interrupt. It’s been especially hard to find that flow during a stress-inducing pandemic, and having a chance to hack on an interesting problem with friends helped me to find it again.”
I believe that joy in development comes through solving problems that you are excited about. Enjoyment also comes when working with team members you love to hang out with. That weekend we jammed out to an all 90’s playlist, each led pairing sessions and laughed with each other (and maybe at each other) a lot. It was a fun experience and we ended the weekend with a tool we are proud of.
Contributing to the Community
The best part of competing in something like Spawnfest is that the end result is just the start of our new project. We now have a useful real-time chart library that we can use on client projects and share with others. I am also looking forward to watching Uncarted grow and improve as others contribute to it. Spawnfest was a blast! It was helpful for our team on multiple levels and left us with some great memories.
You can check out our project and all the Spawnfest projects on Github.