Background¶
A product¶
A tech stack¶
A team¶
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¶
Developer Locations¶
Spolsky¶
“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)¶
Private Office Floor Plan (2003)¶
New Fog Creek Office (2008)¶
Parse.ly “Office” (2014)¶
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)¶
Use Good Tools (2)¶
Use Good Tools (3)¶
Use Good Tools (4)¶
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¶
Demo Day¶
Happy Hour¶
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¶
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)¶
Austin Retreat: 7 people (2011)¶
New York Retreat: 11 people (2012)¶
Savannah Retreat: 13 people (2013)¶
Charleston Retreat: 16 people (2013)¶
Montreal Retreat: 24 people (2014)¶
Hackathons¶
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.