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.
