Fully Distributed & Asynchronous

A new communication model for teams.

Background

What is Parse.ly?

Analytics for digital storytellers.

_images/banner_01.png _images/banner_02.png _images/banner_04.png

A product

_images/glimpse.png

A tech stack

_images/tech_stack.png

A team

_images/team.png

This talk is on our distributed team. It’s what we’ve learned about work and communication in a growing tech startup.

Open Plan vs Open Source

15 years ago

_images/debian_logo.png

Developer Locations

_images/debian_locations.png

Spolsky

_images/spolsky.jpg

“Hire smart people, and they will produce good stuff that you can sell and make money off. Then everything else follows.”

Spolsky on Collaboration

  • great programmers work best in small groups
  • every professional programmer needs a private office
  • process is about ensuring quality, not cracking a whip
  • managers are janitors, not kings

Spolsky’s “Bionic Office” (2003)

_images/bionic_01.jpg

Private Office Floor Plan (2003)

_images/bionic_02.jpg

New Fog Creek Office (2008)

_images/spolsky_office.jpg

Parse.ly “Office” (2014)

_images/my_office.jpg

Home Office Ingredients

  • High-speed Internet
  • HD webcam
  • A door that closes
  • Your own gear (Mac / Linux)
  • A comfy office chair and/or standing desk

(optionals: Chromebox, whiteboards, coffee machine, coworking desk rental, shaded outdoor workspace)

Team Locations

  • Countries: United States, Canada, Scotland
  • States: Texas, North Carolina, Wisconsin, Massachussets, Virginia, New York, Ontario, Quebec
  • Cities: Edinburg, Edinburgh*, Austin, Houston, Raleigh, Madison, Boston, Charlottesville, Scottsville, Rochester, Brooklyn, Toronto, Quebec City
  • Time Zones: UTC-5, UTC-6, UTC+1*

Our Manifesto

  • action over experience;
  • innovation over tradition;
  • results over potential;
  • simplicity over intricacy; and
  • openness over restraint.

Scaling Teams

Brooks’s law

“Adding manpower to a late software project makes it later.”

Software projects are often:

  • Irreducible: “the bearing of a child takes nine months, no matter how many women are assigned.”
  • Communication-centered: “an added burden of communication with two parts, training and intercommunication.”
  • Ill-defined: “the hardest single part of building a software system is deciding what to build.”

Brooks’s formula

Communication in groups scales poorly:

>>> paths = lambda n: n * (n - 1) / 2

In 2012, our 8-person team had:

# 8 * (8 – 1) / 2
>>> paths(8)
28

In 2014, our 24 employee company has:

# 24 * (24 – 1) / 2
>>> paths(24)
276

Takeaway

It’s 10X more difficult to communicate, even though our company is only 3X as big.

Why “surgical” teams?

# 4 * (4 – 1) / 2
>>> surgical = paths(4)

# 16 * (16 – 1) / 2
>>> full = paths(16)

>>> full / surgical
20

A 4-person surgical team communicates 20X more efficiently than the 16-person team of which it is a part.

Distributed Teams

Defining “Fully Distributed”

  • Vertically-Scaled: One office that must get bigger and bigger to house your staff; collaboration is face-to-face preferred; example is Google in 2006.
  • Horizontally-Scaled: Multiple offices opened with independent cultures; collaboration is face-to-face preferred, digital between offices; example is Google in 2014.
  • Fully-Distributed: No “office” – the web is the office; collaboration is digital-preferred, face-to-face occasional; examples are Automattic, Github.
  • Parse.ly is a fully distributed team.

Note

I don’t really think any one of these models is “better” than the other.

Like their equivalent software designs, they involve a series of trade-offs.

Defining “Asynchronous”

  • Synchronous Communication: daily stand-up meetings, all-hands meetings, brainstorming meetings, pair programming.
  • Asynchronous Communication: daily standup messages, team e-mail threads, pull requests.
  • Parse.ly prefers asynchronous communication.

Beating Brooks’s Law

An analogy: the CAP Theorem.

  • Coordination: everyone knows what others are doing
  • Action: everyone is making forward progress

If everyone is coordinating, no one is acting.

All about action

“The world responds to action, and not much else.”

Can we have a proper compromise?

An “Eventually Coordinated, Always Acting” team?

Yes, I think we can.

Note

By analogy: I believe you can’t beat the CAP Theorem, but you can build a system where CAP doesn’t matter as much.

Likewise, I don’t think you can beat Brooks’s Law.

But, you can build a team where Brooks’s Law matters less.

Guidelines

Limit Bad Meetings

Purpose Good Meeting Bad Meeting
Engage Team 1:1 All-Hands
Show Progress Demo Session Iteration Status
Fix Prod Issues War Room Post-Mortem
Spur Creativity Happy Hour Brainstorming
Keep Cadence Retrospective Backlog Review
Mentor Code Walkthru Pairing*
Create Clarity Show-and-Tell N/A
Reduce Bus Factor Knowledge Share N/A

Use Good Tools (1)

_images/github.jpg

Use Good Tools (2)

_images/trello.png

Use Good Tools (3)

_images/flowdock.png

Use Good Tools (4)

_images/aws.png

Have a Daily Cadence

  • #standup and #sitdown messages
  • 10am - 3pm ET (working hours) for overlap
  • Ad-hoc 1:1 or small group meetings
  • Github, Trello, GDocs, Flowdock, E-mail, GHangout

Have a Weekly Cadence

  • Mon: “bug day” & “plan day”.
  • Tues: 30-minute meeting kicks off the week.
  • Tues Noon - Fri Noon: uninterrupted flow time.
  • Fri Noon: “demo day”.
  • Fri afternoon: loose ends, hacking, no weekend work.
  • Fri 4:30pm: happy hour!
  • Mon: (recur)

Know Your Company Updates, E-mail Group Threads

Know Your Company

_images/know_your_company.png

Demo Day

_images/demo.png

Happy Hour

_images/happy_hour.png

Plan Monthly

  • Stories and Milestones
  • Chunked into 3-4 weeks each
  • Milestones with deadlines used for deliverables
  • Surgical teams own milestones
  • Individuals own stories
  • Catalysts help plan iterations

Catalysts

“A person that precipitates an event.”

Engineers or designers who have management-as-a-skill.

Management-as-a-role does not exist.

Help, don’t tell. Catalysts help others do their best work; they don’t tell others what to do.

  • organize
  • communicate
  • spot bottlenecks
  • spur action

Optimize for Team Flow

_images/team_robot.png

The Human Factor

Office Pro’s

  • Drive-by mentorship
  • Dev env osmosis
  • Sense of urgency

Note

In vertical teams, “face time” means a pressure to always be “in the office”.

Encourages a 9-to-5 mentality at odds with creative output.

Work-irrelevant personal issues (e.g. hygiene, nervous ticks) are amplified.

Face-to-face meetings are often unproductive in real terms, but can feel productive.

Employees feel unproductive when not in the office; breeds inflexibility.

In horizontal teams, each office location forms a distinct company culture.

Breeds “fiefdom” that is often unaligned with organizational purpose.

Narrow communication channel between offices is treated as second-class.

Real-world artifacts (e.g. whiteboards, hand-written notes, f2f meetings) hidden from other offices.

Encourages “out-of-band” communication.

Distributed Con’s

  • Building camraderie
  • Discussing personal issues
  • Asking for help

Note

Due to human nature, distributed “technopresence” not an emotional substitute for colocated “physical presence”.

Harder to build true camraderie.

Mentorship is less frequent because in offices, this often happens informally and/or serendipitously.

Full-time work-from-home (without adequate social substitutes) can feel isolating despite technopresence.

Writing, as a skill, becomes more important than your job description might suggest.

Counter-intuitively, distributed employees “kid around” a lot less.

Focus on work product fosters an in-the-trenches (tactical) mentality, rather than a blue sky (strategic) one.

Employees don’t “let their guard down” often, as might happen during a work happy hour or a 1:1 “hallway meeting” with a manager.

Collaboration processes will follow the best practices of the open source community, which are admittedly programmer-centric (e.g. Github).

Destin Retreat: 4 people (2011)

_images/retreat_01.jpg

Austin Retreat: 7 people (2011)

_images/retreat_02.jpg

New York Retreat: 11 people (2012)

_images/retreat_03.jpg

Savannah Retreat: 13 people (2013)

_images/retreat_04.jpg

Charleston Retreat: 16 people (2013)

_images/retreat_06.jpg

Montreal Retreat: 24 people (2014)

_images/retreat_07.jpg

Hackathons

_images/retreat_05.jpg

Mixing digital and physical

  • Distributed teams are not “cheaper”, because you need to allocate the money you save on offices to travel.
  • It’s all about communication, collaboration, and cadence.
  • Humanity matters. Have new hires meet their colleagues face-to-face: it always helps.
  • Realize that on-boarding is traditionally a physical process of “office osmosis”; since you don’t have an office, you need managed on-boarding.
  • Turn colleagues into friends through team retreats; they work, they’re productive, and they’re fun!

Conclusion

Work is about the product, not “time in the chair”.

Overcoming n-to-n communication is a challenge, but digital tools can help.

Infrequent meetings and asynchronous communication allow people to focus on their work.

The web is now the office. The physical office is just Yet Another Internet Cafe.

Distributed teams can make great products through radical transparency and human trust.

Interested?

Appendix

Books (1)

_images/book_drive.png

Drive: The Surprising Truth About What Motivates Us

by Daniel H. Pink

Books (2)

_images/book_year_without_pants.jpg

The Year Without Pants: Wordpress and the Future of Work

by Scott Berkun

Books (3)

_images/book_remote.png

Remote: Office Not Required

by Jason Fried