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.

Democratizing Project Guidelines

By Daniel Li

Democratizing Project Guidelines

Having a project guideline is important to have consistent, maintainable code. However, agreeing on a guideline and implementing it requires everyone to get on board. In this presentation, I will show you how we, the Conversation Service (CS) team at Nexmo, construct our project guidelines in a democratic manner!

  • 302