On working in Particular

43
On working in Particular A dispersed company.

Transcript of On working in Particular

Page 1: On working in Particular

On working in Particular

A dispersed company.

Page 2: On working in Particular

Mauro Servienti

Click icon to add picture

Solution Architect @ Particular Software

[email protected]

@mauroservienti

//github.com/mauroservienti

Microsoft MVP Visual C#

Page 3: On working in Particular

Agenda

•Once upon a time…•Dispersed != distributed•No-managers != flat•Communication•Daily tasks•Trust is the key

Page 4: On working in Particular

Conway's laworganizations which design

systems ... are constrained to produce

designs which are copies of the communication structures of

these organizations

Page 5: On working in Particular

What if…

Organizations which designs systems need to be organized as

the systems they design

Page 6: On working in Particular

Once upon a time……in the west (cit.)

Page 7: On working in Particular

Particular Software• In 2010 Udi Dahan decided to create Particular;

• Should he have created a traditional company?• Or given the systems we design, a distributed one

would have fit the bill?

• Distributed means:• Access to the best people from all over the world;• No relocation costs and troubles;• But challenges as well…

Page 8: On working in Particular

What we do…• build NServiceBus and the Particular Platform

• A reliable messaging framework• A set of tools to develop, debug and manage a distributed

environment

• have customers all around the globe• We provide remote services

• provide enterprise level support• Up to 5 hours response time SLA

• Given customers distribution and support constraints having a distributed team is a clear advantage

Page 9: On working in Particular

Dispersed != distributedDistributed is not what we are.

Page 10: On working in Particular

Distributed• People co-located in the same space -> teams• Teams are distributed across:• The country• The continent• The world

• Usually a team works on the same thing• Cross-team communication exists• Intra-team communication is a key aspect

Page 11: On working in Particular

Dispersed• We are all remote: there are no co-located teams• Some of us, such as me, are alone in their country• Some of us live in the same city• Still, work from their home offices alone

• We are spread across ~17 time zones• From California to Australia• There are people that never meet over work hours• We speak a few different languages• We have very different cultural backgrounds• Diversity is a key aspect

Page 12: On working in Particular

Challenges• You are alone at home• People you need to work with:• Are in a different time-zone• Speak a different language• Have a different cultural background

• Your manager may be in a different time-zone• Respecting yourself can be an issue• Work hours• Device notifications• …etc…

Page 13: On working in Particular

No-managers != flatAnarchy is not the best form of democracy.

Page 14: On working in Particular

Management• In a traditional org chart you have one manager;• You have one manager because you have one role;• My day is generally composed of:

• Pre-sales calls• Solution Architecture consultancy (remote and on-site)• Coding• Blog posting• Docs writing• Support• …and more…

• Is it sustainable that one manager can manage me?

Page 15: On working in Particular

Management (take 2)• Managers are interested in results• Results may be influenced by luck or bad luck:• Causing a manager to be sad when shit happens :-)

• Since we are alone in our home offices:• We need to trust people that they’ll do their best• We need to remove luck/bad luck from the judgement

• Managing a dispersed group of people is a mess…

Page 16: On working in Particular

Reboot• We removed all the managers introducing mentors• We removed all the roles introducing disciplines

Page 17: On working in Particular

Disciplines• I can put several different hats• Engineer -> solution discipline• Solution Architect -> domain discipline• Support -> troubleshooting discipline• Etc…

• For each discipline I can have (or can be) a mentor

Page 18: On working in Particular

Mentorship• Mentors are interested in the process• A mentor asks questions doesn’t give answers• Is a friend not a consultant• drives you in the right direction doesn’t judge results

• Anyone can be a mentor if they have strong skills in a discipline

• If the process is done right when results are influenced by bad luck it is not a problem

Page 19: On working in Particular

Do we have a flat org?

no• From the Org Chart POV: all at the same level• Mentors are side-by-side, not someone to report to• We are setting up a feedback process:

• Will kick-off next week

• We are setting up a consultant figure• more on this later

Page 20: On working in Particular

CommunicationAlone but at the same time all together

Page 21: On working in Particular

Smooth communication• Reduce e-mail usage at the minimum:

• A full inbox creates pressure• A mail thread is hidden in the participants inboxes• If an inbox/account is deleted history is lost

• We want async/hassles free communication:• History needs to be preserved• A new member needs to easily catch up• We want scoped and open groups

• Not necessarily private ones

• We need sync communication as well:• An async meeting does not work very well

Page 22: On working in Particular

Async

Page 23: On working in Particular

Slack

Page 24: On working in Particular

Slack• Powerful chat system

• Public channels• Direct messages• Private channels

• Posts with full markdown support• Partial markdown support in chats• Integrates with everything (mainly via WebHooks)

• All Google things• GitHub and many more• Apps for all the devices• Supports custom integrations and bots

Page 25: On working in Particular

Sync

Page 26: On working in Particular

Zoom.us

Page 27: On working in Particular

Zoom.us• All internal meetings are handled via Zoom• Most customers calls are handled via Zoom• Unless the customer prefers its own tools

• It scales to several users with no issues• Screen sharing and white board features• We record nearly every call:• and share via Goggle Drive through Slack

• Time-box and strict agenda!

Page 28: On working in Particular

Daily tasksFrom entropy to order in the universe, tools to rule them all

Page 29: On working in Particular

GitHub

Page 30: On working in Particular

GitHub• If it’s not in GitHub it doesn’t exist• Opening issues is cheap• Issues• transient tasks• used to track something we are working on• They have at least 3 states

• Artifacts (Markdown files)• Persistent documents

• e.g. process descriptions, or definitions, etc..• PRs (Issues) are used to change artifacts

Page 31: On working in Particular

What GitHub is not (yet) good at• There is a one-to-one relationship issue / assignee• Discussions on issues are a mess• As an OSS project with private and public repos:• Backtracking works not that well • Managing public issues and private ones does not work

• Non-dev people get crazy pretty fast• Train them, but the effort is very high

• Lack of overview with multiple repos

Page 32: On working in Particular

Waffle.io on top of GitHub

Disclosure: it is not the real one :-)

Page 33: On working in Particular

Scrum, Kanban, XP…oh my!

Page 34: On working in Particular

Let me recap…

We are dispersed

BUTWe need to work together as a team

Page 35: On working in Particular

What could a team look like?• It’s a group of people• We identified 4 as the magic number (in our context)• 5 can be good as well + avoids impasse when voting

• A team is composed of Pigs (Scrum)• A team can be joined by chickens (Scrum)• Members are not time zone co-location• European + Aussies• Aussies + Americans• Americans + Europeans

Page 36: On working in Particular

Teams work on…• We identified 3 high level concepts

• Processes• Platform Development• Hiring• Support• Etc…

• Issues• That belong to a process• That aim to change a process

• Cross cutting concerns (not necessarily tied to a process)• RabbitMQ know-how• Productivity• Presentation skills• Etc…

Page 37: On working in Particular

But we don’t have teams• A Squad is a team that supervises processes

• Lifecycle: tied to the process• May open issues to handle process changes/updates

• Causing a task force to be created

• A Task force is a team that handles issues• Lifecycle: is the same of the issue• May report back to the squad if they identify friction• May consult with a guild on cross cutting topics

• A Guild is a team that discusses cross cutting concerns• Lifecycle: long lasting• May contact a squad to suggest process improvements

Page 38: On working in Particular

Task Forces• Voluntary formed to handle an issue• Zoom call to triage the issue (~15 minutes)• Create a dedicated channel on Slack• Public but joined only by task force members

• Drive the issue• from backlog to ready• from ready to done

• Ready does not mean that it will be done.

Page 39: On working in Particular

Assumptions• There is the need to prioritize• A different process/squad does that

• Definition of ready and definition of done• Commitment• Who opens the issue is not committed• Working on the readifyng does not imply commitment

• Does a task force play well with GitHub?

Page 40: On working in Particular

“pbot pig me”

By the way: we automate as much as we can

Page 41: On working in Particular

Trust is the keyTo trust or…to command and conquer…this is the question.

Page 42: On working in Particular

We are dispersed• Obviously “control” and “command and conquer”

have no way to provide any value

• We trust ourselves• Unlimited Vacation• Flexible hours• Hardware policy• Conference attendance

Page 43: On working in Particular

Thank you!If you have questions join us at the booth