The best team I ever worked in
Published on Saturday, 02. October 2021A few years ago, a couple friends and I published a mobile game. It took us more than five years to complete. Mostly because we didn't know what we were doing. Besides me, there was one other programmer, Stephan, in our team. We had met during our studies and used this game as a learning project. Since we didn't know what we were doing, the code we wrote wasn't very good. In fact, it was so bad, and we learned so much during our work on the game, that we decided halfway through the project to rewrite it from scratch. This decision drew out the time we spent on it significantly, but it was the right one. And ore than anything, it taught me that the simplest solution is often the best one.
I think most programmers go through a phase when they learn about abstractions and design patterns and start to generalise everything they write as much as possible. This isn't the best idea if you want to write maintainable software, but it's a fun thing to do. For our game, I wrote a completely automated scene management system. Unfortunately, it was unpolished, had a few bugs and was a pain to work with. So Stephan, who by that time had started to work full-time with Unity, replaced the system with a script of less than 100 lines, which solved the same problem and was much easier to work with.
This example isn't typical of what our work looked like, but it represents a fundamental dynamic of how we worked together. I worked on our game systems, and build tools for the general management. Stephan build everything engine specific and made sure that the game wasn't just a collection of somewhat useful systems, but was actually fun to play. All in all, it was a great project to work on. So when he (and the rest of the team) approached me with ideas for an update earlier this year, I was on board almost immediately.
Our goal for the update was to revisit the balancing of the game, make the weapons more fun to use and to add new challenge modes. Since we started working on it during a pandemic, we had to organise ourselves a bit differently. But the principle stayed the same. In the first step, I set out to refactor our game monolith to allow for different game modes, while Stephan worked on updating the UI and systems like the leaderboard and statistics. The next step in our plan was to meet up virtually to make the challenges fun. But as it happens, life got in the way of it. We already worked full-time and didn't have as much time at our hands as we wished. And if that wasn't enough, Stephan was in the midst of organising a move to Scotland and starting a new job. For a while, he didn't have any time to work on the project. At first I tried to balance the game myself. But if there's one thing I don't have the patience for, it's playtesting. And when I sat in front of my PC, I didn't even know how to approach it. I felt more helpless than I remember for any software project I worked on. So we decided to pause the project.
Last week, our team met up virtually to plan how to proceed with the game. On sunday, Stephan and I had another call, in which we created a minimal challenge that was fun to play. I explained what I had built, he started to balance, called out the changes to the system he needed and I implemented them on the fly. In less than three hours we built something I couldn't have done alone in three weeks. Suddenly, all the anxiety I had felt in the weeks before was gone. There is nothing as uplifting as working in a team like this.