Democratizing

Project Guidelines

Daniel Li
24 May 2018
Engineering Happy Hour

What is a Project Guideline?

A set of rules that contributors should follow for a project.

It may include:
  • Coding / Style Conventions
  • Git Workflows
  • Project Management Workflows
  • Infrastructure / Deployment Workflows
  • Other Best Practices

Why?

Everyone comes from different backgrounds.
  • Personal Preferences
  • Workflow carried forward from previous company
Inconsistency == Ineffectiveness
  • Inconsistent Code Style -> Harder for others to read your code
  • Inconsistent Git Workflow -> Uncertainty about the status of the project. More merge conflicts.

Give Us Some Examples!

Marketplace for Vacation Homes
Airbnb
Open-source implementation of .NET
Mono

Give Us Some Examples!

Technology Design Studio in London
Elsewhen
Open-source code editor
Atom

Why Make Our Own Guidelines?

If people have made other guidelines. Why not use those?
  • There's no best practices that works for everyone
  • It's hard to get everyone in the team to agree on which guideline to adopt

Why do it democratically?

Team leads can dictate + impose guidelines for others to follow. So why the democracy?
  • Efficiency - in the short run, to adopt a new standard takes time and can slow down development. So we should find a compromise that works well enough for everyone.
  • Morale - allow contributors to argue for their point of view
  • Engagement - Involving contributors into the process increases their engagement
  • ​Better Outcome - discussions are valuable way to learn from others

How to do it democratically?

Git, Issues and Pull Requests

How to do it democratically?

  • To discuss something - raise an issue
  • To change something - create a PR
  • Any discussion / feedback are done on the issue / PR comments
  • After agreement is reached, approve or reject the issue / PR
  • If accepted, the issue / PR is assigned to the person responsible for making the change

Why Git + GitHub?

  • Transparency - the rationale is documented as comments and commit messages, and can be referred to if a similar argument arises again
  • Open + Inclusive - Issues and PRs can be openly-discussed. Everyone can be involved, even if they're working remotely.
  • Encourage Engagement - participation means you can make your own life easier
  • Aggregate Issues - issue tracker allows you to collect issues to dicuss, altogether, in one effective meeting, instead of many ineffective meetings, one for each issue.