Posts

Introduction

Embracing asynchronous work can be a game-changer for distributed teams, enabling increased productivity and efficiency. What truly brings this concept to life are real-world examples. In this article, I’ll briefly describe one of our Smart Box Games projects to demonstrate the power of asynchronous collaboration using the simplest of tools, email.

Background

Our most popular game, Farkle Dice for Android, enjoys a global player base. Over the past two years, Google has progressively limited Android device backward compatibility for apps that use Google AdMob and other SDKs. Initially, they used the carrot approach and encouraged updates for better device performance, but then switched to the stick to enforce compliance by threatening app removal from the Google Play store.

Our team is spread across the globe: our Art Director, Jim, resides in Tokyo, our lead Android Engineer, John, is in Bozeman, Montana, and I serve as the Product Manager and QAE and I live in Bellingham, Washington. We embrace asynchronous work due to our experience and confidence in this approach.

Tools We Utilized on the Project for Asynchronous Collaboration:

  1. Email
  2. Google Docs and Sheets
  3. Bitbucket
  4. Firebase for app testing distribution
  5. Google Play Console

Our Project Goals

Our journey began with a high-level email outlining the basic requirements:

1. Update the code linking in the newest SDKs

2. Convert all HTTP links to HTTPS across all app languages

3. Allow players to opt out of Google Play login (we use Google Play for high-score sharing)

4. Modernize launcher icon

5. Integrate Firebase Crash Analytics

6. Address all issues found during testing

Progression of the Project

John took the lead by updating all relevant SDKs and then addressing all errors and warnings until he successfully built the project. He also updated the copyright information, URLs, and menus. 

During this process, John discovered Google had made significant design changes in how Google Play integrates with app, which he communicated via email, seeking input from the team. We installed the latest build from John and collectively examined the design changes to better understand the user experience. After exchanging a few emails with images we arrived at a design that John swiftly implemented.

As the day ended for John and me, it began for Jim in Japan. He researched how to create full-size launcher icons and by the time we started our day, provided us with educational YouTube links to get us up to speed. Jim then handed off new art to John. After a few iterations, the new launcher icon was integrated into Farkle Dice, and wow, it looks great.

The majority of testing was regression, validation and verification. Testing occurred on each build, with any issues found sent to John, with images and steps to repeat.

Once all issues were addressed the final chapter was distribution and user communication. Wearing both my Project Manager and Quality Assurance hats I wanted to limit risk and decided to do a gradual rollout release, starting at 10% and ramping up daily to 100%. Release notes were added to Google Play and a push notification is scheduled for next week.

Key Takeaways for Successful Asynchronous Work

Clear Communication: Effective asynchronous communication hinges on accurate descriptions with images and links to videos. I avoid abbreviations or acronyms. For example I always wrote “Firebase” and never “FB”, because in my brain “FB” = Facebook. 

Visual Aids: Enhance issue reporting by incorporating screenshots with prominent annotations (I’m a fan of using large red arrows), making it easier and faster for team members to understand and address problems.

Organization: Keep conversations focused by retiring resolved email threads and initiating new ones for fresh topics.

Encourage all team members to collaboratively edit documents for clarity within Google Docs. (I am thinking of switching to Notion or Confluence to take advantage of their comprehensive editing tools).

Time Zone Advantage: Leverage time zone differences to your advantage, if possible, by scheduling overlapping working hours for quick responses. For instance, 4:00 PM Pacific Time is 8:00 AM in Tokyo.

Trust Your Team: There were times I was tempted to send John a Slack message on an issue I found because it felt urgent. In reality, it was important but not urgent. Not dm’ing John and sending him an email instead prevented interruptions to his coding flow and allowed him to manage his time to its fullest efficiency. 

Conclusion

Our project progressed quickly without the need for any meetings. The entire software development life cycle was efficiently navigated through asynchronous collaboration. Now, we’re ready to replicate this success with our remaining five apps, with Farkle Halloween and Farkle Solo already underway. 

We have used asynchronous tools in the past and we are always reviewing new and interesting solutions but no matter the tool it is people who make great software. 

I encourage all teams, especially dispersed ones to embrace asynchronous processes to unlock your team’s full potential.