A few years ago we rarely considered the importance of filling in a timesheet report, despite our Finance team’s best efforts to encourage proper time management. Their nagging and tears became routine in quarterly cycles. We even had our own mascot — in a really good effort from our Creative team — Horacio, who tried to keep us on track, in a friendly way. And it worked… for a while. It wasn’t until HR and Finance decided to incorporate rewards by area (and of course, individual punishments, going against the usual recommendations) that we started to get the message.
The famous Horacio. Here, resting in the couch.
The rules were simple: every area of the company must collectively report hours for a given number of days. At the end of the established time period, the area whose all members have filled in the report timely wins a reward, which in most cases is a juicy team outing. As you may have noticed, these rules are biased and tend to benefit areas with less people while becoming a burden for larger ones — like ours, Front End development. So, how then did we achieve to earn three consecutive rewards? Read on!
The wall of shame
Several times in the past, the Development team attempted to promote reporting as an aspect of our daily routine: UX and UI design meetings, individual runs in several different technologies (we had an experiment in Dart) but nothing proved more effective than the infamous wall of shame. The way we have tracked time historically is through the time-reporting feature of Basecamp Classic, which they didn’t port to the most recent Basecamp versions. We know it isn’t the best, but we have so much written on it that migrating is kind of an undertaking. Fortunately, Basecamp Classic has an — if I may, really outdated — XML API. Having an API means we have an opportunity to cling on.
We started experimenting with new technologies at the time, and Node.js proved a nice way to keep the project together under a common, shared technology capable of withstanding the test of time (who codes in Dart these days?). We set up the website quickly, added some minimal design, hooked up the API and called it a day. Our wall of shame was born! Originally, the initiative came from our Front End development team, helping us leverage the obvious disadvantage of being the largest area in Zemoga. But this alone was not enough.
We needed something that reminded us to report timely, since each day there is a time limit in which we can amend for the previous day. And after that time had expired, no amends to the report are valid. We started experimenting with Web Workers and server push notifications — still not enough: notifications however useful, were easily dismissed and not really integrated into our devs daily workflow.
Always driven by a passion for learning and experimenting with the latest and greatest technologies, we found ourselves looking for a way into bots, the natural step forward. Creating a bot that posted the wall of shame for us on our usual communication tool, just in time to report before the cut, gave us the ultimate boost that enabled us to beat other areas in time management. We used the same work we already had and transformed it into a bot query that dynamically updates itself and responds in the team chat window. Built on top of Microsoft Bot Framework, it allowed us to use it on Skype and Slack conversations and group chats. Thus, Penguin was born.
From that point onward, we built a cohesive group spirit within the Front End team. We call out people who have not reported for the day, and in doing so we have successfully turned the odds in favor of our area. It was good, really good. Actually, so good that other areas began to question our abrupt success. They started asking questions and eventually found out about our experiment. And they wanted in. It was time to export Penguin to all of Zemoga.
We hooked our G-Suite team directory and created a GraphQL API that connected both the Zemogian directory to Basecamp timesheet report. Using G-Suite custom schemas, we were able to easily cross reference IDs, store user information and classify us by area, to which we appended to the final report and created a personalized wall of shame per area. The result? Every area incorporated the tool to the point where completing timesheets became a routine aspect of our collaborative team operations.
Integrating an unusual element to our daily workflow made reporting part of the team’s routine, as we work more cohesively and effectively among our peers. Perhaps nowadays the reward is not as important as it was in the beginning, but we solved the essence of what the issue was in the first place: to value our people’s time. Maybe in an unusual way, but equally effective. Our original idea evolved and scaled, and we’re constantly thinking about new ways of integrating these technologies even further in our daily workflow, perhaps with a smartphone or a desktop app, enhancing automation, who knows? There’s room for every Zemogian to get hands on and help seek out new horizons.
We at Zemoga are problem solvers. Our culture is about identifying risks and solving core issues when we see them. And this includes, of course, our own company challenges. Want to hear more? Want in? Let’s build better.