How do we do remote work across time zones?

How do we work together when our people are spread across multiple time zones? It seems like this is one of the core questions that companies ask when they're getting into remote work.

I was curious about the "best practices" that are out there right now for handling the time zone issue, and how some well-known companies are thinking about it.

It's all about meetings

I found it interesting that almost every discussion on this topic is about how to schedule meetings effectively.

  • Do we have "core hours" in which everyone must be available for meetings?
  • Do we limit which time zones we hire in so that no two time zones are too many hours apart?
  • How do we inconvenience the fewest people when scheduling meetings?

On the GitHub blog, they talk about the importance of "overlap" for scheduling meetings:

We both have team members based all over the world, so typically we try to find times that overlap for various projects. A good rule of thumb is to create teams with four hours of time zone overlap, with the bare minimum being two hours.

The Dropbox team talks about their "non-linear" workdays:

We’re embracing what we call “non-linear workdays.” We’re setting core collaboration hours with overlap between time zones, and encouraging employees to design their own schedules beyond that.

The GitLab folks want to alternate who is most inconvenienced when scheduling meetings:

Synchronous meetings should be inclusive of those who want to attend and are in different time zones. For example, a team's recurring weekly meetings, alternate between a time which is ideal for EMEA and Eastern AMER (8:00AM Pacific) and a time ideal for APAC and Western AMER (3:00PM Pacific).

Why so many meetings?

In the post I wrote on this blog in 2014 about how I work remotely, the very first section was about the importance I placed on effective asynchronous communication.

Remote work requires a paradigm shift. Instead of thinking how can we go on working the same way we always worked without these pesky distances and time zones in between us, the best companies are starting at first principles. A true time zone-agnostic organization is one that, on a basic level, does not rely on meetings for collaboration.

GitLab deserves a lot of credit here, because they have written extensively on the topic of asynchronous communication, and it's a competency at the core of their organization. As the quote I included from them above indicates, they recognize some meetings as prudent, but they operate on an asynchronous-first model, with each meeting requiring a rigorous justification as to why it necessitates an exception to their default asynchronous mode of collaboration.

The easiest way to enter into an asynchronous mindset is to ask this question: "How would I deliver this message, present this work, or move this project forward right now if no one else on my team (or in my company) were awake?"

Instead of thinking about how to schedule meetings effectively when people are in different time zones, it's way more interesting to think about how do we…kinda…not need meetings?

Is Colocation Still Relevant to Agile?

As 2020 has undoubtedly been the watershed year for remote work, I've been thinking a lot lately about colocation and its relevance to Agile.

When the principles of the Agile Manifesto were written in 2001, the authors believed in the importance of colocation:

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

I was curious to know what Agile thought-leaders were making of the remote work phenomenon these days, and if the idea of colocation was still imperative to them.

Martin Fowler, one of the original signatories of the Agile Manifesto, makes the point that although face-to-face communication is more effective, a more important concern is to hire the best people you can and figure out how to make their collaboration more efficient later:

The first value of the agile manifesto is “Individuals and Interactions over Process and Tools”, which we should read as encouraging us to prioritize getting the best people we can on the team and helping them work well together. While we recognize face-to-face communication is more effective, that recognition cannot act to override the importance of individuals and interactions.

The fact that you can get a better team by supporting a remote working pattern has become increasingly important during my time in the software business and I expect its importance to keep growing.

It's interesting to think about this topic in the "necessity is the mother of invention" vein. When we all presupposed that a daily commute to the same physical building with your coworkers was the normal thing to do, we had best practices that presupposed that requirement.

In the current climate, we're all presupposing that work will carry on as normal with no one commuting anywhere and all communication being digital. What best practices will emerge in this world? Will the primacy of hiring good people quickly obliterate the former primacy of physical proximity in these conditions, with the world quickly moving on?


The Golden Rule of Interviewing

We've all heard the Golden Rule, which goes something like:

Treat others the way you want to be treated.

Well, my Golden Rule of Interviewing goes something like this:

Treat candidates the way you would want to be treated if you were the candidate.

Here are some corollaries to the Golden Rule of Interviewing:

  • Don't ask a question you couldn't answer yourself if you didn't already know it was coming.
  • Don't ask a question you wouldn't want to answer yourself.
  • If you like to ask trivia questions about your favorite subject, think how you'd fare if the candidate asked you trivia questions about their favorite subject.
  • Don't give a candidate homework you wouldn't do yourself.
  • Don't ghost a candidate unless you like being ghosted.
  • Don't require more preparation from the candidate than you're doing yourself.

You're a busy, high-status, well-paid professional. And so is the candidate you seek to hire. Do unto candidates as you would have them do unto you.

Start with a Walking Skeleton

Agile pioneer Alistair Cockburn introduced the concept of the Walking Skeleton:

...a tiny implementation of the system that performs a small end-to-end function. It need not use the final architecture, but it should link together the main architectural components. The architecture and the functionality can then evolve in parallel.

In the book Growing Object-Oriented Software, Guided By Tests the authors elaborate on this concept:

A “walking skeleton” is an implementation of the thinnest possible slice of real functionality that we can automatically build, deploy, and test end-to-end [Cockburn04]. It should include just enough of the automation, the major components, and communication mechanisms to allow us to start working on the first feature.

The Walking Skeleton is usually described as the best way to start a new project, by confirming first that you can get a small amount of functionality from end-to-end—in other words, that your delivery pipeline is working. Since we know that the value of software is realized in production, we establish from the very beginning of the project that we have the means to release something.

I believe that not only is a Walking Skeleton the best way to start a project, but it's also a great way to start a user story. When adding a vertical slice of functionality to the software, I begin by establishing that I can simply communicate anything through all the layers. Once I have a Walking Skeleton built for my user story, I'll then start adding meat to the bones, knowing that I have a mini-pipeline in place.

It's a delivery-focused mindset that can be applied at the micro and macro levels of a software project.

2020: The Watershed Year for Remote Work

As someone who's been advocating for remote work for almost a decade and working fully remote himself for half that time, I never could have guessed that the tide would turn so dramatically within the span of a few months. Due to a once-in-a-century pandemic, we're suddenly inside the greatest experiment in the history

When I was writing my to-this-day most popular blog post ever--But Where Do People Work in This Office?--back in 2015, Facebook was in the midst of building the world's largest open-plan office. Mark Zuckerberg had a dream of "the perfect engineering space: one giant room that fits thousands of people, all close enough to collaborate together."

And in May of this year, Facebook in an about-face announced that it will let many employees work from home permanently. Zuckerberg is quoted as saying, "We’re going to be the most forward-leaning company on remote work at our scale."

Twitter, another open-plan bandwagon company I highlighted in my aforementioned post, also announced in May their employees are now encouraged to work remotely permanently if they please.

The CEO of Shopify said about his company's COVID-initiated transition to permanent remote work, "We choose to jump in the driver’s seat, instead of being passengers to the changes ahead. We cannot go back to the way things were. This isn’t a choice; this is the future."

With all the horror of 2020, I'm hoping we can at least look back on this year as a landmark of the Information Age when the world finally woke up to the liberating force of remote work.

Autonomy: Not Just the Good Parts

It's a common lament from management that development teams don't take ownership of the product they're developing.

This may mean:
  • Caring about the quality of the product
  • Proactively implementing improvements to the product
  • Not waiting to be told what to do
The Agile Manifesto talks about self-organizing teams:
The best architectures, requirements, and designs emerge from self-organizing teams.
It's a beautiful concept: teams that rally around a product, nurturing it like it was their own child. Why is it so hard to find people like that?

Actually, those people are everywhere. They've probably just had their hand slapped or their heart broken too many times.

Let's think: What is it that makes a development team want to take ownership of a product? It's probably because they like creating something in their own image, in their own way.

Who wants to own an ugly product that has been foisted on them by the decisions of people whose command always takes precedence over their own?

This isn't the team's baby anymore, it's yours. No one is going to raise your child.

Perhaps this goes without saying, but micromanagement and autonomy are incompatible. If you want the team to own the product, then they own the details, too.

If you want the team to take ownership, then the product has to look like them, warts and all. You don't just get the good parts.

Does this feel sustainable?

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

- The Principles of the Agile Manifesto

I'm kind of obsessed with the idea of sustainability. In fact, you could say it's a major theme of my writing on this very blog.

Below are some unsustainable practices I've covered in the last few years, with links to my writing on them.

We've been collecting paychecks for several months without delivering a valuable feature to a real user.

We complain often about the need for improvement in our processes, but we don't make time for the work or hold anyone accountable.

We're paying highly-trained technical experts to do tedious, manual tasks that a computer could do.

We're pulling our hair out trying to forecast release dates, and working overtime to fit in all the work.

The QA people never have enough time to test all the code the developers are writing by the end of the sprint.

We're rushing to meet deadlines, and we insist on getting every detail right the first time.

We're slowing down the delivery of features to do code reviews of every commit, but the code quality is still low and we have tons of bugs.