Communication is Key
Everybody has heard this at least once before: “Communication is Key”. In reality, improving communication within a company can be quite challenging. A lot of factors impact how people communicate with each other, one of which being the extent to which you know the person you are talking to. It’s way easier to give constructive criticism to someone if you can predict how it will be received. Another important factor is understanding the challenges of each other’s daily work. Most of us have heard phrases like “simply add another button” and “why didn’t you tell me what exactly you needed beforehand” multiple times in our professional life, indicating a misalignment of expectations and the reality of software engineering.
To overcome these problems and improve our communication in general, we have started out having regular team events, like the Robocode-day, that span over the entire office.
What is Robocode?
Robocode allows you to develop your own autonomous virtual robot tank, which you can send into battle against other robots. The code for these robots in written in Java, however the toolboxes to control the robot’s behavior are simple enough that anyone who has ever developed any code should be able to implement a decent bot.
We decided to form teams of three, always making sure to have at least one developer per team in order to keep a fair chance for everyone. As our goal was to improve communication we tried to form all the teams out of members of different departments (e.g. a frontend developer, a backend developer and a technical consultant).
Let’s Get Started
After a short introduction meeting in the morning to welcome everybody and hand out a slim set of instructions and rules we split people into their designated teams and the actual planning and coding began. The teams gathered throughout the entire building, some went to conference rooms, some to the kitchen or common rooms and again others into the offices. During the entire day, but especially in the beginning, a small organization team was busy running around, putting out fires and giving the occasional hint as to how to come up with a suitable robot.
Around noon we made sure to keep spirits up with the all time favorite… pizza! During this feast people had the opportunity to talk to other teams and exchange experiences, jealously guard their secrets, spy or simply chit-chat.
Nearing the Finish Line
All fed and content we were ready for the second half of building the bots. At this time the most drastic and constructive changes in the robots happened. This is partly because people were starting to get a stronger grasp of the robot programming and partly because people had started warming up towards each other. Also, at this point in time most teams had a somewhat working robot prototype, which made actual testing possible/easier. Some teams also used this time to add experimental or gimmicky features to the robots like predicting the other robots’ movement or changing colors dynamically. The organization team didn’t have to give as much input at this point anymore and could concentrate on cycling through the teams and viewing their progress.
In the afternoon, we gathered all teams together and had a small tournament to see which robot would be number one and which teams would take a trophy home. Before every match we received a short explanation of the planned strategy that the team’s robot should be using, ranging from “we try to head straight towards the opponent while shooting” and “we wanted to predict our opponents position and shoot there” to “we decided that our robot should do a small dance after every victory while violently flashing in every color”. During these play-offs you almost felt like at a soccer match with groans and shouts of joy echoing through the halls, accompanied with a certain amount of laughter when the robots didn’t react quite as planned. This atmosphere reached its pinnacle during the final match, where you could tell that not only the finalists but also all the others were on the edge of their seats in anticipation. After a close final match quite a fun but also long day was concluded with a very short award ceremony, after which the crowd slowly dispersed.
During the course of the day it was nice to see how teams started to engage in lively debate and planning. Each of them had a quite unique way of coming up with strategies and development processes. Only to name a few, we had teams who first planned the entire robot and then tried to implement it, those that took everything in small steps, which resulted in one complete robot, and teams that split the responsibilities, for example separating the movement from the shooting and developed those individually. Overall, everyone contributed in the robot-development process and no one was left out. It was nice witnessing how the communication within the teams grew stronger during the day in a natural way, which leads us to believe that cross-team communication in general was improved both between developers and non-developers.
Last but not least, at the end of the day a lot of smiling faces left the building.
With the success of this event we plan to expand the “Robocode-day” to our sister companies outside of Freiburg, and will continue with these kinds of team-activity days.