Escape the Mud

Using Pull Requests for Asynchronous Planning

July 31, 2020

The majority of my team is +17 hours ahead

I have just recently started at Arcade (we’re hiring) as their first Canadian employee 🎉

Arcade has a North American developer team but the majority of the developers are from Australia 🇦🇺

Within my first two weeks working for Arcade I found myself needing to asynchronously communicate with an Aussie developer to plan a project.

I am going to share with you the solution that I found why I think it’s the right one ✔️

Before we get any further let’s just quickly define the difference between synchrounous and asynchronous communication.

Asynchronous Communication 🔁

Asynchronous communication is when one person provides communication, and then there is a significant time lag before the recipients take in the communication and respond.

An example of asynchronous communication would be email.

Synchronous Communication ➡️

Synchronous communication is when one person provides communication, and then there is no time lag before the recipients take in the comminucation and response.

An example of synchronous communication would be a live conversation.

Back to the story

The two of us had been tasked with laying the foundation for a new project. This meant that we needed to come to a consensus on some of the important decisions that are made in the early lifecycle of software projects.

If we were not working on different sides of the world a common solution would be to get everyone in a war room to hash out the details.

When you are working on different sides of the world this means someone has to get up early or stay up late, which leads to meeting fatigue, which leads to rushing through things, which leads to not sweating the details, which leads to a sub-par planning experience and a sleep deprived worker.

Haven’t I solved this problem before? 🤔

So after spending a couple minutes thinking about how I was going to coax my co-worker into getting up early instead of myself I remembered that this was nothing new.

I had completed similar tasks to this with co-workers in vastly different timezones before and we had used GitHub’s pull request feature to do it.

I think the easiest way to share how this helped us is to provide a fictional silly life example.

Silly Life Example 👷

Jacques is a friendly neighbourhood handyman who has been contracted to build a patio for a client.

Although Jacques can build a patio he would like to consult his friend, Jason the patio expert, on a couple pieces he is unsure of.

Jacques opens a PR that contains a proposal on how he intends to build the patio.

I am planning on building this patio using Cedar 2X6 joists

Now Jason can come by at his leisure and review Jacques’ PR. Jason can request changes for parts that he thinks need to change and start a conversation on parts that he thinks need more discussion.

I am planning on building this patio using Cedar 2X6 joists

  • REQUEST CHANGES > I think the building code specifies that we need to use 2X8 joists
  • COMMENT > How did we land on Cedar? I think Spruce Pine Fir will be more cost effective

Making use of git’s core features we can see a version history and make use of githubs threading, commenting and approval/rejection states to convey our feelings towards a proposal with ease.

Finishing up

When we get to the core of what a GitHub pull request offers as value it’s centered around the ability to submit a proposal and have others validate or offer feedback on that proposal.

I think this lends itself really well to planning asynchronously.

Escape the Mud is a developer centric blog that covers a wide array of topics. Written by Dennis Marchand